From: H.G. Muller Date: Sat, 4 Jan 2014 11:18:30 +0000 (+0100) Subject: Expand ~~/ to bundle path (OSX) X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=686059ae9cb5a33576ae0e91ddf88b14c90c9218 Expand ~~/ to bundle path (OSX) DATADIR is #defined in WinBoard as "~~" to make the expansion a no-op there. Same for Linux compiles. For OS X it is #defined as a variable, obtained from GTK-OSX at startup. --- diff --git a/args.h b/args.h index c7b2a83..a6a0a9b 100644 --- a/args.h +++ b/args.h @@ -1105,6 +1105,12 @@ ParseArgs(GetFunc get, void *cl) case ArgString: case ArgFilename: + if(argValue[0] == '~' && argValue[1] == '~') { + char buf[4*MSG_SIZ]; // expand ~~ + snprintf(buf, 4*MSG_SIZ, "%s%s", DATADIR, argValue+2); + ASSIGN(*(char **) ad->argLoc, buf); + break; + } ASSIGN(*(char **) ad->argLoc, argValue); break; diff --git a/gtk/xboard.c b/gtk/xboard.c index 5b018e5..16d7a9f 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -169,7 +169,7 @@ 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 @@ -177,8 +177,11 @@ extern char *getenv(); # undef SYSCONFDIR # define ICS_LOGON "Library/Preferences/XboardICS.conf" # define SYSCONFDIR "../etc" +# define DATADIR dataDir + char *dataDir; // for expanding ~~ #else # define SLASH '/' +# define DATADIR "~~" #endif #ifdef __EMX__ @@ -772,6 +775,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 diff --git a/winboard/winboard.c b/winboard/winboard.c index d643a45..3819e58 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -93,6 +93,7 @@ #include "wsnap.h" #define SLASH '/' +#define DATADIR "~~" //void InitEngineUCI( const char * iniDir, ChessProgramState * cps );