diff --git a/src/filesystem/unix/SDL_sysfilesystem.c b/src/filesystem/unix/SDL_sysfilesystem.c index 3e8fd9f49..0c0505cd4 100644 --- a/src/filesystem/unix/SDL_sysfilesystem.c +++ b/src/filesystem/unix/SDL_sysfilesystem.c @@ -199,16 +199,6 @@ SDL_GetBasePath(void) SDL_free(cmdline); } #endif -#if defined(__SOLARIS__) - const char *path = getexecname(); - if ((path != NULL) && (path[0] == '/')) { /* must be absolute path... */ - retval = SDL_strdup(path); - if (retval == NULL) { - SDL_OutOfMemory(); - return NULL; - } - } -#endif /* is a Linux-style /proc filesystem available? */ if (retval == NULL && (access("/proc", F_OK) == 0)) { @@ -219,6 +209,8 @@ SDL_GetBasePath(void) retval = readSymLink("/proc/curproc/file"); #elif defined(__NETBSD__) retval = readSymLink("/proc/curproc/exe"); +#elif defined(__SOLARIS__) + retval = readSymLink("/proc/self/path/a.out"); #else retval = readSymLink("/proc/self/exe"); /* linux. */ if (retval == NULL) { @@ -233,7 +225,18 @@ SDL_GetBasePath(void) } #endif } - +#if defined(__SOLARIS__) + else { + const char *path = getexecname(); + if ((path != NULL) && (path[0] == '/')) { /* must be absolute path... */ + retval = SDL_strdup(path); + if (retval == NULL) { + SDL_OutOfMemory(); + return NULL; + } + } + } +#endif /* If we had access to argv[0] here, we could check it for a path, or troll through $PATH looking for it, too. */