]> git.tdb.fi Git - ext/subsurface.git/blobdiff - macos.c
Make icon file name OS helper function
[ext/subsurface.git] / macos.c
diff --git a/macos.c b/macos.c
index 25f946c81db9a52abad2547286e3f12c3b75e5ad..4c856ce03717b652d9a7ae54cfe17809d07c05f5 100644 (file)
--- a/macos.c
+++ b/macos.c
@@ -2,6 +2,7 @@
 /* implements Mac OS X specific functions */
 #include "display-gtk.h"
 #include <CoreFoundation/CoreFoundation.h>
+#include <mach-o/dyld.h>
 
 static CFURLRef fileURL;
 static CFPropertyListRef propertyList;
@@ -94,3 +95,23 @@ const char *subsurface_USB_name()
 {
        return "/dev/tty.SLAB_USBtoUART";
 }
+
+#define REL_ICON_PATH "Resources/Subsurface.icns"
+const char *subsurface_icon_name()
+{
+       static char path[1024];
+       char *ptr1, *ptr2;
+       uint32_t size = sizeof(path); /* need extra space to copy icon path */
+       if (_NSGetExecutablePath(path, &size) == 0) {
+               ptr1 = strcasestr(path,"MacOS/subsurface");
+               ptr2 = strcasestr(path,"Contents");
+               if (ptr1 && ptr2) {
+                       /* we are running as installed app from a bundle */
+                       if (ptr1 - path < size - strlen(REL_ICON_PATH)) {
+                               strcpy(ptr1,REL_ICON_PATH);
+                               return path;
+                       }
+               }
+       }
+       return "packaging/macosx/Subsurface.icns";
+}