Make location of man file dynamic for OSX
authorH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 12 Mar 2016 15:41:38 +0000 (16:41 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 12 Mar 2016 15:41:38 +0000 (16:41 +0100)
MANDIR is redefined in the case of an OSX App to be a variable, in a
similar way as DATADIR, so it can be determined at startup, and the App
can be 'portable'. The way to concatenate it with the rest of the file
name hd to be made variable-proof.

dialogs.c
gtk/xboard.c

index 084d9f4..2be171f 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -2491,12 +2491,13 @@ GetHelpText (FILE *f, char *name)
 void
 DisplayHelp (char *name)
 {
-    char buf[MSG_SIZ], *manFile = MANDIR "/man6/xboard.6";
+    char buf[MSG_SIZ];
     FILE *f;
-    if(currentCps) snprintf(manFile = buf, MSG_SIZ, "/usr/share/man/man6/%s.6", currentCps->program);
-    f = fopen(manFile, "r");
+    if(currentCps) snprintf(buf, MSG_SIZ, "/usr/local/share/man/man6/%s.6", currentCps->program);
+    else           snprintf(buf, MSG_SIZ, "%s/man6/xboard.6", MANDIR);
+    f = fopen(buf, "r");
     if(!f && currentCps) { // engine manual could be in two places
-       snprintf(buf, MSG_SIZ, "/usr/man/man6/%s.6", currentCps->program);
+       snprintf(buf, MSG_SIZ, "/usr/share/man/man6/%s.6", currentCps->program);
        f= fopen(buf, "r");
     }
     if(f) {
index c62f2c3..62de768 100644 (file)
@@ -176,14 +176,17 @@ extern char *getenv();
    // redefine some defaults
 #  undef ICS_LOGON
 #  undef DATADIR
+#  undef MANDIR
 #  undef LOCALEDIR
 #  undef SETTINGS_FILE
 #  define ICS_LOGON "Library/Preferences/XboardICS.conf"
 #  define DATADIR dataDir
+#  define MANDIR manDir
 #  define LOCALEDIR localeDir
 #  define SETTINGS_FILE masterSettings
 #  define SYNC_MENUBAR gtkosx_application_sync_menubar(theApp)
    char dataDir[MSG_SIZ]; // for expanding ~~
+   char manDir[MSG_SIZ];
    char localeDir[MSG_SIZ];
    char masterSettings[MSG_SIZ];
 #else
@@ -892,6 +895,7 @@ main (int argc, char **argv)
         theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
         snprintf(masterSettings, MSG_SIZ, "%s/Contents/Resources/etc/xboard.conf", path);
         snprintf(dataDir, MSG_SIZ, "%s/Contents/Resources/share/xboard", path);
+        snprintf(manDir, MSG_SIZ, "%s/Contents/Resources/share/man", path);
         snprintf(svgDir, MSG_SIZ, "%s/themes/default", dataDir);
         g_signal_connect(theApp, "NSApplicationOpenFile", G_CALLBACK(StartNewXBoard), NULL);
         g_signal_connect(theApp, "NSApplicationWillTerminate", G_CALLBACK(ExitEvent), NULL);