mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 04:50:07 +00:00
[BZ #693]
Update. 2005-01-26 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER_TLS_STORE): Remove unnecessary 0 imm. [BZ #693] * posix/regex_internal.h (DUMMY_CONSTRAINT): Rename to... (WORD_DELIM_CONSTRAINT): ...this. (NOT_WORD_DELIM_CONSTRAINT): Define. (re_context_type): Add INSIDE_NOTWORD and NOT_WORD_DELIM, change WORD_DELIM to use WORD_DELIM_CONSTRAINT. * posix/regcomp.c (peek_token): For \B create NOT_WORD_DELIM anchor instead of INSIDE_WORD. (parse_expression): Handle NOT_WORD_DELIM constraint. * posix/bug-regex19.c (tests): Adjust tests that relied on \B being inside word instead of not word delim. * posix/tst-rxspencer.c (mb_frob_pattern): Don't frob escaped characters. * posix/rxspencer/tests: Add some new tests.
This commit is contained in:
parent
550aafb9c1
commit
24992143d8
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
||||
2005-01-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/sysdep.h
|
||||
(SYSCALL_ERROR_HANDLER_TLS_STORE): Remove unnecessary 0 imm.
|
||||
|
||||
[BZ #693]
|
||||
* posix/regex_internal.h (DUMMY_CONSTRAINT): Rename to...
|
||||
(WORD_DELIM_CONSTRAINT): ...this.
|
||||
(NOT_WORD_DELIM_CONSTRAINT): Define.
|
||||
(re_context_type): Add INSIDE_NOTWORD and NOT_WORD_DELIM,
|
||||
change WORD_DELIM to use WORD_DELIM_CONSTRAINT.
|
||||
* posix/regcomp.c (peek_token): For \B create NOT_WORD_DELIM
|
||||
anchor instead of INSIDE_WORD.
|
||||
(parse_expression): Handle NOT_WORD_DELIM constraint.
|
||||
* posix/bug-regex19.c (tests): Adjust tests that relied on \B
|
||||
being inside word instead of not word delim.
|
||||
* posix/tst-rxspencer.c (mb_frob_pattern): Don't frob escaped
|
||||
characters.
|
||||
* posix/rxspencer/tests: Add some new tests.
|
||||
|
||||
2005-01-14 GOTO Masanori <gotom@debian.or.jp>
|
||||
|
||||
* sunrpc/rpc_main.c (s_output): Generate #include <rpc/pmap_clnt.h>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Regular expression tests.
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
|
||||
|
||||
@ -170,22 +170,22 @@ static struct test_s
|
||||
{ERE, "[^k]\\B[^k]", "kBk", 0, -1},
|
||||
{ERE, "[^C]\\B[^C]", "CCCABA", 0, 3},
|
||||
{ERE, "[^C]\\B[^C]", "CBC", 0, -1},
|
||||
{ERE, ".(\\b|\\B).", "=~AB", 0, 1},
|
||||
{ERE, ".(\\b|\\B).", "=~AB", 0, 0},
|
||||
{ERE, ".(\\b|\\B).", "A=C", 0, 0},
|
||||
{ERE, ".(\\b|\\B).", "ABC", 0, 0},
|
||||
{ERE, ".(\\b|\\B).", "=~\\!", 0, -1},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~AB", 0, 1},
|
||||
{ERE, ".(\\b|\\B).", "=~\\!", 0, 0},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~AB", 0, 0},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "A=C", 0, 0},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "ABC", 0, 0},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~kBD", 0, 3},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~\\!", 0, -1},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~kB", 0, -1},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~AB", 0, 1},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~kBD", 0, 0},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~\\!", 0, 0},
|
||||
{ERE, "[^k](\\b|\\B)[^k]", "=~kB", 0, 0},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~AB", 0, 0},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "A=C", 0, 0},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "ABC", 0, 0},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~CBD", 0, 3},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~\\!", 0, -1},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~CB", 0, -1},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~CBD", 0, 0},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~\\!", 0, 0},
|
||||
{ERE, "[^C](\\b|\\B)[^C]", "=~CB", 0, 0},
|
||||
{ERE, "\\b([A]|[!]|.B)", "A=AC", 0, 0},
|
||||
{ERE, "\\b([A]|[!]|.B)", "=AC", 0, 1},
|
||||
{ERE, "\\b([A]|[!]|.B)", "!AC", 0, 1},
|
||||
|
@ -1859,7 +1859,7 @@ peek_token (token, input, syntax)
|
||||
if (!(syntax & RE_NO_GNU_OPS))
|
||||
{
|
||||
token->type = ANCHOR;
|
||||
token->opr.ctx_type = INSIDE_WORD;
|
||||
token->opr.ctx_type = NOT_WORD_DELIM;
|
||||
}
|
||||
break;
|
||||
case 'w':
|
||||
@ -2349,15 +2349,25 @@ parse_expression (regexp, preg, token, syntax, nest, err)
|
||||
break;
|
||||
case ANCHOR:
|
||||
if ((token->opr.ctx_type
|
||||
& (WORD_DELIM | INSIDE_WORD | WORD_FIRST | WORD_LAST))
|
||||
& (WORD_DELIM | NOT_WORD_DELIM | WORD_FIRST | WORD_LAST))
|
||||
&& dfa->word_ops_used == 0)
|
||||
init_word_char (dfa);
|
||||
if (token->opr.ctx_type == WORD_DELIM)
|
||||
if (token->opr.ctx_type == WORD_DELIM
|
||||
|| token->opr.ctx_type == NOT_WORD_DELIM)
|
||||
{
|
||||
bin_tree_t *tree_first, *tree_last;
|
||||
if (token->opr.ctx_type == WORD_DELIM)
|
||||
{
|
||||
token->opr.ctx_type = WORD_FIRST;
|
||||
tree_first = re_dfa_add_tree_node (dfa, NULL, NULL, token);
|
||||
token->opr.ctx_type = WORD_LAST;
|
||||
}
|
||||
else
|
||||
{
|
||||
token->opr.ctx_type = INSIDE_WORD;
|
||||
tree_first = re_dfa_add_tree_node (dfa, NULL, NULL, token);
|
||||
token->opr.ctx_type = INSIDE_NOTWORD;
|
||||
}
|
||||
tree_last = re_dfa_add_tree_node (dfa, NULL, NULL, token);
|
||||
token->type = OP_ALT;
|
||||
tree = re_dfa_add_tree_node (dfa, tree_first, tree_last, token);
|
||||
|
@ -526,3 +526,12 @@ a((b+|((c)*)))+d - abcd abcd c,c,c,c
|
||||
(((\b))){0} - x @x -,-,-
|
||||
a(((.*)))b((\2)){0}c - abc abc @bc,@bc,@bc,-,-
|
||||
a(((.*)))b((\1)){0}c - axbc axbc x,x,x,-,-
|
||||
|
||||
\b & SaT @aT
|
||||
\b & aT @aT
|
||||
a.*\b & abT ab
|
||||
\b & STSS
|
||||
\B & abc @bc
|
||||
\B & aSbTc
|
||||
\B & SaT @SaT
|
||||
\B & aSTSb @TSb
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Regular expression tests.
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
|
||||
|
||||
@ -127,14 +127,15 @@ mb_frob_string (const char *str, const char *letters)
|
||||
}
|
||||
|
||||
/* Like mb_frob_string, but don't replace anything between
|
||||
[: and :], [. and .] or [= and =]. */
|
||||
[: and :], [. and .] or [= and =] or characters escaped
|
||||
with a backslash. */
|
||||
|
||||
static char *
|
||||
mb_frob_pattern (const char *str, const char *letters)
|
||||
{
|
||||
char *ret, *dst;
|
||||
const char *src;
|
||||
int in_class = 0;
|
||||
int in_class = 0, escaped = 0;
|
||||
|
||||
if (str == NULL)
|
||||
return NULL;
|
||||
@ -144,7 +145,18 @@ mb_frob_pattern (const char *str, const char *letters)
|
||||
return NULL;
|
||||
|
||||
for (src = str, dst = ret; *src; ++src)
|
||||
if (!in_class && strchr (letters, *src))
|
||||
if (*src == '\\')
|
||||
{
|
||||
escaped ^= 1;
|
||||
*dst++ = *src;
|
||||
}
|
||||
else if (escaped)
|
||||
{
|
||||
escaped = 0;
|
||||
*dst++ = *src;
|
||||
continue;
|
||||
}
|
||||
else if (!in_class && strchr (letters, *src))
|
||||
dst = mb_replace (dst, *src);
|
||||
else
|
||||
{
|
||||
|
@ -159,7 +159,7 @@ __i686.get_pc_thunk.reg: \
|
||||
jmp L(pseudo_end);
|
||||
# ifndef NO_TLS_DIRECT_SEG_REFS
|
||||
# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \
|
||||
movl src, %gs:0(destoff)
|
||||
movl src, %gs:(destoff)
|
||||
# else
|
||||
# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \
|
||||
addl %gs:0, destoff; \
|
||||
|
Loading…
Reference in New Issue
Block a user