#include "cleanregex.h" #include #include #include char* clstocs(CleanString* cs) { char* s = calloc(CleanStringLength(cs) + 1, 1); uint8_t i; for (i = 0; i < CleanStringLength(cs); i++) s[i] = CleanStringCharacters(cs)[i]; s[i] = 0; return s; } void cleanrgx_compile( CleanString* cs, int64_t flags, int64_t* re_code, int64_t* re_regex) { char* s = (char*) clstocs(cs); regex_t* regex = malloc(sizeof(regex_t*)); *re_code = regcomp(regex, s, flags); *re_regex = (int64_t) regex; free(s); } int64_t cleanrgx_exec(int64_t* rgx, int64_t flags, CleanString* cs) { char* s = (char*) clstocs(cs); int64_t result = regexec((regex_t*) rgx, s, 0, NULL, flags); free(s); if (!result) { return 1; } else if (result == REG_NOMATCH) { return 0; } else { return -1; } } void cleanrgx_free(regex_t* rgx) { regfree(rgx); }