diff mbox

[2/3] add sparse_basename()

Message ID 20170405011455.60222-3-luc.vanoostenryck@gmail.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Luc Van Oostenryck April 5, 2017, 1:14 a.m. UTC
Add sparse_basename() as a simplified version of basename()
working on Unix and non-unix environments.

Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
 Makefile          |  1 +
 compat.h          |  1 +
 compat/basename.c | 16 ++++++++++++++++
 3 files changed, 18 insertions(+)
 create mode 100644 compat/basename.c
diff mbox

Patch

diff --git a/Makefile b/Makefile
index e8edd95f6..b4826728c 100644
--- a/Makefile
+++ b/Makefile
@@ -107,6 +107,7 @@  LIB_OBJS= target.o parse.o tokenize.o pre-process.o symbol.o lib.o scope.o \
 	  expression.o show-parse.o evaluate.o expand.o inline.o linearize.o \
 	  char.o sort.o allocate.o compat-$(OS).o ptrlist.o \
 	  builtin.o \
+	  compat/basename.o \
 	  flow.o cse.o simplify.o memops.o liveness.o storage.o unssa.o dissect.o
 
 LIB_FILE= libsparse.a
diff --git a/compat.h b/compat.h
index 9814ae3e8..5b69548af 100644
--- a/compat.h
+++ b/compat.h
@@ -24,5 +24,6 @@  struct stat;
 void *blob_alloc(unsigned long size);
 void blob_free(void *addr, unsigned long size);
 long double string_to_ld(const char *nptr, char **endptr);
+const char *sparse_basename(const char *path);
 
 #endif
diff --git a/compat/basename.c b/compat/basename.c
new file mode 100644
index 000000000..c9770229c
--- /dev/null
+++ b/compat/basename.c
@@ -0,0 +1,16 @@ 
+#include "compat.h"
+#include <string.h>
+
+const char *sparse_basename(const char *path)
+{
+	const char *last;
+
+	last = strrchr(path, '/');
+	path = last ? last + 1 : path;
+#if defined(_WIN32) || defined(_WIN64)
+	last = strrchr(path, '\\');
+	path = last ? last + 1 : path;
+#endif
+
+	return path;
+}