ref: 9e05fc749cb48540ee04371cd578f5fd8898b034
parent: 686729f16636fe0310dcb4b3108a572b25c88106
author: Jacob Moody <[email protected]>
date: Sun May 7 16:51:26 EDT 2023
npe: add libgen.h
--- /dev/null
+++ b/include/npe/libgen.h
@@ -1,0 +1,9 @@
+#ifndef _npe_libgen_h_
+#define _npe_libgen_h_
+
+#include <npe.h>
+
+char *dirname(char *path);
+char *basename(char *path);
+
+#endif
--- /dev/null
+++ b/libnpe/basename.c
@@ -1,0 +1,20 @@
+#include <libgen.h>
+
+char*
+basename(char *path)
+{
+ char *p;
+
+ if(path == nil || path[0] == 0)
+ return ".";
+ if(path[0] != 0 && path[0] == '/' && path[1] == 0)
+ return path;
+ p = path + strlen(path);
+ for(p--; p > path+1 && *p == '/'; p--)
+ *p = 0;
+ for(p--; p > path && *p != '/'; p--)
+ ;
+ if(*p == '/')
+ return p+1;
+ return p;
+}
--- /dev/null
+++ b/libnpe/dirname.c
@@ -1,0 +1,24 @@
+#include <libgen.h>
+
+char*
+dirname(char *path)
+{
+ char *p;
+
+ if(path == nil || path[0] == 0)
+ return ".";
+ if(path[0] != 0 && path[0] == '/' && path[1] == 0)
+ return path;
+ p = path + strlen(path);
+ for(p--; p > path+1 && *p == '/'; p--)
+ *p = 0;
+ for(p--; p > path && *p != '/'; p--)
+ ;
+ if(*p == '/' && p == path)
+ return "/";
+ if(p == path)
+ return ".";
+ if(*p == '/')
+ *p = 0;
+ return path;
+}
--- a/libnpe/mkfile
+++ b/libnpe/mkfile
@@ -11,8 +11,10 @@
OFILES=\
_main.$O\
_npe.$O\
+ basename.$O\
closedir.$O\
dirfd.$O\
+ dirname.$O\
exp2.$O\
fstatat.$O\
fts_children.$O\