From b3b326510806ebb2459bd6d3f17213e4748bcce0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 23 Apr 2016 11:31:39 +0300 Subject: Allow the test suite to proceed when "pty1" fails. --- pc/ChangeLog | 4 ++++ pc/Makefile.tst | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pc/ChangeLog b/pc/ChangeLog index 309369b1..56417a7b 100644 --- a/pc/ChangeLog +++ b/pc/ChangeLog @@ -1,3 +1,7 @@ +2016-04-23 Eli Zaretskii + + * Makefile.tst (pty1): Ignore errors (happens with MinGW). + 2016-04-17 Scott Deifik * Makefile.tst: Sync with mainline. diff --git a/pc/Makefile.tst b/pc/Makefile.tst index 9d0cfdcf..966bde4f 100644 --- a/pc/Makefile.tst +++ b/pc/Makefile.tst @@ -1271,7 +1271,7 @@ watchpoint1: pty1: @echo $@ @echo Expect pty1 to fail with DJGPP and MinGW. - @case `uname` in \ + @-case `uname` in \ *[Oo][Ss]/390*) : ;; \ *) AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ;; \ -- cgit v1.2.3 From 82242cb6dfd7ca365ab65966a648b7cf884a1859 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sun, 24 Apr 2016 18:04:29 +0300 Subject: Make pty1 test ignore errors. --- test/ChangeLog | 4 ++++ test/Makefile.am | 2 +- test/Makefile.in | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/test/ChangeLog b/test/ChangeLog index 1b1648ba..be9eb7db 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +2016-04-24 Arnold D. Robbins + + * Makefile.am (pty1): Ignore errors. + 2016-04-17 Arnold D. Robbins * Makefile.am (pty1): Really disable test on z/OS. diff --git a/test/Makefile.am b/test/Makefile.am index 8ffe7dbc..be25403e 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -2134,7 +2134,7 @@ watchpoint1: pty1: @echo $@ - @case `uname` in \ + @-case `uname` in \ *[Oo][Ss]/390*) : ;; \ *) AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ;; \ diff --git a/test/Makefile.in b/test/Makefile.in index c5bca01f..201f4363 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -271,6 +271,7 @@ pkgextensiondir = @pkgextensiondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -2573,7 +2574,7 @@ watchpoint1: pty1: @echo $@ - @case `uname` in \ + @-case `uname` in \ *[Oo][Ss]/390*) : ;; \ *) AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ;; \ -- cgit v1.2.3 From c65ebdef5333b1a9b891d4235367dc158d3f05b4 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sun, 24 Apr 2016 18:07:11 +0300 Subject: Sync dfa.c with grep. --- ChangeLog | 4 ++++ dfa.c | 70 ++++++++++++++++++++++++--------------------------------------- 2 files changed, 31 insertions(+), 43 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5a525177..bb61054a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-04-24 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + 2016-04-11 Arnold D. Robbins * regex_internal.c: Replace _GL_ATTRIBUTE_PURE with diff --git a/dfa.c b/dfa.c index 76d3fab9..fff45996 100644 --- a/dfa.c +++ b/dfa.c @@ -385,11 +385,6 @@ struct dfa */ int *multibyte_prop; - /* A table indexed by byte values that contains the corresponding wide - character (if any) for that byte. WEOF means the byte is not a - valid single-byte character. */ - wint_t mbrtowc_cache[NOTCHAR]; - /* Array of the bracket expression in the DFA. */ struct mb_char_classes *mbcsets; size_t nmbcsets; @@ -466,19 +461,10 @@ struct dfa static void regexp (void); -static void -dfambcache (struct dfa *d) -{ - int i; - for (i = CHAR_MIN; i <= CHAR_MAX; ++i) - { - char c = i; - unsigned char uc = i; - mbstate_t s = { 0 }; - wchar_t wc; - d->mbrtowc_cache[uc] = mbrtowc (&wc, &c, 1, &s) <= 1 ? wc : WEOF; - } -} +/* A table indexed by byte values that contains the corresponding wide + character (if any) for that byte. WEOF means the byte is not a + valid single-byte character. */ +static wint_t mbrtowc_cache[NOTCHAR]; /* Store into *PWC the result of converting the leading bytes of the multibyte buffer S of length N bytes, using the mbrtowc_cache in *D @@ -501,7 +487,7 @@ static size_t mbs_to_wchar (wint_t *pwc, char const *s, size_t n, struct dfa *d) { unsigned char uc = s[0]; - wint_t wc = d->mbrtowc_cache[uc]; + wint_t wc = mbrtowc_cache[uc]; if (wc == WEOF) { @@ -706,25 +692,18 @@ static charclass letters; /* Set of characters that are newline. */ static charclass newline; -/* Add this to the test for whether a byte is word-constituent, since on - BSD-based systems, many values in the 128..255 range are classified as - alphabetic, while on glibc-based systems, they are not. */ -#ifdef __GLIBC__ -# define is_valid_unibyte_character(c) 1 -#else -# define is_valid_unibyte_character(c) (btowc (c) != WEOF) -#endif - -/* C is a "word-constituent" byte. */ -#define IS_WORD_CONSTITUENT(C) \ - (is_valid_unibyte_character (C) && (isalnum (C) || (C) == '_')) +static bool +unibyte_word_constituent (unsigned char c) +{ + return mbrtowc_cache[c] != WEOF && (isalnum (c) || (c) == '_'); +} static int char_context (unsigned char c) { if (c == eolbyte) return CTX_NEWLINE; - if (IS_WORD_CONSTITUENT (c)) + if (unibyte_word_constituent (c)) return CTX_LETTER; return CTX_NONE; } @@ -743,23 +722,29 @@ wchar_context (wint_t wc) void dfasyntax (reg_syntax_t bits, int fold, unsigned char eol) { - unsigned int i; - + int i; syntax_bits_set = 1; syntax_bits = bits; case_fold = fold != 0; eolbyte = eol; - for (i = 0; i < NOTCHAR; ++i) + for (i = CHAR_MIN; i <= CHAR_MAX; ++i) { - sbit[i] = char_context (i); - switch (sbit[i]) + char c = i; + unsigned char uc = i; + mbstate_t s = { 0 }; + wchar_t wc; + mbrtowc_cache[uc] = mbrtowc (&wc, &c, 1, &s) <= 1 ? wc : WEOF; + + /* Now that mbrtowc_cache[uc] is set, use it to calculate sbit. */ + sbit[uc] = char_context (uc); + switch (sbit[uc]) { case CTX_LETTER: - setbit (i, letters); + setbit (uc, letters); break; case CTX_NEWLINE: - setbit (i, newline); + setbit (uc, newline); break; } } @@ -1528,7 +1513,7 @@ lex (void) { zeroset (ccl); for (c2 = 0; c2 < NOTCHAR; ++c2) - if (IS_WORD_CONSTITUENT (c2)) + if (unibyte_word_constituent (c2)) setbit (c2, ccl); if (c == 'W') notset (ccl); @@ -2753,7 +2738,7 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) state_letter = state; for (i = 0; i < NOTCHAR; ++i) - trans[i] = (IS_WORD_CONSTITUENT (i)) ? state_letter : state; + trans[i] = unibyte_word_constituent (i) ? state_letter : state; trans[eolbyte] = state_newline; } else @@ -2859,7 +2844,7 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) if (c == eolbyte) trans[c] = state_newline; - else if (IS_WORD_CONSTITUENT (c)) + else if (unibyte_word_constituent (c)) trans[c] = state_letter; else if (c < NOTCHAR) trans[c] = state; @@ -3666,7 +3651,6 @@ void dfacomp (char const *s, size_t len, struct dfa *d, int searchflag) { dfainit (d); - dfambcache (d); dfaparse (s, len, d); dfassbuild (d); -- cgit v1.2.3