summaryrefslogtreecommitdiffstats
path: root/regex.h
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2022-02-04 11:23:27 -0500
committerTavian Barnes <tavianator@tavianator.com>2022-02-04 11:28:22 -0500
commit2d4d6787c4bc62042be4a58a4791074ab2c6a89e (patch)
tree0753c783533afc2bc3362f73ba3e8c2e45f1e65b /regex.h
parentd83ffb41c7f5d42bfb43a19e38ab3d1331f0d86e (diff)
downloadbfs-2d4d6787c4bc62042be4a58a4791074ab2c6a89e.tar.xz
regex: Add support for emacs and grep types
Diffstat (limited to 'regex.h')
-rw-r--r--regex.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/regex.h b/regex.h
index 1a95239..b466ba8 100644
--- a/regex.h
+++ b/regex.h
@@ -24,4 +24,42 @@
# include <regex.h>
#endif
+/**
+ * Regex syntax flavors.
+ */
+enum bfs_regex_type {
+ BFS_REGEX_POSIX_BASIC,
+ BFS_REGEX_POSIX_EXTENDED,
+ BFS_REGEX_EMACS,
+ BFS_REGEX_GREP,
+};
+
+/**
+ * Wrapper for regcomp() that supports additional regex types.
+ *
+ * @param preg
+ * The compiled regex.
+ * @param regex
+ * The regular expression to compile.
+ * @param cflags
+ * Regex compilation flags.
+ * @param type
+ * The regular expression syntax to use.
+ * @return
+ * 0 on success, or an error code on failure.
+ */
+int bfs_regcomp(regex_t *preg, const char *regex, int cflags, enum bfs_regex_type type);
+
+/**
+ * Dynamically allocate a regex error message.
+ *
+ * @param err
+ * The error code to stringify.
+ * @param regex
+ * The compiled regex, or NULL if compilation failed.
+ * @return
+ * A human-readable description of the error, allocated with malloc().
+ */
+char *bfs_regerror(int err, const regex_t *regex);
+
#endif // BFS_REGEX_H