From c8c1cab2b6a2754acbe7ee130c356383d0289f09 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 3 Apr 2025 03:57:42 +0000 Subject: Deprioritize getexecname(), it's bad Signed-off-by: Laurent Bercot --- src/libstddjb/sagetexecname.c | 36 ++++++++++++++++++------------------ src/sysdeps/trygetexecname.c | 4 ++++ 2 files changed, 22 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/libstddjb/sagetexecname.c b/src/libstddjb/sagetexecname.c index 5ca4ba3..658df1a 100644 --- a/src/libstddjb/sagetexecname.c +++ b/src/libstddjb/sagetexecname.c @@ -2,7 +2,7 @@ #include -#if defined(SKALIBS_PROCSELFEXE) +#if defined(SKALIBS_PROCSELFEXE) /* Linux, midipix, Solaris */ #include #include @@ -12,20 +12,7 @@ int sagetexecname (stralloc *sa) return sareadlink(sa, SKALIBS_PROCSELFEXE) ; } -#elif defined(SKALIBS_HASGETEXECNAME) - -#include -#include - -#include -#include - -int sagetexecname (stralloc *sa) -{ - return sarealpath(sa, getexecname()) ; -} - -#elif defined(SKALIBS_HASKERNPROCPATHNAME) +#elif defined(SKALIBS_HASKERNPROCPATHNAME) /* FreeBSD, NetBSD */ #include #ifdef __NetBSD__ @@ -47,7 +34,7 @@ int sagetexecname (stralloc *sa) return 0 ; } -#elif defined(SKALIBS_HAS_NSGETEXECUTABLEPATH) +#elif defined(SKALIBS_HAS_NSGETEXECUTABLEPATH) /* MacOS */ #include #include @@ -65,7 +52,7 @@ int sagetexecname (stralloc *sa) return sarealpath(sa, buf) ; } -#elif defined(SKALIBS_HASGETAUXVAL) +#elif defined(SKALIBS_HASGETAUXVAL) /* Hurd */ #include #include @@ -79,7 +66,7 @@ int sagetexecname (stralloc *sa) return sarealpath(sa, (char const *)x) ; } -#elif defined(SKALIBS_HASDLADDR) +#elif defined(SKALIBS_HASDLADDR) /* hack that only works with dynamic binaries */ #include #include @@ -96,6 +83,19 @@ int sagetexecname (stralloc *sa) return 0 ; } +#elif defined(SKALIBS_HASGETEXECNAME) /* bad: it will probably give argv[0] */ + +#include +#include + +#include +#include + +int sagetexecname (stralloc *sa) +{ + return sarealpath(sa, getexecname()) ; +} + #else /* we tried */ #include diff --git a/src/sysdeps/trygetexecname.c b/src/sysdeps/trygetexecname.c index ac65071..909a108 100644 --- a/src/sysdeps/trygetexecname.c +++ b/src/sysdeps/trygetexecname.c @@ -3,6 +3,10 @@ #undef _POSIX_C_SOURCE #undef _XOPEN_SOURCE +#ifndef __EXTENSIONS__ +#define __EXTENSIONS__ +#endif + #include int main (void) -- cgit v1.3.1