Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowi@redhat.com>2015-03-26 02:19:38 +0300
committerCorinna Vinschen <corinna@vinschen.de>2015-04-23 22:57:07 +0300
commitd67052321ec17d82bd7da35ae3fd87eecd7b376f (patch)
treec2f220da7864776b214db15fd99936a77e47f051 /newlib/libc/include/string.h
parentd4f8c94a9b62706d88f8b6b80697023ab32ae497 (diff)
string: add GNU basename(3)
* libc/include/libgen.h (_BASENAME_DEFINED): Define. * libc/include/string.h (basename): Declare. * libc/string/Makefile.am (ELIX_4_SOURCES): Add gnu_basename.c. * libc/string/Makefile.in: Regenerate. * libc/string/gnu_basename.c: New file.
Diffstat (limited to 'newlib/libc/include/string.h')
-rw-r--r--newlib/libc/include/string.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/newlib/libc/include/string.h b/newlib/libc/include/string.h
index 43b36267d..9e11e5c51 100644
--- a/newlib/libc/include/string.h
+++ b/newlib/libc/include/string.h
@@ -163,6 +163,20 @@ int _EXFUN(strtosigno, (const char *__name));
(char *) memcpy (__out, __in, __len-1);}))
#endif /* _GNU_SOURCE && __GNUC__ */
+/* There are two common basename variants. If you #include <libgen.h>
+ first, you get the POSIX version; otherwise you get the GNU version.
+ POSIX requires that #undef basename will still let you
+ invoke the underlying function, but that requires gcc support. */
+#if __GNU_VISIBLE && !defined(_BASENAME_DEFINED)
+# ifdef __GNUC__
+char *_EXFUN(basename,(const char *))
+ __asm__ (__ASMNAME ("__gnu_basename")) __nonnull(1);
+# else
+char *_EXFUN(__gnu_basename,(const char *));
+# define basename __gnu_basename
+# endif
+#endif
+
#include <sys/string.h>
_END_STD_C