fs: Use getexecpath() on OpenBSD for GetExePath().

This commit is contained in:
Brad Smith
2026-09-01 00:11:39 -04:00
committed by Ryan C. Gordon
parent ce85ee87f6
commit b7606be372
2 changed files with 11 additions and 0 deletions

View File

@@ -1225,6 +1225,7 @@ if(SDL_LIBC)
if(NOT WINDOWS)
check_symbol_exists(fdatasync "unistd.h" HAVE_FDATASYNC)
check_symbol_exists(getexecpath "unistd.h" HAVE_GETEXECPATH)
check_symbol_exists(gethostname "unistd.h" HAVE_GETHOSTNAME)
check_symbol_exists(getpagesize "unistd.h" HAVE_GETPAGESIZE)
check_symbol_exists(getresgid "unistd.h" HAVE_GETRESGID)

View File

@@ -138,6 +138,15 @@ static char *GetExePath(void)
}
#endif
#ifdef SDL_PLATFORM_OPENBSD
#ifdef HAVE_GETEXECPATH
char fullpath[PATH_MAX];
if (getexecpath(fullpath, sizeof(fullpath)) == 0) {
result = SDL_strdup(fullpath);
if (!result) {
return NULL;
}
}
#else
// Please note that this will fail if the process was launched with a relative path and $PWD + the cwd have changed, or argv is altered. So don't do that. Or add a new sysctl to OpenBSD.
char **cmdline;
size_t len;
@@ -193,6 +202,7 @@ static char *GetExePath(void)
SDL_free(cmdline);
}
#endif
#endif
// is a Linux-style /proc filesystem available?