• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Test for the STOP parameter of re_match_2 and re_search_2.
2    Copyright (C) 2002 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4    Contributed by Stepan Kasal <kasal@math.cas.cz>, 2002.
5 
6    The GNU C Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
10 
11    The GNU C Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15 
16    You should have received a copy of the GNU Lesser General Public
17    License along with the GNU C Library; if not, write to the Free
18    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19    02110-1301 USA.  */
20 
21 #ifdef HAVE_CONFIG_H
22 #include "config.h"
23 #endif
24 
25 #include <locale.h>
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <string.h>
29 #include <sys/types.h>
30 #include <regex.h>
31 
32 
33 int
main(void)34 main (void)
35 {
36   struct re_pattern_buffer regex;
37   const char *s;
38   int match[4];
39 
40   memset (&regex, '\0', sizeof (regex));
41 
42   s = re_compile_pattern ("xy$", 3, &regex);
43   if (s != NULL)
44     {
45       puts ("failed to compile pattern \"xy$\"");
46       return 1;
47     }
48   else
49     match[0] = re_match_2(&regex,"xyz",3,NULL,0,0,NULL,2);
50 
51   free (regex.buffer);
52   memset (&regex, '\0', sizeof (regex));
53 
54   s = re_compile_pattern ("xy\\>", 4, &regex);
55   if (s != NULL)
56     {
57       puts ("failed to compile pattern \"xy\\>\"");
58       return 1;
59     }
60   else
61     match[1] = re_search_2(&regex,"xyz",3,NULL,0,0,2,NULL,2);
62 
63   free (regex.buffer);
64   memset (&regex, '\0', sizeof (regex));
65 
66   s = re_compile_pattern ("xy \\<", 5, &regex);
67   if (s != NULL)
68     {
69       puts ("failed to compile pattern \"xy \\<\"");
70       return 1;
71     }
72   else
73     {
74       match[2] = re_match_2(&regex,"xy  ",4,NULL,0,0,NULL,3);
75       match[3] = re_match_2(&regex,"xy z",4,NULL,0,0,NULL,3);
76     }
77 
78   if (match[0] != -1 || match[1] != -1 || match[2] != -1 || match[3] != 3)
79     {
80       printf ("re_{match,search}_2 returned %d,%d,%d,%d, expected -1,-1,-1,3\n",
81 		match[0], match[1], match[2], match[3]);
82       return 1;
83     }
84 
85   puts (" -> OK");
86 
87   return 0;
88 }
89