From 9871dde72ae6a08bc02d30344488985704a73941 Mon Sep 17 00:00:00 2001
From: Martin Taibr <taibr.martin@gmail.com>
Date: Mon, 14 Jan 2019 00:18:15 +0100
Subject: [PATCH] only show warnings for current map in GAMEQC

---
 qcsrc/common/mapinfo.qc | 67 +++++++++++++++++++++++++----------------
 1 file changed, 41 insertions(+), 26 deletions(-)

diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc
index 68c548aae..8c381fb60 100644
--- a/qcsrc/common/mapinfo.qc
+++ b/qcsrc/common/mapinfo.qc
@@ -10,6 +10,11 @@
 #endif
 
 bool autocvar_g_mapinfo_ignore_warnings;
+#ifdef MENUQC
+#define WARN_COND !autocvar_g_mapinfo_ignore_warnings
+#else
+#define WARN_COND (!autocvar_g_mapinfo_ignore_warnings && MapInfo_Map_bspname == mi_shortname)
+#endif
 
 // generic string stuff
 
@@ -528,7 +533,7 @@ void _MapInfo_Map_ApplyGametypeEx(string s, Gametype pWantedType, Gametype pThis
 		if (sa == "") continue;
 		int p = strstrofs(sa, "=", 0);
 		if (p < 0) {
-			if(!autocvar_g_mapinfo_ignore_warnings)
+			if(WARN_COND)
 				LOG_WARNF("Invalid gametype setting in mapinfo for gametype %s: %s", MapInfo_Type_ToString(pWantedType), sa);
 			continue;
 		}
@@ -568,7 +573,7 @@ void _MapInfo_Map_ApplyGametypeEx(string s, Gametype pWantedType, Gametype pThis
 			}
 		}
 		FOREACH(Gametypes, true, handled |= it.m_parse_mapinfo(k, v));
-		if (!handled && !autocvar_g_mapinfo_ignore_warnings)
+		if (!handled && WARN_COND)
             LOG_WARNF("Invalid gametype setting in mapinfo for gametype %s: %s", MapInfo_Type_ToString(pWantedType), sa);
 	}
 
@@ -589,7 +594,7 @@ Gametype MapInfo_Type_FromString(string t)
 #define deprecate(from, to) MACRO_BEGIN { \
 	if (t == #from) { \
 		string replacement = #to; \
-		if(!autocvar_g_mapinfo_ignore_warnings) \
+		if(WARN_COND) \
 			LOG_WARNF("MapInfo_Type_FromString (probably %s): using deprecated name '%s'. Should use '%s'.", MapInfo_Map_bspname, t, replacement); \
 		t = replacement; \
 	} \
@@ -660,7 +665,8 @@ void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s,
 		{
 			fh = fopen(s, FILE_READ);
 			if(fh < 0)
-				LOG_WARN("Map ", pFilename, " references not existing config file ", s);
+				if(WARN_COND)
+					LOG_WARN("Map ", pFilename, " references not existing config file ", s);
 			else
 			{
 				for (;;)
@@ -688,19 +694,22 @@ void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s,
 				fclose(fh);
 			}
 		}
-		else
+		else if(WARN_COND)
 			LOG_WARN("Map ", pFilename, " uses too many levels of inclusion");
 	}
-	else if(t == "")
-		LOG_WARN("Map ", pFilename, " contains a potentially harmful setting, ignored");
-	else if (!cvar_value_issafe(t))
-		LOG_WARN("Map ", pFilename, " contains a potentially harmful setting, ignored");
-	else if (!cvar_value_issafe(s))
-		LOG_WARN("Map ", pFilename, " contains a potentially harmful setting, ignored");
-	else if(matchacl(MAPINFO_SETTEMP_ACL_SYSTEM, t) <= 0)
-		LOG_WARN("Map ", pFilename, " contains a potentially harmful setting, ignored");
+	else if(t == ""
+		|| !cvar_value_issafe(t)
+		|| !cvar_value_issafe(s)
+		|| matchacl(MAPINFO_SETTEMP_ACL_SYSTEM, t) <= 0)
+	{
+		if (WARN_COND)
+			LOG_WARN("Map ", pFilename, " contains a potentially harmful setting, ignored");
+	}
 	else if(matchacl(acl, t) <= 0)
-		LOG_WARN("Map ", pFilename, " contains a denied setting, ignored");
+	{
+		if (WARN_COND)
+			LOG_WARN("Map ", pFilename, " contains a denied setting, ignored");
+	}
 	else
 	{
 		if(type == 0) // server set
@@ -850,7 +859,7 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 				error("... but I just wrote it!");
 		}
 
-		if(!autocvar_g_mapinfo_ignore_warnings)
+		if(WARN_COND)
 			LOG_WARN("autogenerated mapinfo file ", fn, " has been loaded; please edit that file and move it to maps/", pFilename, ".mapinfo");
 	}
 
