1// [^aBcC] with REG_ICASE should match d,D but not a,A,b,B,c,C according to
2// http://austingroupbugs.net/view.php?id=872
3#include <regex.h>
4#include <limits.h>
5#include <stdio.h>
6#include "test.h"
7
8int main(void)
9{
10	char buf[100];
11	char *pat;
12	regex_t re;
13	int n, i;
14	struct {
15		char *s;
16		int n;
17	} t[] = {
18		{"a", REG_NOMATCH},
19		{"A", REG_NOMATCH},
20		{"b", REG_NOMATCH},
21		{"B", REG_NOMATCH},
22		{"c", REG_NOMATCH},
23		{"C", REG_NOMATCH},
24		{"d", 0},
25		{"D", 0},
26		{0,0}
27	};
28
29	pat = "[^aBcC]";
30	n = regcomp(&re, pat, REG_ICASE);
31	if (n) {
32		regerror(n, &re, buf, sizeof buf);
33		t_error("regcomp(\"%s\") failed: %d (%s)\n", pat, n, buf);
34	}
35
36	for (i = 0; t[i].s; i++) {
37		n = regexec(&re, t[i].s, 0, 0, 0);
38		if (n != t[i].n) {
39			regerror(n, &re, buf, sizeof buf);
40			t_error("regexec(/%s/, \"%s\") returned %d (%s), wanted %d\n",
41				pat, t[i].s, n, buf, t[i].n);
42		}
43	}
44
45	return t_status;
46}
47