From 2d4d6787c4bc62042be4a58a4791074ab2c6a89e Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 4 Feb 2022 11:23:27 -0500 Subject: regex: Add support for emacs and grep types --- regex.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'regex.h') diff --git a/regex.h b/regex.h index 1a95239..b466ba8 100644 --- a/regex.h +++ b/regex.h @@ -24,4 +24,42 @@ # include #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 -- cgit v1.2.3