static char *CheckDirectoryHasIWAD(char *dir, char *iwadname) { char *filename; // As a special case, the "directory" may refer directly to an // IWAD file if the path comes from DOOMWADDIR or DOOMWADPATH. if (DirIsFile(dir, iwadname) && M_FileExists(dir)) { return strdup(dir); } // Construct the full path to the IWAD if it is located in // this directory, and check if it exists. filename = malloc(strlen(dir) + strlen(iwadname) + 3); if (!strcmp(dir, ".")) { strcpy(filename, iwadname); } else { sprintf(filename, "%s%c%s", dir, DIR_SEPARATOR, iwadname); } if (M_FileExists(filename)) { return filename; } free(filename); return NULL; }
static char *CheckDirectoryHasIWAD(char *dir, char *iwadname) { char *filename; // As a special case, the "directory" may refer directly to an // IWAD file if the path comes from DOOMWADDIR or DOOMWADPATH. if (DirIsFile(dir, iwadname) && M_FileExists(dir)) { return M_StringDuplicate(dir); } // Construct the full path to the IWAD if it is located in // this directory, and check if it exists. if (!strcmp(dir, ".")) { filename = M_StringDuplicate(iwadname); } else { filename = M_StringJoin(dir, DIR_SEPARATOR_S, iwadname, NULL); } if (M_FileExists(filename)) { return filename; } free(filename); return NULL; }
char *D_FindWADByName(char *name) { char *path; char *probe; int i; // Absolute path? probe = M_FileCaseExists(name); if (probe != NULL) { return probe; } BuildIWADDirList(); // Search through all IWAD paths for a file with the given name. for (i=0; i<num_iwad_dirs; ++i) { // As a special case, if this is in DOOMWADDIR or DOOMWADPATH, // the "directory" may actually refer directly to an IWAD // file. probe = M_FileCaseExists(iwad_dirs[i]); if (DirIsFile(iwad_dirs[i], name) && probe != NULL) { return probe; } // Construct a string for the full path path = M_StringJoin(iwad_dirs[i], DIR_SEPARATOR_S, name, NULL); probe = M_FileCaseExists(path); if (probe != NULL) { return probe; } free(path); } // File not found return NULL; }
char *D_FindWADByName(char *name) { char *buf; int i; // Absolute path? if (M_FileExists(name)) { return name; } BuildIWADDirList(); // Search through all IWAD paths for a file with the given name. for (i=0; i<num_iwad_dirs; ++i) { // As a special case, if this is in DOOMWADDIR or DOOMWADPATH, // the "directory" may actually refer directly to an IWAD // file. if (DirIsFile(iwad_dirs[i], name) && M_FileExists(iwad_dirs[i])) { return strdup(iwad_dirs[i]); } // Construct a string for the full path buf = malloc(strlen(iwad_dirs[i]) + strlen(name) + 5); sprintf(buf, "%s%c%s", iwad_dirs[i], DIR_SEPARATOR, name); if (M_FileExists(buf)) { return buf; } free(buf); } // File not found return NULL; }