aboutsummaryrefslogtreecommitdiff
path: root/include/cleanpath
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2021-05-12 23:46:22 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2021-05-12 23:46:22 -0400
commit89511934b805999e0c12071750c52c1c45d35536 (patch)
treecddfae1f628181b67a6d1a965e6c7c1239f81aeb /include/cleanpath
parent054508b5edeaef602ee4251bb3828387cb26f582 (diff)
downloadcleanpath-89511934b805999e0c12071750c52c1c45d35536.tar.gz
Proper namespace for the header file. Bump version.
Diffstat (limited to 'include/cleanpath')
-rw-r--r--include/cleanpath/cleanpath.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/include/cleanpath/cleanpath.h b/include/cleanpath/cleanpath.h
new file mode 100644
index 0000000..afee624
--- /dev/null
+++ b/include/cleanpath/cleanpath.h
@@ -0,0 +1,64 @@
+#ifndef CLEANPATH_CLEANPATH_H
+#define CLEANPATH_CLEANPATH_H
+
+// Define some platform detection shortcuts
+#define OS_DARWIN 0
+#define OS_WINDOWS 0
+#define OS_LINUX 0
+#define OS_SUPPORTED 0
+
+#if defined(__APPLE__) && defined(__MACH__)
+# undef OS_DARWIN
+# define OS_DARWIN 1
+# undef OS_SUPPORTED
+# define OS_SUPPORTED 1
+
+#elif defined(_WIN32)
+# undef OS_WINDOWS
+# define OS_WINDOWS 1
+# undef OS_SUPPORTED
+# define OS_SUPPORTED 1
+
+#elif defined(__linux) || defined(__linux__)
+# undef OS_LINUX
+# define OS_LINUX 1
+# undef OS_SUPPORTED
+# define OS_SUPPORTED 1
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define CLEANPATH_VERSION "1.0.0"
+#define CLEANPATH_FILTER_NONE -1
+#define CLEANPATH_FILTER_EXACT 0
+#define CLEANPATH_FILTER_LOOSE 1
+#define CLEANPATH_FILTER_REGEX 2
+#define CLEANPATH_PART_MAX 1024
+#define CLEANPATH_VAR "PATH"
+#define CLEANPATH_SEP ":"
+#define CLEANPATH_MSG_NOAVAIL ""
+
+#if OS_WINDOWS
+#undef CLEANPATH_SEP
+#define CLEANPATH_SEP ";"
+#undef CLEANPATH_MSG_NOAVAIL
+#define CLEANPATH_MSG_NOAVAIL " [not implemented] "
+#endif
+
+struct CleanPath {
+ char *data; // Pointer to the path string
+ size_t data_len; // Length of the path string
+ char *sep; // Pointer to the separator used to split the data string
+ char *part[CLEANPATH_PART_MAX]; // Array of pointers to path elements
+ size_t part_nelem; // Total number of elements in part array
+};
+
+// Prototypes
+struct CleanPath *cleanpath_init(const char *path, const char *sep);
+void cleanpath_filter(struct CleanPath *path, unsigned mode, const char *pattern);
+char *cleanpath_read(struct CleanPath *path);
+void cleanpath_free(struct CleanPath *path);
+
+#endif //CLEANPATH_CLEANPATH_H