Fix name of master settings file in OS X
authorH.G. Muller <h.g.muller@hccnet.nl>
Mon, 13 Jan 2014 12:38:47 +0000 (13:38 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Mon, 13 Jan 2014 12:41:40 +0000 (13:41 +0100)
The name needs to be relative to the bundle path, but ~~ expansion
did not work for compiled-in defaults, as the expansion takes place
when parsing an option. The dataDir is now also kept in an array rather
than as a pointer, to allow it to appear in statically initialized tables.

gtk/xboard.c

index 334f92a..20eeaff 100644 (file)
@@ -174,12 +174,13 @@ extern char *getenv();
 #  define SLASH '-'
    // redefine some defaults
 #  undef ICS_LOGON
 #  define SLASH '-'
    // redefine some defaults
 #  undef ICS_LOGON
-#  undef SYSCONFDIR
 #  undef DATADIR
 #  undef DATADIR
+#  undef SETTINGS_FILE
 #  define ICS_LOGON "Library/Preferences/XboardICS.conf"
 #  define ICS_LOGON "Library/Preferences/XboardICS.conf"
-#  define SYSCONFDIR "../etc"
 #  define DATADIR dataDir
 #  define DATADIR dataDir
-   char *dataDir; // for expanding ~~
+#  define SETTINGS_FILE masterSettings
+   char dataDir[MSG_SIZ]; // for expanding ~~
+   char masterSettings[MSG_SIZ];
 #else
 #  define SLASH '/'
 #endif
 #else
 #  define SLASH '/'
 #endif
@@ -776,7 +777,9 @@ main (int argc, char **argv)
 #ifdef __APPLE__
     {   // prepare to catch OX OpenFile signal, which will tell us the clicked file
        GtkosxApplication *theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
 #ifdef __APPLE__
     {   // 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();
+       char *path = gtkosx_application_get_bundle_path();
+       strncpy(dataDir, path, MSG_SIZ);
+       snprintf(masterSettings, MSG_SIZ, "%s/../Resources/etc/xboard.conf", 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
        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