shithub: riscv

Download patch

ref: b86a12149ade500326a238753c31b6e0178d3b5b
parent: 25396d3ffdebe800b373d96515a0a109b8c47a44
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Thu Jul 30 16:30:47 EDT 2015

games/doom: fix config file never being loaded or saved (thanks qu7uux)

basedefault[], the default path to the config file, is never set and remains
blank, unless -config %s is used (cd d_main.c). when games/doom attempts to
open the file, it silently fails and no config file is ever read or written.
this patch sets basedefault to a file in whatever directory a valid wad is
found in I_IdentifyWAD().

--- a/sys/src/games/doom/d_main.c
+++ b/sys/src/games/doom/d_main.c
@@ -563,7 +563,7 @@
 //
 void IdentifyVersion (void)
 {
-	char *wadfile;
+	char *wadfile, *slash;
 
 	if (M_CheckParm ("-shdev"))
 	{
@@ -615,35 +615,35 @@
 		language = french;
 		printf("French version\n");
 		D_AddFile (wadfile);
-		return;
 	} else if ( (wadfile = I_IdentifyWAD("doom2.wad")) ) {
 		gamemode = commercial;
 		D_AddFile (wadfile);
-		return;
 	} else if ( (wadfile = I_IdentifyWAD("plutonia.wad")) ) {
 		gamemode = commercial;
 		D_AddFile (wadfile);
-		return;
 	} else if ( (wadfile = I_IdentifyWAD("tnt.wad")) ) {
 		gamemode = commercial;
 		D_AddFile (wadfile);
-		return;
 	} else if ( (wadfile = I_IdentifyWAD("doomu.wad")) ) {
 		gamemode = retail;
 		D_AddFile (wadfile);
-		return;
 	} else if ( (wadfile = I_IdentifyWAD("doom.wad")) ) {
 		gamemode = registered;
 		D_AddFile (wadfile);
-		return;
 	} else if ( (wadfile = I_IdentifyWAD("doom1.wad")) ) {
 		gamemode = shareware;
 		D_AddFile (wadfile);
-		return;
 	} else {
 		printf("Game mode indeterminate.\n");
 		gamemode = indetermined;
+		return;
 	}
+	strncpy(basedefault, wadfile, sizeof(basedefault)-5);
+	basedefault[sizeof(basedefault)-5] = '\0';
+	slash = strrchr(basedefault, '/');
+	if (slash++ == 0)
+		slash = basedefault;
+	strcpy(slash, "cfg");
 }
 
 //
--- a/sys/src/games/doom/m_misc.c
+++ b/sys/src/games/doom/m_misc.c
@@ -300,13 +300,11 @@
     // check for a custom default file
     i = M_CheckParm ("-config");
     if (i && i<myargc-1)
-    {
 	defaultfile = myargv[i+1];
-	printf ("	default file: %s\n",defaultfile);
-    }
     else
 	defaultfile = basedefault;
-    
+    printf (" default file: %s\n",defaultfile);
+
     // read the file in, overriding any set defaults
     f = fopen (defaultfile, "r");
     if (f)
--