+string _MapInfo_CheckArenaFile(string pFilename, string pMapname)
+{
+ // returns the file name if valid, otherwise returns ""
+ // a string is returned to optimise the use cases where a filename is also returned
+ int fh = fopen(pFilename, FILE_READ);
+ if(fh < 0)
+ return "";
+ for(string s; (s = fgets(fh)); )
+ {
+ s = strreplace("\t", "", s);
+ if(s == "")
+ continue;
+ while(substring(s, 0, 1) == " ")
+ s = substring(s, 1, -1);
+ if(substring(s, 0, 2) == "//")
+ continue;
+ int offset = strstrofs(s, "map", 0);
+ if(offset >= 0)
+ {
+ if(strstrofs(strtolower(s), strcat("\"", strtolower(pMapname), "\""), offset) >= 0) // quake 3 is case insensitive
+ {
+ fclose(fh);
+ return pFilename; // FOUND IT!
+ }
+ }
+ }
+ fclose(fh);
+ return ""; // file did not contain a "map" field matching our map name
+}
+