diff options
Diffstat (limited to 'src/utils.c')
-rw-r--r-- | src/utils.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c index 5889d70..7fe98b8 100644 --- a/src/utils.c +++ b/src/utils.c @@ -169,6 +169,28 @@ char *path_basename(char *path) { return result; } +/** + * Return parent directory of file, or the parent of a directory + * + * @param path + * @return success=directory, failure=empty string + */ +char *path_dirname(char *path) { + if (!path) { + return ""; + } + if (strlen(path) == 1 && *path == '/') { + return "/"; + } + char *pos = strrchr(path, '/'); + if (!pos) { + return "."; + } + *path = '\0'; + + return path; +} + char **file_readlines(const char *filename, size_t start, size_t limit, ReaderFn *readerFn) { FILE *fp = NULL; char **result = NULL; |