# HG changeset patch # User Rob Landley # Date 1421610264 21600 # Node ID 5d003cc2fa169e2699dff735704074432f73e8e7 # Parent 692be264d4f09ad9713537187d67512d429f7a38 Lift the basename/libgen.h shenanigans back out of portability.c and make it a static inline in portability.h, and prototype dirname() while we're at it. diff -r 692be264d4f0 -r 5d003cc2fa16 lib/portability.c --- a/lib/portability.c Sun Jan 18 13:36:31 2015 -0600 +++ b/lib/portability.c Sun Jan 18 13:44:24 2015 -0600 @@ -6,14 +6,6 @@ #include "toys.h" -#if defined(__GLIBC__) -#include -char *basename(char *path) -{ - return __xpg_basename(path); -} -#endif - #if !defined(__uClinux__) pid_t xfork(void) { diff -r 692be264d4f0 -r 5d003cc2fa16 lib/portability.h --- a/lib/portability.h Sun Jan 18 13:36:31 2015 -0600 +++ b/lib/portability.h Sun Jan 18 13:44:24 2015 -0600 @@ -66,8 +66,12 @@ // the table entry for the basename command. They didn't make a new function // with a different name for their new behavior because gnu. // -// Implement our own in portability.c and don't use their broken header. -char *basename(char *path); +// Solution: don't use their broken header, provide an inline to redirect the +// correct name to the broken name. + +char *dirname(char *path); +char *__xpg_basename (char *path); +static inline char *basename(char *path) { return __xpg_basename(path); } // uClibc pretends to be glibc and copied a lot of its bugs, but has a few more #if defined(__UCLIBC__) @@ -137,9 +141,9 @@ #ifndef MNT_DETACH #define MNT_DETACH 2 #endif -#endif +#endif // Old glibc -#endif +#endif // glibc in general #ifndef __GLIBC__ // POSIX basename. diff -r 692be264d4f0 -r 5d003cc2fa16 toys/posix/dirname.c --- a/toys/posix/dirname.c Sun Jan 18 13:36:31 2015 -0600 +++ b/toys/posix/dirname.c Sun Jan 18 13:44:24 2015 -0600 @@ -16,7 +16,6 @@ */ #include "toys.h" -#include void dirname_main(void) {