automatically test ini file extension for files from commandline option @filename
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 10 Jun 2009 04:02:51 +0000 (21:02 -0700)
committerArun Persaud <arun@nubati.net>
Wed, 10 Jun 2009 04:02:51 +0000 (21:02 -0700)
The winboard.c is a patch that automatically tries indirection files on the
command line (@filename type arguments) also with an extension .ini if the name itself
did not match any existing file and contained no period. This saves the user typing the
.ini all the time (which I started to find pretty annoying while working on the installer
package).

backend.c
winboard/winboard.c

index 0e36ec2..b2dad3b 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -12401,8 +12401,9 @@ ParseOption(Option *opt, ChessProgramState *cps)
        } else return FALSE;\r
        *p = 0; // terminate option name\r
        // now look if the command-line options define a setting for this engine option.\r
-       p = strstr(cps->optionSettings, opt->name);\r
-       if(p == cps->optionSettings || p[-1] == ',') {\r
+       if(cps->optionSettings && cps->optionSettings[0])\r
+           p = strstr(cps->optionSettings, opt->name); else p = NULL;\r
+       if(p && (p == cps->optionSettings || p[-1] == ',')) {\r
                sprintf(buf, "option %s", p);\r
                if(p = strstr(buf, ",")) *p = 0;\r
                strcat(buf, "\n");\r
index bdfc1f3..f4e6c0d 100644 (file)
@@ -495,6 +495,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
   if (!InitInstance(hInstance, nCmdShow, lpCmdLine)) {\r
     return (FALSE);\r
   }\r
+\r
 //  InitCommonControlsEx(&ex);\r
   InitCommonControls();\r
 \r
@@ -1428,8 +1429,14 @@ ParseSettingsFile(char *name, char fullname[MSG_SIZ])
 {\r
   char *dummy;\r
   FILE *f;\r
+  int ok; char buf[MSG_SIZ];\r
 \r
-  if (SearchPath(installDir, name, NULL, MSG_SIZ, fullname, &dummy)) {\r
+  ok = SearchPath(installDir, name, NULL, MSG_SIZ, fullname, &dummy);\r
+  if(!ok && strchr(name, '.') == NULL) { // [HGM] append default file-name extension '.ini' when needed\r
+    sprintf(buf, "%s.ini", name);\r
+    ok = SearchPath(installDir, buf, NULL, MSG_SIZ, fullname, &dummy);\r
+  }\r
+  if (ok) {\r
     f = fopen(fullname, "r");\r
     if (f != NULL) {\r
       ParseArgs(FileGet, f);\r