]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - menu.c
now supports Mac and Windows newlines everywhere
[xonotic/darkplaces.git] / menu.c
diff --git a/menu.c b/menu.c
index 9111bd36c385ef64ab854297e08ec1e8ce3b845d..f4f66b27d60ac53febe9179c9f15dbd7f1a31052 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -712,9 +712,10 @@ int                loadable[MAX_SAVEGAMES];
 
 void M_ScanSaves (void)
 {
-       int             i, j;
+       int             i, j, len;
        char    name[MAX_OSPATH];
-       char    *str;
+       char    buf[SAVEGAME_COMMENT_LENGTH + 256];
+       const char *t;
        qfile_t *f;
        int             version;
 
@@ -723,13 +724,19 @@ void M_ScanSaves (void)
                strcpy (m_filenames[i], "--- UNUSED SLOT ---");
                loadable[i] = false;
                sprintf (name, "s%i.sav", i);
-               f = FS_Open (name, "r", false);
+               f = FS_Open (name, "rb", false);
                if (!f)
                        continue;
-               str = FS_Getline (f);
-               sscanf (str, "%i\n", &version);
-               str = FS_Getline (f);
-               strlcpy (m_filenames[i], str, sizeof (m_filenames[i]));
+               // read enough to get the comment
+               len = FS_Read(f, buf, sizeof(buf) - 1);
+               buf[sizeof(buf) - 1] = 0;
+               t = buf;
+               // version
+               COM_ParseToken(&t, false);
+               version = atoi(com_token);
+               // description
+               COM_ParseToken(&t, false);
+               strlcpy (m_filenames[i], com_token, sizeof (m_filenames[i]));
 
        // change _ back to space
                for (j=0 ; j<SAVEGAME_COMMENT_LENGTH ; j++)
@@ -1673,7 +1680,7 @@ void M_Menu_Options_Graphics_AdjustSliders (int dir)
 {
        int optnum;
        S_LocalSound ("sound/misc/menu3.wav");
+
        optnum = 0;
 
                 if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_gloss,                                                  bound(0, r_shadow_gloss.integer + dir, 2));
@@ -4174,6 +4181,8 @@ void M_Shutdown(void)
 {
        // reset key_dest
        key_dest = key_game;
+
+       Mem_FreePool (&menu_mempool);
 }
 
 void M_Restart(void)
@@ -4416,6 +4425,6 @@ void MR_Init(void)
 // COMMANDLINEOPTION: Client: -useqmenu causes the first time you open the menu to use the quake menu, then reverts to menu.dat (if forceqmenu is 0)
        if(COM_CheckParm("-useqmenu"))
                MR_SetRouting (TRUE);
-       else 
+       else
                MR_SetRouting (FALSE);
 }