Implement -autoInstall option
[xboard.git] / args.h
diff --git a/args.h b/args.h
index 19324d7..9ce2b47 100644 (file)
--- a/args.h
+++ b/args.h
@@ -609,6 +609,7 @@ ArgDescriptor argDescriptors[] = {
   { "border", ArgFilename, (void *) &appData.border, TRUE, (ArgIniType) "" },
   { "finger", ArgFilename, (void *) &appData.finger, FALSE, (ArgIniType) "" },
   { "inscriptions", ArgString, (void *) &appData.inscriptions, XBOARD, (ArgIniType) "" },
+  { "autoInstall", ArgString, (void *) &appData.autoInstall, XBOARD, (ArgIniType) "" },
 
   // [HGM] tournament options
   { "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" },
@@ -1120,13 +1121,13 @@ ParseArgs(GetFunc get, void *cl)
     if(posflag) { // positional argument: the argName was implied, and per default set as -lgf
       int len = strlen(argValue) - 4; // start of filename extension
       if(len < 0) len = 0;
-      if(!strcasecmp(argValue + len, ".trn")) {
+      if(!StrCaseCmp(argValue + len, ".trn")) {
         ad = &argDescriptors[2]; // correct implied type to -tf
         appData.tourney = TRUE; // let it parse -tourneyOptions later
-      } else if(!strcasecmp(argValue + len, ".fen") || !strcasecmp(argValue + len, ".epd")) {
+      } else if(!StrCaseCmp(argValue + len, ".fen") || !StrCaseCmp(argValue + len, ".epd")) {
         ad = &argDescriptors[1]; // correct implied type to -lpf
         appData.viewer = TRUE;
-      } else if(!strcasecmp(argValue + len, ".ini") || !strcasecmp(argValue + len, ".xop")) {
+      } else if(!StrCaseCmp(argValue + len, ".ini") || !StrCaseCmp(argValue + len, ".xop")) {
         ad = &argDescriptors[0]; // correct implied type to -opt
       } else if(GetEngineLine(argValue, 11)) {
         ad = &argDescriptors[3]; // correct implied type to -is
@@ -1611,10 +1612,17 @@ SaveSettings(char* name)
       break;
     case ArgFilename:
       if(*(char**)ad->argLoc == NULL) break; // just in case
-      if (strchr(*(char **)ad->argLoc, '\"')) {
-       fprintf(f, OPTCHAR "%s" SEPCHAR "'%s'\n", ad->argName, *(char **)ad->argLoc);
-      } else {
-       fprintf(f, OPTCHAR "%s" SEPCHAR "\"%s\"\n", ad->argName, *(char **)ad->argLoc);
+      { char buf[MSG_SIZ];
+        snprintf(buf, MSG_SIZ, "%s", *(char**)ad->argLoc);
+#ifdef __APPLE__
+        if(strstr(buf, DATADIR) == buf)
+          snprintf(buf, MSG_SIZ, "~~%s", *(char**)ad->argLoc + strlen(DATADIR));
+#endif
+        if (strchr(buf, '\"')) {
+          fprintf(f, OPTCHAR "%s" SEPCHAR "'%s'\n", ad->argName, buf);
+        } else {
+          fprintf(f, OPTCHAR "%s" SEPCHAR "\"%s\"\n", ad->argName, buf);
+        }
       }
       break;
     case ArgBoardSize: