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