/* See LICENSE file for copyright and license details. */ #include #include #include #include #include #include "util.h" void die(const char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); if (fmt[0] && fmt[strlen(fmt)-1] == ':') { fputc(' ', stderr); perror(NULL); } else { fputc('\n', stderr); } exit(1); } void * ecalloc(size_t nmemb, size_t size) { void *p; if (!(p = calloc(nmemb, size))) die("calloc:"); return p; } int reMatch(const char *regex, const char *str) { char reErr[1024] = {0}; regex_t *re = calloc(1, sizeof(regex_t)); int rc = 0; if (!re) return -1; rc = regcomp(re, regex, REG_EXTENDED|REG_ICASE|REG_NOSUB); if (rc != 0) { regerror(rc, re, reErr, 1024); regfree(re); re = NULL; fprintf(stderr, "Regex compile err: %s %s\n", regex, reErr); return -1; } rc = regexec(re, str, 0, NULL, 0); regfree(re); re = NULL; if (rc != 0) { regerror(rc, re, reErr, 1024); fprintf(stderr, "Regex match error: %s -> %s : %s\n", regex, str, reErr); return -1; } return rc; }