-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2003-11-12 Jakub Jelinek <jakub@redhat.com> * io/ftw.c (NFTW_NEW_NAME, NFTW_OLD_NAME): Add prototypes. 2003-11-12 Jakub Jelinek <jakub@redhat.com> * posix/tst-regex.c (umemlen): New variable. (test_expr): Add expectedicase argument. Test case insensitive searches as well as backwards searches (case sensitive and insensitive) too. (run_test): Add icase argument. Use it to compute regcomp flags. (run_test_backwards): New function. (main): Cast read to size_t to avoid warning. Set umemlen. Add expectedicase arguments to test_expr. * posix/regex_internal.c (re_string_reconstruct): If is_utf8, find previous character by walking back instead of converting all chars from beginning. 2003-11-12 Jakub Jelinek <jakub@redhat.com> * posix/regex_internal.h (struct re_string_t): Add is_utf8 and mb_cur_max fields. (struct re_dfa_t): Likewise. Reorder fields to make structure smaller on 64-bit arches. (re_string_allocate, re_string_construct): Add mb_cur_max and is_utf8 arguments. (re_string_char_size_at, re_string_wchar_at): Use pstr->mb_cur_max instead of MB_CUR_MAX. * posix/regcomp.c (re_compile_fastmap_iter): Use dfa->mb_cur_max instead of MB_CUR_MAX. (re_compile_internal): Pass new arguments to re_string_construct. (init_dfa): Initialize mb_cur_max and is_utf8 fields. (peek_token, peek_token_bracket): Use input->mb_cur_max instead of MB_CUR_MAX. (parse_expression, parse_bracket_exp, parse_charclass_op): Use dfa->mb_cur_max instead of MB_CUR_MAX. * posix/regex_internal.c (re_string_construct_common): Add mb_cur_max and is_utf8 arguments. Initialize fields with them. (re_string_allocate, re_string_construct): Add mb_cur_max and is_utf8 arguments, pass them to re_string_construct_common. Use mb_cur_max instead of MB_CUR_MAX. (re_string_realloc_buffers): Use pstr->mb_cur_max instead of MB_CUR_MAX. (re_string_reconstruct): Likewise. (re_string_context_at): Use input->mb_cur_max instead of MB_CUR_MAX. (create_ci_newstate, create_cd_newstate): Use dfa->mb_cur_max instead of MB_CUR_MAX. * posix/regexec.c (re_search_internal): Likewise. Pass new arguments to re_string_allocate. (check_matching, transit_state_sb): Use dfa->mb_cur_max instead of MB_CUR_MAX. (extend_buffers): Use pstr->mb_cur_max instead of MB_CUR_MAX. 2003-11-12 Jakub Jelinek <jakub@redhat.com> * posix/Makefile (tests): Add bug-regex19. (bug-regex19-ENV): Add LOCPATH. * posix/bug-regex19.c: New test.
- Loading branch information
Ulrich Drepper
committed
Nov 12, 2003
1 parent
e432c03
commit 3c0fb57
Showing
9 changed files
with
409 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
/* Regular expression tests. | ||
Copyright (C) 2003 Free Software Foundation, Inc. | ||
This file is part of the GNU C Library. | ||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. | ||
The GNU C Library is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU Lesser General Public | ||
License as published by the Free Software Foundation; either | ||
version 2.1 of the License, or (at your option) any later version. | ||
The GNU C Library is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public | ||
License along with the GNU C Library; if not, write to the Free | ||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
02111-1307 USA. */ | ||
|
||
#include <sys/types.h> | ||
#include <mcheck.h> | ||
#include <regex.h> | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <locale.h> | ||
|
||
static struct | ||
{ | ||
int syntax; | ||
const char *pattern; | ||
const char *string; | ||
int start, res; | ||
} tests[] = { | ||
/* \xc3\x84 LATIN CAPITAL LETTER A WITH DIAERESIS | ||
\xc3\x96 LATIN CAPITAL LETTER O WITH DIAERESIS | ||
\xe2\x80\x94 EM DASH */ | ||
/* Should not match. */ | ||
{RE_SYNTAX_POSIX_BASIC, "\\<A", "aOAA", 2, -1}, | ||
{RE_SYNTAX_POSIX_BASIC, "A\\>", "aAAO", 1, -1}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\bA", "aOAA", 2, -1}, | ||
{RE_SYNTAX_POSIX_BASIC, "A\\b", "aAAO", 1, -1}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\<\xc3\x84", "a\xc3\x96\xc3\x84\xc3\x84", 3, -1}, | ||
{RE_SYNTAX_POSIX_BASIC, "\xc3\x84\\>", "a\xc3\x84\xc3\x84\xc3\x96", 1, -1}, | ||
#if 0 | ||
/* XXX Not used since they fail so far. */ | ||
{RE_SYNTAX_POSIX_BASIC, "\\b\xc3\x84", "a\xc3\x96\xc3\x84\xc3\x84", 3, -1}, | ||
{RE_SYNTAX_POSIX_BASIC, "\xc3\x84\\b", "a\xc3\x84\xc3\x84\xc3\x96", 1, -1}, | ||
#endif | ||
/* Should match. */ | ||
{RE_SYNTAX_POSIX_BASIC, "\\<A", "AA", 0, 0}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\<A", "a-AA", 2, 2}, | ||
{RE_SYNTAX_POSIX_BASIC, "A\\>", "aAA-", 1, 2}, | ||
{RE_SYNTAX_POSIX_BASIC, "A\\>", "aAA", 1, 2}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\bA", "AA", 0, 0}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\bA", "a-AA", 2, 2}, | ||
{RE_SYNTAX_POSIX_BASIC, "A\\b", "aAA-", 1, 2}, | ||
{RE_SYNTAX_POSIX_BASIC, "A\\b", "aAA", 1, 2}, | ||
#if 0 | ||
/* XXX Not used since they fail so far. */ | ||
{RE_SYNTAX_POSIX_BASIC, "\\<\xc3\x84", "\xc3\x84\xc3\x84", 0, 0}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\<\xc3\x84", "a\xe2\x80\x94\xc3\x84\xc3\x84", 4, 4}, | ||
{RE_SYNTAX_POSIX_BASIC, "\xc3\x84\\>", "a\xc3\x84\xc3\x84\xe2\x80\x94", 1, 3}, | ||
{RE_SYNTAX_POSIX_BASIC, "\xc3\x84\\>", "a\xc3\x84\xc3\x84", 1, 3}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\b\xc3\x84", "\xc3\x84\xc3\x84", 0, 0}, | ||
{RE_SYNTAX_POSIX_BASIC, "\\b\xc3\x84", "a\xe2\x80\x94\xc3\x84\xc3\x84", 4, 4}, | ||
{RE_SYNTAX_POSIX_BASIC, "\xc3\x84\\b", "a\xc3\x84\xc3\x84\xe2\x80\x94", 1, 3}, | ||
{RE_SYNTAX_POSIX_BASIC, "\xc3\x84\\b", "a\xc3\x84\xc3\x84", 1, 3} | ||
#endif | ||
}; | ||
|
||
int | ||
main (void) | ||
{ | ||
struct re_pattern_buffer regbuf; | ||
const char *err; | ||
size_t i; | ||
int ret = 0; | ||
|
||
mtrace (); | ||
|
||
setlocale (LC_ALL, "de_DE.UTF-8"); | ||
for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) | ||
{ | ||
int res; | ||
re_set_syntax (tests[i].syntax); | ||
memset (®buf, '\0', sizeof (regbuf)); | ||
err = re_compile_pattern (tests[i].pattern, strlen (tests[i].pattern), | ||
®buf); | ||
if (err != NULL) | ||
{ | ||
printf ("re_compile_pattern failed: %s\n", err); | ||
ret = 1; | ||
continue; | ||
} | ||
|
||
res = re_search (®buf, tests[i].string, strlen (tests[i].string), | ||
tests[i].start, | ||
strlen (tests[i].string) - tests[i].start, NULL); | ||
if (res != tests[i].res) | ||
{ | ||
printf ("re_search %zd failed: %d\n", i, res); | ||
ret = 1; | ||
regfree (®buf); | ||
continue; | ||
} | ||
regfree (®buf); | ||
} | ||
|
||
return ret; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.