diff options
author | Martin Pärtel <martin.partel@gmail.com> | 2012-09-14 16:59:49 +0300 |
---|---|---|
committer | Martin Pärtel <martin.partel@gmail.com> | 2012-09-14 16:59:49 +0300 |
commit | f6161698827488cc21f3f3726d5af0cb2a89ce4b (patch) | |
tree | b7ebdfdfe8f9a70905a0878415e768f66200d953 /src/misc.c | |
parent | 66f00111c4e886e244152e460ada62164c975d4d (diff) | |
download | bindfs-f6161698827488cc21f3f3726d5af0cb2a89ce4b.tar.gz |
Implemented my_dirname and added unit tests for it.
Diffstat (limited to 'src/misc.c')
-rw-r--r-- | src/misc.c | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -82,6 +82,32 @@ const char *my_basename(const char *path) return path; } +const char *my_dirname(char *path) +{ + if (strcmp(path, ".") == 0) { + return ".."; + } else if (strcmp(path, "/") == 0) { + return "/"; + } else { + int len = strlen(path); + char *p = path + len - 1; + while (p > path) { + if (*p == '/') { + break; + } + --p; + } + if (p > path) { + *p = '\0'; + return path; + } else if (*path == '/') { + return "/"; + } else { + return "."; + } + } +} + void grow_array_impl(void **array, int* capacity, int member_size) { int new_cap = *capacity; |