Skip to content
Permalink
Browse files
Favor /proc/self/exe over argv[0] on Linux, to match other platforms.
We don't favor searching the $PATH, though, since that relies on argv[0] too.
  • Loading branch information
icculus committed Mar 23, 2012
1 parent 9d01a64 commit 2392ca1aa3b8fe2a351fc0d2b6cd6c6e271a333b
Showing with 5 additions and 4 deletions.
  1. +5 −4 src/platform_unix.c
@@ -248,10 +248,6 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0)
char *retval = NULL;
char *envr = NULL;

/* fast path: default behaviour can handle this. */
if ( (argv0 != NULL) && (strchr(argv0, '/') != NULL) )
return NULL; /* higher level will parse out real path from argv0. */

/*
* Try to avoid using argv0 unless forced to. If there's a Linux-like
* /proc filesystem, you can get the full path to the current process from
@@ -275,8 +271,13 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0)
*(ptr+1) = '\0';
} /* if */

/* No /proc/self/exe, but we have an argv[0] we can parse? */
if ((retval == NULL) && (argv0 != NULL))
{
/* fast path: default behaviour can handle this. */
if (strchr(argv0, '/') != NULL)
return NULL; /* higher level parses out real path from argv0. */

/* If there's no dirsep on argv0, then look through $PATH for it. */
/* !!! FIXME: smallAlloc? */
envr = __PHYSFS_platformCopyEnvironmentVariable("PATH");

0 comments on commit 2392ca1

Please sign in to comment.