diff options
Diffstat (limited to 'third_party/git/t/helper/test-regex.c')
-rw-r--r-- | third_party/git/t/helper/test-regex.c | 76 |
1 files changed, 0 insertions, 76 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 10284cc56f..0000000000 --- a/third_party/git/t/helper/test-regex.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "test-tool.h" -#include "git-compat-util.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 }, -#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 flags = 0; - regex_t r; - regmatch_t m[1]; - - if (argc == 2 && !strcmp(argv[1], "--bug")) - return test_regex_bug(); - else if (argc < 3) - usage("test-tool regex --bug\n" - "test-tool regex <pattern> <string> [<options>]"); - - argv++; - pat = *argv++; - 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 %s", *argv); - argv++; - } - git_setup_gettext(); - - if (regcomp(&r, pat, flags)) - die("failed regcomp() for pattern '%s'", pat); - if (regexec(&r, str, 1, m, 0)) - return 1; - - return 0; -} |