summaryrefslogtreecommitdiffstats
path: root/src/bfstd.h
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2022-12-30 14:49:46 -0500
committerTavian Barnes <tavianator@tavianator.com>2023-01-19 14:41:55 -0500
commit683552c4c9a3dfee4ce603157bb2cf18d64fbcfc (patch)
tree475130eeb136007eea7c59cb7190dc05287e2c56 /src/bfstd.h
parent944cd72f40a84d318453c320a84d443273956859 (diff)
downloadbfs-683552c4c9a3dfee4ce603157bb2cf18d64fbcfc.tar.xz
bfstd: New wrappers for dirname()/basename()
Diffstat (limited to 'src/bfstd.h')
-rw-r--r--src/bfstd.h28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/bfstd.h b/src/bfstd.h
index 6bf6ec8..d46fa02 100644
--- a/src/bfstd.h
+++ b/src/bfstd.h
@@ -22,6 +22,7 @@
#define BFS_BFSTD_H
#include <stdbool.h>
+#include <stddef.h>
// #include <errno.h>
@@ -45,13 +46,34 @@ bool is_nonexistence_error(int error);
// #include <libgen.h>
/**
- * basename() variant that doesn't modify the input.
+ * Re-entrant dirname() variant that always allocates a copy.
*
* @param path
* The path in question.
- * @return A pointer into path at the base name offset.
+ * @return
+ * The parent directory of the path.
+ */
+char *xdirname(const char *path);
+
+/**
+ * Re-entrant basename() variant that always allocates a copy.
+ *
+ * @param path
+ * The path in question.
+ * @return
+ * The final component of the path.
+ */
+char *xbasename(const char *path);
+
+/**
+ * Find the offset of the final component of a path.
+ *
+ * @param path
+ * The path in question.
+ * @return
+ * The offset of the basename.
*/
-const char *xbasename(const char *path);
+size_t xbaseoff(const char *path);
#include <stdio.h>