diff --git a/Quake/host_cmd.c b/Quake/host_cmd.c index fad4bf81..93512eb0 100644 --- a/Quake/host_cmd.c +++ b/Quake/host_cmd.c @@ -230,6 +230,7 @@ void Modlist_Init (void) { WIN32_FIND_DATA fdat, mod_fdat; HANDLE fhnd, mod_fhnd; + DWORD attribs; char dir_string[MAX_OSPATH], mod_string[MAX_OSPATH]; q_snprintf (dir_string, sizeof(dir_string), "%s/*", com_basedir); @@ -239,9 +240,17 @@ void Modlist_Init (void) do { - if (!strcmp(fdat.cFileName, ".")) + if (!strcmp(fdat.cFileName, ".") || !strcmp(fdat.cFileName, "..")) continue; - +#if 1 + // treat all subdirectories as mods + q_snprintf (mod_string, sizeof(mod_string), "%s/%s", com_basedir, fdat.cFileName); + attribs = GetFileAttributes (mod_string); + if (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY)) + { + Modlist_Add(fdat.cFileName); + } +#else q_snprintf (mod_string, sizeof(mod_string), "%s/%s/progs.dat", com_basedir, fdat.cFileName); mod_fhnd = FindFirstFile(mod_string, &mod_fdat); if (mod_fhnd != INVALID_HANDLE_VALUE) { @@ -256,6 +265,7 @@ void Modlist_Init (void) Modlist_Add(fdat.cFileName); } } +#endif } while (FindNextFile(fhnd, &fdat)); FindClose(fhnd); @@ -276,10 +286,13 @@ void Modlist_Init (void) { if (!strcmp(dir_t->d_name, ".") || !strcmp(dir_t->d_name, "..")) continue; + if (!q_strcasecmp (COM_FileGetExtension (dir_t->d_name), "app")) // skip .app bundles on macOS + continue; q_snprintf(mod_string, sizeof(mod_string), "%s%s/", dir_string, dir_t->d_name); mod_dir_p = opendir(mod_string); if (mod_dir_p == NULL) continue; +#if 0 // find progs.dat and pak file(s) while ((mod_dir_t = readdir(mod_dir_p)) != NULL) { @@ -292,6 +305,10 @@ void Modlist_Init (void) break; } } +#else + // don't bother testing for pak files / progs.dat + Modlist_Add(dir_t->d_name); +#endif closedir(mod_dir_p); }