]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - fs.c
Added the proper libPNG DLL name for Win64, by Willis
[xonotic/darkplaces.git] / fs.c
diff --git a/fs.c b/fs.c
index 46172798fe28f0a4f91ab0a677d99e14ad654cc1..0b033104b75ac5cbde2a4b898e5a11a0c4d05fb2 100644 (file)
--- a/fs.c
+++ b/fs.c
@@ -894,7 +894,7 @@ void FS_AddGameHierarchy (const char *dir)
 #endif
 
        // Add the common game directory
-       FS_AddGameDirectory (va("%s/%s/", fs_basedir, dir));
+       FS_AddGameDirectory (va("%s%s/", fs_basedir, dir));
 
 #ifndef WIN32
        // Add the personal game directory
@@ -942,7 +942,7 @@ void FS_Init (void)
 
        fs_mempool = Mem_AllocPool("file management", 0, NULL);
 
-       strcpy(fs_basedir, ".");
+       strcpy(fs_basedir, "");
        strcpy(fs_gamedir, "");
 
 #ifdef MACOSX
@@ -973,6 +973,10 @@ void FS_Init (void)
                        fs_basedir[i-1] = 0;
        }
 
+       // add a path separator to the end of the basedir if it lacks one
+       if (fs_basedir[0] && fs_basedir[strlen(fs_basedir) - 1] != '/' && fs_basedir[strlen(fs_basedir) - 1] != '\\')
+               strlcat(fs_basedir, "/", sizeof(fs_basedir));
+
        // -path <dir or packfile> [<dir or packfile>] ...
        // Fully specifies the exact search path, overriding the generated one
 // COMMANDLINEOPTION: Filesystem: -path <path ..> specifies the full search path manually, overriding the generated one, example: -path c:\quake\id1 c:\quake\pak0.pak c:\quake\pak1.pak (not recommended)
@@ -1428,7 +1432,7 @@ qfile_t* FS_Open (const char* filepath, const char* mode, qboolean quiet, qboole
                char real_path [MAX_OSPATH];
 
                // Open the file on disk directly
-               dpsnprintf (real_path, sizeof (real_path), "%s%s", fs_gamedir, filepath);
+               dpsnprintf (real_path, sizeof (real_path), "%s/%s", fs_gamedir, filepath);
 
                // Create directories up to the file
                FS_CreatePath (real_path);
@@ -1712,18 +1716,17 @@ Print a string into a file
 int FS_VPrintf (qfile_t* file, const char* format, va_list ap)
 {
        int len;
-       fs_offset_t buff_size;
-       char *tempbuff = NULL;
+       fs_offset_t buff_size = MAX_INPUTLINE;
+       char *tempbuff;
 
-       buff_size = 1024;
-       tempbuff = (char *)Mem_Alloc (tempmempool, buff_size);
-       len = dpvsnprintf (tempbuff, buff_size, format, ap);
-       while (len < 0)
+       for (;;)
        {
-               Mem_Free (tempbuff);
-               buff_size *= 2;
                tempbuff = (char *)Mem_Alloc (tempmempool, buff_size);
                len = dpvsnprintf (tempbuff, buff_size, format, ap);
+               if (len >= 0 && len < buff_size)
+                       break;
+               Mem_Free (tempbuff);
+               buff_size *= 2;
        }
 
        len = write (file->handle, tempbuff, len);
@@ -2219,7 +2222,7 @@ int FS_ListDirectory(const char *pattern, int oneperline)
        int linebufpos;
        int i, j, k, l;
        const char *name;
-       char linebuf[4096];
+       char linebuf[MAX_INPUTLINE];
        fssearch_t *search;
        search = FS_Search(pattern, true, true);
        if (!search)