@@ -889,7 +898,7 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 			else if(t == "vehicles") MapInfo_Map_supportedFeatures |= MAPINFO_FEATURE_VEHICLES;
 			else if(t == "monsters") MapInfo_Map_supportedFeatures |= MAPINFO_FEATURE_MONSTERS;
 			else if(t == "new_toys") MapInfo_Map_supportedFeatures |= MAPINFO_FEATURE_WEAPONS;
-			else
+			else if(WARN_COND)
 				LOG_WARN("Map ", pFilename, " supports unknown feature ", t, ", ignored");
 		}
 		else if(t == "hidden")
@@ -917,11 +926,11 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 		{
 			t = car(s); s = cdr(s);
 			Gametype f = MapInfo_Type_FromString(t);
-			//if(!autocvar_g_mapinfo_ignore_warnings)
+			//if(WARN_COND)
 				//LOG_WARN("Map ", pFilename, " contains the legacy 'type' keyword which is deprecated and will be removed in the future. Please migrate the mapinfo file to 'gametype'.");
 			if(f)
 				_MapInfo_Map_ApplyGametype (s, pGametypeToSet, f, true);
-			else if(!autocvar_g_mapinfo_ignore_warnings)
+			else if(WARN_COND)
 				LOG_DEBUG("Map ", pFilename, " supports unknown game type ", t, ", ignored");
 		}
 		else if(t == "gametype")
@@ -930,7 +939,7 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 			Gametype f = MapInfo_Type_FromString(t);
 			if(f)
 				_MapInfo_Map_ApplyGametypeEx (s, pGametypeToSet, f);
-			else if(!autocvar_g_mapinfo_ignore_warnings)
+			else if(WARN_COND)
 				LOG_DEBUG("Map ", pFilename, " supports unknown game type ", t, ", ignored");
 		}
 		else if(t == "size")
@@ -942,16 +951,19 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 			t = car(s); s = cdr(s); d = stof(t);
 			t = car(s); s = cdr(s); e = stof(t);
 			if(s == "")
-				LOG_WARN("Map ", pFilename, " contains an incorrect size line (not enough params), syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z");
+				if(WARN_COND)
+					LOG_WARN("Map ", pFilename, " contains an incorrect size line (not enough params), syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z");
 			else
 			{
 				t = car(s); s = cdr(s); f = stof(t);
 				if(s != "")
-					LOG_WARN("Map ", pFilename, " contains an incorrect size line (too many params), syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z");
+					if(WARN_COND)
+						LOG_WARN("Map ", pFilename, " contains an incorrect size line (too many params), syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z");
 				else
 				{
 					if(a >= d || b >= e || c >= f)
-						LOG_WARN("Map ", pFilename, " contains an incorrect size line, mins have to be < maxs");
+						if(WARN_COND)
+							LOG_WARN("Map ", pFilename, " contains an incorrect size line, mins have to be < maxs");
 					else
 					{
 						MapInfo_Map_mins.x = a;
@@ -1001,7 +1013,8 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 		else if(t == "fog")
 		{
 			if (!cvar_value_issafe(s))
-				LOG_WARN("Map ", pFilename, " contains a potentially harmful fog setting, ignored");
+				if(WARN_COND)
+					LOG_WARN("Map ", pFilename, " contains a potentially harmful fog setting, ignored");
 			else
 				MapInfo_Map_fog = s;
 		}
@@ -1017,14 +1030,15 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 			if(pGametypeToSet)
 			{
 				if (!cvar_value_issafe(t))
-					LOG_WARN("Map ", pFilename, " contains a potentially harmful cdtrack, ignored");
+					if(WARN_COND)
+						LOG_WARN("Map ", pFilename, " contains a potentially harmful cdtrack, ignored");
 				else
 					MapInfo_Map_clientstuff = strcat(
 						MapInfo_Map_clientstuff, "cd loop \"", t, "\"\n"
 					);
 			}
 		}
-		else if(!autocvar_g_mapinfo_ignore_warnings)
+		else if(WARN_COND)
 			LOG_WARN("Map ", pFilename, " provides unknown info item ", t, ", ignored");
 	}
 	fclose(fh);
@@ -1039,7 +1053,8 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
 	MapInfo_Cache_Store();
 	if(MapInfo_Map_supportedGametypes != 0)
 		return r;
-	LOG_WARN("Map ", pFilename, " supports no game types, ignored");
+	if (WARN_COND)
+		LOG_WARN("Map ", pFilename, " supports no game types, ignored");
 	return 0;
 }
 int MapInfo_Get_ByName(string pFilename, float pAllowGenerate, Gametype pGametypeToSet)
-- 
2.39.5