Allow any %ENVIRONMENTVAR% in WB settings file name rather than ~
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 28 Mar 2010 10:32:07 +0000 (12:32 +0200)
committerArun Persaud <arun@nubati.net>
Sun, 28 Mar 2010 18:31:09 +0000 (11:31 -0700)
Only a single variable at the beginning of the file name is recognized,
and the matching is not fool proof (it matches across backslashes).

winboard/winboard.c

index 509ba76..87eb9eb 100644 (file)
@@ -1222,13 +1222,12 @@ PrintCommPortSettings(FILE *f, char *name)
 int\r
 MySearchPath(char *installDir, char *name, char *fullname)\r
 {\r
-  char *dummy;\r
-  if(name[0] == '~' && name[1] == '\\') { // [HGM] recognize ~ as HOMEPATH environment variable\r
-    installDir = getenv("HOMEPATH");\r
-    name += 2;\r
-    strcpy(fullname, installDir);\r
-    strcat(fullname, "\\");\r
-    strcat(fullname, name);\r
+  char *dummy, buf[MSG_SIZ];\r
+  if(name[0] == '%' && strchr(name+1, '%')) { // [HGM] recognize %*% as environment variable\r
+    strcpy(buf, name+1);\r
+    *strchr(buf, '%') = 0;\r
+    installDir = getenv(buf);\r
+    sprintf(fullname, "%s\\%s", installDir, strchr(name+1, '%')+1);\r
     return strlen(fullname);\r
   }\r
   return (int) SearchPath(installDir, name, NULL, MSG_SIZ, fullname, &dummy);\r