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/string/gnu_basename.c
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/string/gnu_basename.c')
-rw-r--r--newlib/libc/string/gnu_basename.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/newlib/libc/string/gnu_basename.c b/newlib/libc/string/gnu_basename.c
new file mode 100644
index 000000000..46b92d0fd
--- /dev/null
+++ b/newlib/libc/string/gnu_basename.c
@@ -0,0 +1,26 @@
+#ifndef _NO_BASENAME
+/* Copyright 2015 Red Hat, Inc.
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+/* The differences with the POSIX version (unix/basename.c):
+ * - declared in <string.h> (instead of <libgen.h>);
+ * - the argument is never modified, and therefore is marked const;
+ * - the empty string is returned if path is an empty string, "/", or ends
+ * with a trailing slash.
+ */
+
+#include <string.h>
+
+char *
+_DEFUN (__gnu_basename, (path),
+ const char *path)
+{
+ char *p;
+ if ((p = strrchr (path, '/')))
+ return p + 1;
+ return path;
+}
+
+#endif /* !_NO_BASENAME */