foxygit / doom Log in
commit b79f27cef85cc975b45ada246ace30b648466483
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Wed Mar 30 19:16:40 2011 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Wed Mar 30 19:16:40 2011 +0000

    Add a symlink hack to work around the fact that OS X doesn't like paths
    in MANPATH to contain spaces.

    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 2318
---
 pkg/osx/Execute.m | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/pkg/osx/Execute.m b/pkg/osx/Execute.m
index 25f5e67d..ffeddadd 100644
--- a/pkg/osx/Execute.m
+++ b/pkg/osx/Execute.m
@@ -175,8 +175,19 @@ void OpenTerminalWindow(const char *doomwadpath)
     fprintf(stream, "#!/bin/sh\n");
     //fprintf(stream, "set -x\n");
     fprintf(stream, "PATH=\"%s:$PATH\"\n", executable_path);
-    fprintf(stream, "MANPATH=\"%s/man:$(manpath)\"\n", executable_path);
+
+    // MANPATH is set to point to the directory within the bundle that
+    // contains the Unix manpages.  However, the bundle name or path to
+    // it can contain a space, and OS X doesn't like this!  As a
+    // workaround, create a symlink in /tmp to point to the real directory,
+    // and put *this* in MANPATH.
+
+    fprintf(stream, "rm -f \"/tmp/%s.man\"\n", PACKAGE_TARNAME);
+    fprintf(stream, "ln -s \"%s/man\" \"/tmp/%s.man\"\n",
+                    executable_path, PACKAGE_TARNAME);
+    fprintf(stream, "MANPATH=\"/tmp/%s.man:$(manpath)\"\n", PACKAGE_TARNAME);
     fprintf(stream, "export MANPATH\n");
+
     fprintf(stream, "DOOMWADPATH=\"%s\"\n", doomwadpath);
     fprintf(stream, "export DOOMWADPATH\n");
     fprintf(stream, "rm -f \"%s\"\n", TEMP_SCRIPT);