@@ -762,7 +762,18 @@ int main (int argc, char *argv[])
762762 if (config_file == NULL )
763763 {
764764 char p [PATH_MAX ] = {};
765- ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
765+ #if defined(__linux__ )
766+ ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
767+ #elif defined(__APPLE__ )
768+ char ep [PATH_MAX ] = {};
769+ uint32_t size = sizeof (ep );
770+ ssize_t count = -1 ;
771+ if (_NSGetExecutablePath (ep , & size ) == 0 ) {
772+ if (realpath (ep , p ) != NULL ) {
773+ count = strlen (p );
774+ }
775+ }
776+ #endif
766777 if (count != -1 ) {
767778 char * cfg ;
768779 cfg = dirname (p );
@@ -779,7 +790,18 @@ int main (int argc, char *argv[])
779790 if (config_file == NULL )
780791 {
781792 char p [PATH_MAX ] = {};
782- ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
793+ #if defined(__linux__ )
794+ ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
795+ #elif defined(__APPLE__ )
796+ char ep [PATH_MAX ] = {};
797+ uint32_t size = sizeof (ep );
798+ ssize_t count = -1 ;
799+ if (_NSGetExecutablePath (ep , & size ) == 0 ) {
800+ if (realpath (ep , p ) != NULL ) {
801+ count = strlen (p );
802+ }
803+ }
804+ #endif
783805 if (count != -1 ) {
784806 char * cfg ;
785807 cfg = dirname (p );
@@ -821,7 +843,18 @@ int main (int argc, char *argv[])
821843#if defined __linux || defined (__APPLE__ )
822844 if (exe_path && (bitmap_path [0 ] != '/' )) {
823845 char p [PATH_MAX ] = {};
824- ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
846+ #if defined(__linux__ )
847+ ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
848+ #elif defined(__APPLE__ )
849+ char ep [PATH_MAX ] = {};
850+ uint32_t size = sizeof (ep );
851+ ssize_t count = -1 ;
852+ if (_NSGetExecutablePath (ep , & size ) == 0 ) {
853+ if (realpath (ep , p ) != NULL ) {
854+ count = strlen (p );
855+ }
856+ }
857+ #endif
825858 if (count != -1 ) {
826859 char * bmp ;
827860 bmp = dirname (p );
@@ -1951,7 +1984,18 @@ void HelpAboutCallback(GtkWidget *w, gpointer data)
19511984 if (config_file == NULL )
19521985 {
19531986 char p [PATH_MAX ] = {};
1954- ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
1987+ #if defined(__linux__ )
1988+ ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
1989+ #elif defined(__APPLE__ )
1990+ char ep [PATH_MAX ] = {};
1991+ uint32_t size = sizeof (ep );
1992+ ssize_t count = -1 ;
1993+ if (_NSGetExecutablePath (ep , & size ) == 0 ) {
1994+ if (realpath (ep , p ) != NULL ) {
1995+ count = strlen (p );
1996+ }
1997+ }
1998+ #endif
19551999 if (count != -1 ) {
19562000 char * cfg ;
19572001 cfg = dirname (p );
@@ -1965,7 +2009,18 @@ void HelpAboutCallback(GtkWidget *w, gpointer data)
19652009 if (config_file == NULL )
19662010 {
19672011 char p [PATH_MAX ] = {};
1968- ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
2012+ #if defined(__linux__ )
2013+ ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
2014+ #elif defined(__APPLE__ )
2015+ char ep [PATH_MAX ] = {};
2016+ uint32_t size = sizeof (ep );
2017+ ssize_t count = -1 ;
2018+ if (_NSGetExecutablePath (ep , & size ) == 0 ) {
2019+ if (realpath (ep , p ) != NULL ) {
2020+ count = strlen (p );
2021+ }
2022+ }
2023+ #endif
19692024 if (count != -1 ) {
19702025 char * cfg ;
19712026 cfg = dirname (p );
@@ -2006,7 +2061,18 @@ void HelpAboutCallback(GtkWidget *w, gpointer data)
20062061#if defined __linux || defined (__APPLE__ )
20072062 if ((access (bitmap_path , R_OK ) == -1 ) && (bitmap_path [0 ] != '/' )) {
20082063 char p [PATH_MAX ] = {};
2009- ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
2064+ #if defined(__linux__ )
2065+ ssize_t count = readlink ("/proc/self/exe" , p , PATH_MAX );
2066+ #elif defined(__APPLE__ )
2067+ char ep [PATH_MAX ] = {};
2068+ uint32_t size = sizeof (ep );
2069+ ssize_t count = -1 ;
2070+ if (_NSGetExecutablePath (ep , & size ) == 0 ) {
2071+ if (realpath (ep , p ) != NULL ) {
2072+ count = strlen (p );
2073+ }
2074+ }
2075+ #endif
20102076 if (count != -1 ) {
20112077 char * bmp ;
20122078 bmp = dirname (p );
0 commit comments