Port kbasename() from Linux and use it to implement basename() we
already have.

Signed-off-by: Andrey Smirnov <[email protected]>
---
 include/linux/string.h | 12 ++++++++++++
 lib/libgen.c           | 16 ++--------------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/include/linux/string.h b/include/linux/string.h
index 3418b4fbe..c9823dab8 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -111,6 +111,18 @@ extern char *strim(char *);
 
 void *memchr_inv(const void *start, int c, size_t bytes);
 
+/**
+ * kbasename - return the last part of a pathname.
+ *
+ * @path: path to extract the filename from.
+ */
+static inline const char *kbasename(const char *path)
+{
+       const char *tail = strrchr(path, '/');
+       return tail ? tail + 1 : path;
+}
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/lib/libgen.c b/lib/libgen.c
index 08ef3528a..61a8670fb 100644
--- a/lib/libgen.c
+++ b/lib/libgen.c
@@ -17,23 +17,11 @@
 
 #include <common.h>
 #include <libgen.h>
+#include <linux/string.h>
 
 char *basename (char *path)
 {
-       char *fname;
-
-       if(!strchr(path, '/'))
-               return path;
-
-       fname = path + strlen(path) - 1;
-       while (fname >= path) {
-               if (*fname == '/') {
-                       fname++;
-                       break;
-               }
-               fname--;
-       }
-       return fname;
+       return (char *)kbasename(path);
 }
 EXPORT_SYMBOL(basename);
 
-- 
2.17.1


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to