From 58df72e651e6b45ba60b0ab3cc29538976cd9697 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Sun, 10 Dec 2023 01:06:51 -0500 Subject: Add path_dirname() function --- src/utils.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/utils.c') 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; -- cgit