On 03/03/2014 07:18 PM, Jim Meyering wrote:
You're right. It was only to avoid warnings from gcc, and using #pragmas is a better approach, in a project like grep where we rarely modify that code.
I just now checked, and without the grep diffs there are no warnings when I configure with grep's 'configure --enable-gcc-warnings' on Fedora 20 (gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7)). Possibly GCC got smarter, or possibly the pragmas in gnulib regex now suffice. So I've removed the grep diffs with the attached patch for now; if warnings come back (older compilers maybe?) we can add more pragmas to the gnulib copy.
>From 81ce85033dc269528afd02c82b4ec259a06bb03b Mon Sep 17 00:00:00 2001 From: Paul Eggert <[email protected]> Date: Wed, 5 Mar 2014 11:35:36 -0800 Subject: [PATCH] maint: remove differences from gnulib regex code These don't seem to be needed with GCC 4.8.2, and are making maintenance harder. If we need to disable warnings with older compilers, we can add pragmas to the gnulib versions. See <http://bugs.gnu.org/16911#24>. * gl/lib/regcomp.c.diff, gl/lib/regex_internal.c.diff: * gl/lib/regex_internal.h.diff, gl/lib/regexec.c.diff: Remove. * cfg.mk (exclude_file_name_regexp--sc_prohibit_tab_based_indentation): Don't mention gl/* files. --- cfg.mk | 3 +- gl/lib/regcomp.c.diff | 67 -------------------------------------------- gl/lib/regex_internal.c.diff | 25 ----------------- gl/lib/regex_internal.h.diff | 14 --------- gl/lib/regexec.c.diff | 45 ----------------------------- 5 files changed, 1 insertion(+), 153 deletions(-) delete mode 100644 gl/lib/regcomp.c.diff delete mode 100644 gl/lib/regex_internal.c.diff delete mode 100644 gl/lib/regex_internal.h.diff delete mode 100644 gl/lib/regexec.c.diff diff --git a/cfg.mk b/cfg.mk index ff65455..f8ddade 100644 --- a/cfg.mk +++ b/cfg.mk @@ -86,7 +86,6 @@ exclude_file_name_regexp--sc_bindtextdomain = ^tests/get-mb-cur-max\.c$$ exclude_file_name_regexp--sc_prohibit_strcmp = /colorize-.*\.c$$ exclude_file_name_regexp--sc_prohibit_xalloc_without_use = ^src/kwset\.c$$ exclude_file_name_regexp--sc_prohibit_tab_based_indentation = \ - (Makefile|\.(am|mk)$$|^gl/lib/.*\.c\.diff$$) -exclude_file_name_regexp--sc_space_tab = ^gl/lib/.*\.c\.diff$$ + (Makefile|\.(am|mk)$$) exclude_file_name_regexp--sc_error_message_uppercase = ^src/dfa\.c$$ exclude_file_name_regexp--sc_prohibit_strncpy = ^src/dfa\.c$$ diff --git a/gl/lib/regcomp.c.diff b/gl/lib/regcomp.c.diff deleted file mode 100644 index e965673..0000000 --- a/gl/lib/regcomp.c.diff +++ /dev/null @@ -1,67 +0,0 @@ -diff --git a/lib/regcomp.c b/lib/regcomp.c -index d5968bd..4926676 100644 ---- a/lib/regcomp.c -+++ b/lib/regcomp.c -@@ -541,7 +541,7 @@ regerror (errcode, preg, errbuf, errbuf_size) - size_t errbuf_size; - #else /* size_t might promote */ - size_t --regerror (int errcode, const regex_t *_Restrict_ preg, -+regerror (int errcode, const regex_t *_Restrict_ preg _UNUSED_PARAMETER_, - char *_Restrict_ errbuf, size_t errbuf_size) - #endif - { -@@ -1415,7 +1415,7 @@ calc_first (void *extra, bin_tree_t *node) - - /* Pass 2: compute NEXT on the tree. Preorder visit. */ - static reg_errcode_t --calc_next (void *extra, bin_tree_t *node) -+calc_next (void *extra _UNUSED_PARAMETER_, bin_tree_t *node) - { - switch (node->token.type) - { -@@ -2792,8 +2792,10 @@ build_range_exp (const reg_syntax_t synt - static reg_errcode_t - internal_function - # ifdef RE_ENABLE_I18N --build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset, -- Idx *coll_sym_alloc, const unsigned char *name) -+build_collating_symbol (bitset_t sbcset, -+ re_charset_t *mbcset _UNUSED_PARAMETER_, -+ Idx *coll_sym_alloc _UNUSED_PARAMETER_, -+ const unsigned char *name) - # else /* not RE_ENABLE_I18N */ - build_collating_symbol (bitset_t sbcset, const unsigned char *name) - # endif /* not RE_ENABLE_I18N */ -@@ -3377,7 +3379,8 @@ parse_bracket_exp (re_string_t *regexp, - - static reg_errcode_t - parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp, -- re_token_t *token, int token_len, re_dfa_t *dfa, -+ re_token_t *token, int token_len, -+ re_dfa_t *dfa _UNUSED_PARAMETER_, - reg_syntax_t syntax, bool accept_hyphen) - { - #ifdef RE_ENABLE_I18N -@@ -3464,8 +3467,10 @@ parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp, - - static reg_errcode_t - #ifdef RE_ENABLE_I18N --build_equiv_class (bitset_t sbcset, re_charset_t *mbcset, -- Idx *equiv_class_alloc, const unsigned char *name) -+build_equiv_class (bitset_t sbcset, -+ re_charset_t *mbcset _UNUSED_PARAMETER_, -+ Idx *equiv_class_alloc _UNUSED_PARAMETER_, -+ const unsigned char *name) - #else /* not RE_ENABLE_I18N */ - build_equiv_class (bitset_t sbcset, const unsigned char *name) - #endif /* not RE_ENABLE_I18N */ -@@ -3869,7 +3874,7 @@ free_token (re_token_t *node) - and its children. */ - - static reg_errcode_t --free_tree (void *extra, bin_tree_t *node) -+free_tree (void *extra _UNUSED_PARAMETER_, bin_tree_t *node) - { - free_token (&node->token); - return REG_NOERROR; diff --git a/gl/lib/regex_internal.c.diff b/gl/lib/regex_internal.c.diff deleted file mode 100644 index 2cede3c..0000000 --- a/gl/lib/regex_internal.c.diff +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/lib/regex_internal.c b/lib/regex_internal.c -index 904b88e..61c8d9d 100644 ---- a/lib/regex_internal.c -+++ b/lib/regex_internal.c -@@ -18,6 +18,8 @@ - with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -+#include "verify.h" -+#include "intprops.h" - static void re_string_construct_common (const char *str, Idx len, - re_string_t *pstr, - RE_TRANSLATE_TYPE trans, bool icase, -@@ -1390,7 +1392,10 @@ static void - internal_function - re_node_set_remove_at (re_node_set *set, Idx idx) - { -- if (idx < 0 || idx >= set->nelem) -+ verify (! TYPE_SIGNED (Idx)); -+ /* if (idx < 0) -+ return; */ -+ if (idx >= set->nelem) - return; - --set->nelem; - for (; idx < set->nelem; idx++) diff --git a/gl/lib/regex_internal.h.diff b/gl/lib/regex_internal.h.diff deleted file mode 100644 index f410882..0000000 --- a/gl/lib/regex_internal.h.diff +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/lib/regex_internal.h b/lib/regex_internal.h -index 439444c..7242084 100644 ---- a/lib/regex_internal.h -+++ b/lib/regex_internal.h -@@ -827,7 +827,8 @@ re_string_wchar_at (const re_string_t *pstr, Idx idx) - # ifndef NOT_IN_libc - static int - internal_function __attribute__ ((pure, unused)) --re_string_elem_size_at (const re_string_t *pstr, Idx idx) -+re_string_elem_size_at (const re_string_t *pstr _UNUSED_PARAMETER_, -+ Idx idx _UNUSED_PARAMETER_) - { - # ifdef _LIBC - const unsigned char *p, *extra; diff --git a/gl/lib/regexec.c.diff b/gl/lib/regexec.c.diff deleted file mode 100644 index d9b6d1c..0000000 --- a/gl/lib/regexec.c.diff +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/lib/regexec.c b/lib/regexec.c -index 21a8166..7762437 100644 ---- a/lib/regexec.c -+++ b/lib/regexec.c -@@ -18,6 +18,8 @@ - with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -+#include "verify.h" -+#include "intprops.h" - static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags, - Idx n) internal_function; - static void match_ctx_clean (re_match_context_t *mctx) internal_function; -@@ -378,8 +380,11 @@ re_search_2_stub (struct re_pattern_buffer *bufp, - Idx len = length1 + length2; - char *s = NULL; - -- if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0)) -- return -2; -+ verify (! TYPE_SIGNED (Idx)); -+ if (BE (len < length1, 0)) -+ return -2; -+ /* if (BE (length1 < 0 || length2 < 0 || stop < 0, 0)) -+ return -2; */ - - /* Concatenate the strings. */ - if (length2 > 0) -@@ -431,11 +436,14 @@ re_search_stub (struct re_pattern_buffer *bufp, - Idx last_start = start + range; - - /* Check for out-of-range. */ -- if (BE (start < 0 || start > length, 0)) -- return -1; -+ verify (! TYPE_SIGNED (Idx)); -+ /* if (BE (start < 0, 0)) -+ return -1; */ -+ if (BE (start > length, 0)) -+ return -1; - if (BE (length < last_start || (0 <= range && last_start < start), 0)) - last_start = length; -- else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0)) -+ else if (BE (/* last_start < 0 || */ (range < 0 && start <= last_start), 0)) - last_start = 0; - - __libc_lock_lock (dfa->lock); -- 1.8.5.3
