Set ~~ to bundle path for OS X
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 4 Jan 2014 11:18:30 +0000 (12:18 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sat, 4 Jan 2014 11:49:10 +0000 (12:49 +0100)
DATADIR is now #defined in WinBoard as "~~" to make the expansion a no-op
there. For OS X it is redefined as a variable, obtained from GTK-OSX.

args.h
gtk/xboard.c
winboard/winboard.c

diff --git a/args.h b/args.h
index 48371ad..23c166a 100644 (file)
--- a/args.h
+++ b/args.h
@@ -1147,14 +1147,12 @@ ParseArgs(GetFunc get, void *cl)
 
     case ArgString:
     case ArgFilename:
-#ifdef DATADIR
       if(argValue[0] == '~' && argValue[1] == '~') {
         char buf[4*MSG_SIZ]; // expand ~~
-        snprintf(buf, 4*MSG_SIZ, DATADIR "%s", argValue+2);
+        snprintf(buf, 4*MSG_SIZ, "%s%s", DATADIR, argValue+2);
         ASSIGN(*(char **) ad->argLoc, buf);
         break;
       }
-#endif
       ASSIGN(*(char **) ad->argLoc, argValue);
       break;
 
index 442b936..0546a3a 100644 (file)
@@ -169,14 +169,17 @@ extern char *getenv();
 
 #ifdef OSX
 #  include "gtkmacintegration/gtkosxapplication.h"
-   // prevent pathname of positional file argument provided by OSx being be mistaken for option name
+   // prevent pathname of positional file argument provided by OS X being be mistaken for option name
    // (price is that we won't recognize Windows option format anymore).
 #  define SLASH '-'
    // redefine some defaults
 #  undef ICS_LOGON
 #  undef SYSCONFDIR
+#  undef DATADIR
 #  define ICS_LOGON "Library/Preferences/XboardICS.conf"
 #  define SYSCONFDIR "../etc"
+#  define DATADIR dataDir
+   char *dataDir; // for expanding ~~
 #else
 #  define SLASH '/'
 #endif
@@ -773,6 +776,7 @@ main (int argc, char **argv)
 #ifdef OSX
     {   // prepare to catch OX OpenFile signal, which will tell us the clicked file
        GtkosxApplication *theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
+       dataDir = gtkosx_application_get_bundle_path();
        g_signal_connect(theApp, "NSApplicationOpenFile", G_CALLBACK(StartNewXBoard), NULL);
        // we must call application ready before we can get the signal,
        // and supply a (dummy) menu bar before that, to avoid problems with dual apples in it
index 60d92db..917a532 100644 (file)
@@ -93,6 +93,7 @@
 #include "wsnap.h"\r
 \r
 #define SLASH '/'\r
+#define DATADIR "~~"\r
 \r
 //void InitEngineUCI( const char * iniDir, ChessProgramState * cps );\r
 \r
@@ -7673,6 +7674,7 @@ DoWriteFile(HANDLE hFile, char *buf, int count, DWORD *outCount,
       else\r
        err = GetLastError();\r
     }\r
+\r
   }\r
   return err;\r
 }\r