1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21: #include <locale.h>
22: #include <stdio.h>
23: #include <stdlib.h>
24: #include <string.h>
25: #include <sys/types.h>
26: #include <regex.h>
27:
28:
29: int
30: main (void)
31: {
32: struct re_pattern_buffer regex;
33: struct re_registers regs;
34: const char *s;
35: int match, n;
36: int result = 0;
37:
38: memset (®ex, '\0', sizeof (regex));
39: regs.start = regs.end = NULL;
40: regs.num_regs = 0;
41: s = re_compile_pattern ("a", 1, ®ex);
42: if (s != NULL)
43: {
44: puts ("failed to compile pattern \"a\"");
45: result = 1;
46: }
47: else
48: {
49: match = re_search (®ex, "baobab", 6, 0, 6, ®s);
50: n = 1;
51: if (match != 1)
52: {
53: printf ("re_search returned %d, expected 1\n", match);
54: result = 1;
55: }
56: else if (regs.num_regs <= n || regs.start[n] != -1 || regs.end[n] != -1)
57: {
58: puts ("re_search failed to fill the -1 sentinel");
59: result = 1;
60: }
61: }
62:
63: free (regex.buffer);
64: memset (®ex, '\0', sizeof (regex));
65:
66: s = re_compile_pattern ("\\(\\(\\(a\\)\\)\\)", 13, ®ex);
67: if (s != NULL)
68: {
69: puts ("failed to compile pattern /\\(\\(\\(a\\)\\)\\)/");
70: result = 1;
71: }
72: else
73: {
74: match = re_match (®ex, "apl", 3, 0, ®s);
75: n = 4;
76: if (match != 1)
77: {
78: printf ("re_match returned %d, expected 1\n", match);
79: result = 1;
80: }
81: else if (regs.num_regs <= n || regs.start[n] != -1 || regs.end[n] != -1)
82: {
83: puts ("re_match failed to fill the -1 sentinel");
84: result = 1;
85: }
86: }
87:
88: if (result == 0)
89: puts (" -> OK");
90:
91: return result;
92: }