aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc/unix/basename.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/unix/basename.c')
-rw-r--r--newlib/libc/unix/basename.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/newlib/libc/unix/basename.c b/newlib/libc/unix/basename.c
new file mode 100644
index 0000000..703e532
--- /dev/null
+++ b/newlib/libc/unix/basename.c
@@ -0,0 +1,25 @@
+/* Copyright 2005 Shaun Jackman
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+#include <libgen.h>
+#include <string.h>
+
+char*
+_DEFUN (basename, (path),
+ char *path)
+{
+ char *p;
+ if( path == NULL || *path == '\0' )
+ return ".";
+ p = path + strlen(path) - 1;
+ while( *p == '/' ) {
+ if( p == path )
+ return path;
+ *p-- = '\0';
+ }
+ while( p >= path && *p != '/' )
+ p--;
+ return p + 1;
+}