From 06d5f1bcc9aee5ab94a6c78c99a876408ecc9f1f Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Sun, 26 Feb 2012 01:22:33 +0000 Subject: (my_dirname) introduce a non segfaulting dirname() --- mdk-stage1/utils.c | 14 ++++++++++++++ mdk-stage1/utils.h | 1 + 2 files changed, 15 insertions(+) diff --git a/mdk-stage1/utils.c b/mdk-stage1/utils.c index 492061887..af5ee9af3 100644 --- a/mdk-stage1/utils.c +++ b/mdk-stage1/utils.c @@ -179,3 +179,17 @@ void lowercase(char *s) i++; } } + +char *my_dirname(char *path) { + char *p = strrchr (path, '/'); + char *tmp; + int len; + if (!p) + return path; + len = p-path+1; + tmp = malloc(len); + strncpy(tmp, path, len-1); + tmp[len-1] = '\0'; + return tmp; +} + diff --git a/mdk-stage1/utils.h b/mdk-stage1/utils.h index d0d7ae617..d42c52d06 100644 --- a/mdk-stage1/utils.h +++ b/mdk-stage1/utils.h @@ -28,6 +28,7 @@ char ** list_directory(char * direct); int string_array_length(char ** a); char * asprintf_(const char *msg, ...); int scall_(int retval, char * msg, char * file, int line); +char *my_dirname(char *path); #define scall(retval, msg) scall_(retval, msg, __FILE__, __LINE__) void lowercase(char *s); -- cgit v1.2.1