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