From 742a7bf9408b976c84ad947f9b39637f184482fa Mon Sep 17 00:00:00 2001
From: Kaz Kylheku <kaz@kylheku.com>
Date: Fri, 4 May 2018 06:01:58 -0700
Subject: Mac-OS: replace nonworking method of getting self-path.

TXR's fall-back method of getting the executable's own path is
broken in the Mac-OS port, which means that TXR doesn't work
when invoked via PATH search. Mac-OS-specific code is required.

* txr.c (get_self_path): New variant for Darwin, using the
platform-specific function _NSGetExecutablePath.
---
 txr.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/txr.c b/txr.c
index 5f2ea883..428a0ff0 100644
--- a/txr.c
+++ b/txr.c
@@ -40,6 +40,9 @@
 #include <windows.h>
 #undef TEXT
 #endif
+#if __APPLE__
+#include <mach-o/dyld.h>
+#endif
 #include "lib.h"
 #include "stream.h"
 #include "gc.h"
@@ -230,6 +233,16 @@ static val get_self_path(void)
 
   return string(self);
 }
+#elif __APPLE__
+static val get_self_path(void)
+{
+  char self[PATH_MAX] = { 0 };
+  uint32_t size = sizeof self;
+
+  if (_NSGetExecutablePath(self, &size) != 0)
+    return nil;
+  return string_utf8(self);
+}
 #else
 static val get_self_path(void)
 {
-- 
cgit v1.2.3