]> git.lizzy.rs Git - uwu-lang.git/blobdiff - common/dir.h
Turn common back into a normal directory (instead of a submodule)
[uwu-lang.git] / common / dir.h
diff --git a/common/dir.h b/common/dir.h
new file mode 100644 (file)
index 0000000..3e1ca41
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef _UWU_COMMON_DIR_H_
+#define _UWU_COMMON_DIR_H_
+
+#include <stdlib.h>
+#include <libgen.h>
+#include <string.h>
+
+static char *wrap_name_func(const char *name, char *(*fn)(char *))
+{
+       char *copy = strdup(name);
+       char *result = fn(copy);
+       char *result_copy = strdup(result);
+
+       free(copy);
+       return result_copy;
+}
+
+static inline char *basename_wrapper(const char *name)
+{
+       return wrap_name_func(name, &basename);
+}
+
+static inline char *dirname_wrapper(const char *name)
+{
+       return wrap_name_func(name, &dirname);
+}
+
+#endif