From f0006cd0a2363d408423a36df8d66d7c183130c5 Mon Sep 17 00:00:00 2001 From: black Date: Thu, 14 Feb 2008 20:57:01 +0000 Subject: [PATCH] Fix it.. nah I'm just reverting :D git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8094 d7cf8633-e32d-0410-b094-e92efae38249 --- filematch.c | 14 ++++++-------- fs.c | 18 ++++++++++-------- menu.c | 9 +-------- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/filematch.c b/filematch.c index bb5a942d..2a22cb0f 100644 --- a/filematch.c +++ b/filematch.c @@ -119,13 +119,11 @@ void stringlistsort(stringlist_t *list) } // operating system specific code -static void adddirentry( stringlist_t *list, const char *path, const char *name ) +static void adddirentry(stringlist_t *list, const char *name) { if (strcmp(name, ".") && strcmp(name, "..")) { - char fullpath[MAX_OSPATH]; - dpsnprintf (fullpath, sizeof (fullpath), "%s%s", path, name); - stringlistappend(list, fullpath); + stringlistappend(list, name); } } #ifdef WIN32 @@ -136,14 +134,14 @@ void listdirectory(stringlist_t *list, const char *path) char pattern[4096], *c; struct _finddata_t n_file; long hFile; - strlcpy (pattern, *path ? path : "./", sizeof (pattern)); + strlcpy (pattern, path, sizeof (pattern)); strlcat (pattern, "*", sizeof (pattern)); // ask for the directory listing handle hFile = _findfirst(pattern, &n_file); if(hFile == -1) return; do { - adddirentry(list, path, n_file.name ); + adddirentry(list, n_file.name ); } while (_findnext(hFile, &n_file) == 0); _findclose(hFile); @@ -159,11 +157,11 @@ void listdirectory(stringlist_t *list, const char *path) { DIR *dir; struct dirent *ent; - dir = opendir( *path ? path : "./" ); + dir = opendir(path); if (!dir) return; while ((ent = readdir(dir))) - adddirentry(list, path, ent->d_name); + adddirentry(list, ent->d_name); closedir(dir); } #endif diff --git a/fs.c b/fs.c index 648b7860..eee8a47d 100644 --- a/fs.c +++ b/fs.c @@ -960,6 +960,7 @@ void FS_AddGameDirectory (const char *dir) int i; stringlist_t list; searchpath_t *search; + char pakfile[MAX_OSPATH]; strlcpy (fs_gamedir, dir, sizeof (fs_gamedir)); @@ -972,7 +973,8 @@ void FS_AddGameDirectory (const char *dir) { if (!strcasecmp(FS_FileExtension(list.strings[i]), "pak")) { - FS_AddPack_Fullpath(list.strings[i], NULL, false); + dpsnprintf (pakfile, sizeof (pakfile), "%s%s", dir, list.strings[i]); + FS_AddPack_Fullpath(pakfile, NULL, false); } } @@ -981,7 +983,8 @@ void FS_AddGameDirectory (const char *dir) { if (!strcasecmp(FS_FileExtension(list.strings[i]), "pk3")) { - FS_AddPack_Fullpath(list.strings[i], NULL, false); + dpsnprintf (pakfile, sizeof (pakfile), "%s%s", dir, list.strings[i]); + FS_AddPack_Fullpath(pakfile, NULL, false); } } @@ -2596,24 +2599,23 @@ fssearch_t *FS_Search(const char *pattern, int caseinsensitive, int quiet) } else { - int searchpathlen = strlen( searchpath->filename ); // get a directory listing and look at each name dpsnprintf(netpath, sizeof (netpath), "%s%s", searchpath->filename, basepath); stringlistinit(&dirlist); listdirectory(&dirlist, netpath); for (dirlistindex = 0;dirlistindex < dirlist.numstrings;dirlistindex++) { - const char *direntry = dirlist.strings[dirlistindex]; - if (matchpattern(direntry + searchpathlen, (char *)pattern, true)) + dpsnprintf(temp, sizeof(temp), "%s%s", basepath, dirlist.strings[dirlistindex]); + if (matchpattern(temp, (char *)pattern, true)) { for (resultlistindex = 0;resultlistindex < resultlist.numstrings;resultlistindex++) - if (!strcmp(resultlist.strings[resultlistindex], direntry)) + if (!strcmp(resultlist.strings[resultlistindex], temp)) break; if (resultlistindex == resultlist.numstrings) { - stringlistappend(&resultlist, direntry); + stringlistappend(&resultlist, temp); if (!quiet && developer_loading.integer) - Con_Printf("SearchDirFile: %s\n", direntry); + Con_Printf("SearchDirFile: %s\n", temp); } } } diff --git a/menu.c b/menu.c index 5ba0fe60..afae9ad2 100644 --- a/menu.c +++ b/menu.c @@ -4466,19 +4466,12 @@ void ModList_RebuildList(void) { int i,j; stringlist_t list; - int basedirlength; stringlistinit(&list); if (fs_basedir[0]) - { listdirectory(&list, fs_basedir); - basedirlength = strlen( fs_basedir ); - } else - { listdirectory(&list, "./"); - basedirlength = 2; - } stringlistsort(&list); modlist_count = 0; modlist_numenabled = fs_numgamedirs; @@ -4493,7 +4486,7 @@ void ModList_RebuildList(void) if (FS_CheckNastyPath (list.strings[i], true)) continue; if (!FS_CheckGameDir(list.strings[i])) continue; - strlcpy (modlist[modlist_count].dir, list.strings[i] + basedirlength, sizeof(modlist[modlist_count].dir)); + strlcpy (modlist[modlist_count].dir, list.strings[i], sizeof(modlist[modlist_count].dir)); //check currently loaded mods modlist[modlist_count].loaded = false; if (fs_numgamedirs) -- 2.39.2