ref: e4cdde6bf5fd9562d826cc2f5a30e3774c247432
dir: /libnpe/dirname.c/
#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; }