diff options
Diffstat (limited to 'third_party/git/t/helper/test-regex.c')
-rw-r--r-- | third_party/git/t/helper/test-regex.c | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/third_party/git/t/helper/test-regex.c b/third_party/git/t/helper/test-regex.c deleted file mode 100644 index d6f28ca8d148..000000000000 --- a/third_party/git/t/helper/test-regex.c +++ /dev/null @@ -1,114 +0,0 @@ -#include "test-tool.h" -#include "gettext.h" - -struct reg_flag { - const char *name; - int flag; -}; - -static struct reg_flag reg_flags[] = { - { "EXTENDED", REG_EXTENDED }, - { "NEWLINE", REG_NEWLINE }, - { "ICASE", REG_ICASE }, - { "NOTBOL", REG_NOTBOL }, - { "NOTEOL", REG_NOTEOL }, -#ifdef REG_STARTEND - { "STARTEND", REG_STARTEND }, -#endif - { NULL, 0 } -}; - -static int test_regex_bug(void) -{ - char *pat = "[^={} \t]+"; - char *str = "={}\nfred"; - regex_t r; - regmatch_t m[1]; - - if (regcomp(&r, pat, REG_EXTENDED | REG_NEWLINE)) - die("failed regcomp() for pattern '%s'", pat); - if (regexec(&r, str, 1, m, 0)) - die("no match of pattern '%s' to string '%s'", pat, str); - - /* http://sourceware.org/bugzilla/show_bug.cgi?id=3957 */ - if (m[0].rm_so == 3) /* matches '\n' when it should not */ - die("regex bug confirmed: re-build git with NO_REGEX=1"); - - return 0; -} - -int cmd__regex(int argc, const char **argv) -{ - const char *pat; - const char *str; - int ret, silent = 0, flags = 0; - regex_t r; - regmatch_t m[1]; - char errbuf[64]; - - argv++; - argc--; - - if (!argc) - goto usage; - - if (!strcmp(*argv, "--bug")) { - if (argc == 1) - return test_regex_bug(); - else - goto usage; - } - if (!strcmp(*argv, "--silent")) { - silent = 1; - argv++; - argc--; - } - if (!argc) - goto usage; - - pat = *argv++; - if (argc == 1) - str = NULL; - else { - str = *argv++; - while (*argv) { - struct reg_flag *rf; - for (rf = reg_flags; rf->name; rf++) - if (!strcmp(*argv, rf->name)) { - flags |= rf->flag; - break; - } - if (!rf->name) - die("do not recognize flag %s", *argv); - argv++; - } - } - git_setup_gettext(); - - ret = regcomp(&r, pat, flags); - if (ret) { - if (silent) - return ret; - - regerror(ret, &r, errbuf, sizeof(errbuf)); - die("failed regcomp() for pattern '%s' (%s)", pat, errbuf); - } - if (!str) - return 0; - - ret = regexec(&r, str, 1, m, 0); - if (ret) { - if (silent || ret == REG_NOMATCH) - return ret; - - regerror(ret, &r, errbuf, sizeof(errbuf)); - die("failed regexec() for subject '%s' (%s)", str, errbuf); - } - - return 0; -usage: - usage("\ttest-tool regex --bug\n" - "\ttest-tool regex [--silent] <pattern>\n" - "\ttest-tool regex [--silent] <pattern> <string> [<options>]"); - return -1; -} |