This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
I am enclosing testcase here. According to regex.h, /* If this bit is set, either \{...\} or {...} defines an interval, depending on RE_NO_BK_BRACES. If not set, \{, \}, {, and } are literals. */ #define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) /* If this bit is set, then `{...}' defines an interval, and \{ and \} are literals. If not set, then `\{...\}' defines an interval. */ #define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1) When RE_INTERVALS is set and RE_NO_BK_BRACES is not set, \{...\} define an interval. Did I miss something? H.J. ---- #include <stdio.h> #include <regex.h> int main () { static struct re_pattern_buffer regex; const char *s; re_set_syntax (RE_SYNTAX_POSIX_EGREP); printf ("syntax: RE_NO_BK_BRACES: %d, RE_INTERVALS: %d\n", re_syntax_options & RE_NO_BK_BRACES, re_syntax_options & RE_INTERVALS); s = re_compile_pattern ("\\{1", 2, ®ex); printf ("\\{1: %s\n", s ? "FAIL" : "PASS"); s = re_compile_pattern ("{1", 2, ®ex); printf ("{1: %s\n", s ? "PASS" : "FAIL"); re_syntax_options &= ~RE_NO_BK_BRACES; printf ("syntax: RE_NO_BK_BRACES: %d, RE_INTERVALS: %d\n", re_syntax_options & RE_NO_BK_BRACES, re_syntax_options & RE_INTERVALS); s = re_compile_pattern ("\\{1", 2, ®ex); printf ("\\{1: %s\n", s ? "PASS" : "FAIL"); s = re_compile_pattern ("{1", 2, ®ex); printf ("{1: %s\n", s ? "FAIL" : "PASS"); return 0; } ---- -- H.J. Lu (hjl@gnu.org) --- 2000-03-08 H.J. Lu <hjl@gnu.org> * posix/regex.c (regex_compile): Correctly handle "\{" when the RE_INTERVALS is set and the RE_NO_BK_BRACES bit is not set. Index: posix/regex.c =================================================================== RCS file: /work/cvs/gnu/glibc-2.1/posix/regex.c,v retrieving revision 1.1.1.32 diff -u -p -r1.1.1.32 regex.c --- posix/regex.c 2000/02/24 18:05:37 1.1.1.32 +++ posix/regex.c 2000/03/08 21:26:58 @@ -2604,8 +2604,7 @@ regex_compile (pattern, size, syntax, bu if (!(syntax & RE_INTERVALS) /* If we're at `\{' and it's not the open-interval operator. */ - || ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES)) - || (p - 2 == pattern && p == pend)) + || (syntax & RE_NO_BK_BRACES)) goto normal_backslash; handle_interval:
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |