Make icon file name OS helper function

This way we can load the correct icon on the Mac without ugly hacks in the
OS independent code.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2011-12-28 15:57:36 -08:00
parent a8676438a7
commit 565736a471
5 changed files with 34 additions and 10 deletions

21
macos.c
View file

@ -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";
}