diff options
author | Rob Landley <rob@landley.net> | 2014-12-31 16:22:31 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2014-12-31 16:22:31 -0600 |
commit | de699accf6804e8b1d8042b46c85500ee8c672c6 (patch) | |
tree | 7b12adea478bcfd9355a4fda982d74c40810f42b /lib/portability.h | |
parent | 774c599c7979392f4ec95e9b48ac25f0353c0c47 (diff) | |
download | toybox-de699accf6804e8b1d8042b46c85500ee8c672c6.tar.gz |
When you include the posix header libgen.h, glibc #defines basename to some random other symbol name (because gnu) and this screws up nontrivial macro expansions of NEWTOY(basename), so work around it in portability.h.
Diffstat (limited to 'lib/portability.h')
-rw-r--r-- | lib/portability.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/portability.h b/lib/portability.h index 1464c656..8bbbdb25 100644 --- a/lib/portability.h +++ b/lib/portability.h @@ -60,6 +60,15 @@ int wcwidth(wchar_t wc); #include <time.h> char *strptime(const char *buf, const char *format, struct tm *tm); +// They didn't like posix basename so they defined another function with the +// same name and if you include libgen.h it #defines basename to something +// else (where they implemented the real basename), and that define breaks +// 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); + // uClibc pretends to be glibc and copied a lot of its bugs, but has a few more #if defined(__UCLIBC__) #include <unistd.h> |