diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2022-02-24 15:56:08 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2022-02-24 16:28:58 -0500 |
commit | 82f7f9ee1849947ed6de227279e623d8fc3a1ee1 (patch) | |
tree | 479c64bf8d92cfdd1ccba4bd679fb534a943c6e0 /regex.h | |
parent | b490dc534eedcc9878d4962e6d02baf4217a712f (diff) | |
download | bfs-82f7f9ee1849947ed6de227279e623d8fc3a1ee1.tar.xz |
regex: Rework error handling
Diffstat (limited to 'regex.h')
-rw-r--r-- | regex.h | 30 |
1 files changed, 12 insertions, 18 deletions
@@ -18,8 +18,6 @@ #ifndef BFS_REGEX_H #define BFS_REGEX_H -#include <stdbool.h> - /** * A compiled regular expression. */ @@ -54,34 +52,32 @@ enum bfs_regexec_flags { /** * Wrapper for regcomp() that supports additional regex types. * - * @param expr + * @param[out] preg + * Will hold the compiled regex. + * @param pattern * The regular expression to compile. * @param type * The regular expression syntax to use. * @param flags * Regex compilation flags. - * @param[out] err - * Will hold the error code if compilation fails. * @return - * The compiled regular expression, or NULL on error. + * 0 on success, -1 on failure. */ -struct bfs_regex *bfs_regcomp(const char *expr, enum bfs_regex_type type, enum bfs_regcomp_flags flags, int *err); +int bfs_regcomp(struct bfs_regex **preg, const char *pattern, enum bfs_regex_type type, enum bfs_regcomp_flags flags); /** * Wrapper for regexec(). * - * @param expr + * @param regex * The regular expression to execute. * @param str * The string to match against. * @param flags * Regex execution flags. - * @param[out] err - * Will hold the error code if execution fails. * @return - * Whether the regex matched. + * 1 for a match, 0 for no match, -1 on failure. */ -bool bfs_regexec(struct bfs_regex *regex, const char *str, enum bfs_regexec_flags flags, int *err); +int bfs_regexec(struct bfs_regex *regex, const char *str, enum bfs_regexec_flags flags); /** * Free a compiled regex. @@ -89,15 +85,13 @@ bool bfs_regexec(struct bfs_regex *regex, const char *str, enum bfs_regexec_flag void bfs_regfree(struct bfs_regex *regex); /** - * Dynamically allocate a regex error message. + * Get a human-readable regex error message. * - * @param err - * The error code to stringify. * @param regex - * The compiled regex, or NULL if compilation failed. + * The compiled regex. * @return - * A human-readable description of the error, allocated with malloc(). + * A human-readable description of the error, which should be free()'d. */ -char *bfs_regerror(int err, const struct bfs_regex *regex); +char *bfs_regerror(const struct bfs_regex *regex); #endif // BFS_REGEX_H |