The recent gnulib update came with some new or changed syntax-check rules,
and also the new test-sigusr source needs some love to pass 'make syntax-check':

* [PATCH 1/4] build: avoid spurious failures due to lack of EGREP definition
* [PATCH 2/4] maint: avoid gnulib sc_prefer_angle_bracket_headers failure
* [PATCH 3/4] xargs: avoid sc_useless_cpp_parens failure
* [PATCH 4/4] tests: avoid various syntax-check failures wrt/

Have a nice day,
Berny
From 8d48e1ee65adc79cb7c71df23c2fa7e645cdef60 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <bernhard.voel...@camline.com>
Date: Tue, 14 May 2024 16:09:08 +0200
Subject: [PATCH 1/4] build: avoid spurious failures due to lack of EGREP
 definition

Similar to Jim Meyering's commit in coreutils:
http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=d73ca62c4fa3

* configure.ac: Use AC_PROG_EGREP, since many doc and test rules
use $EGREP.
* cfg.mk (sc_tests_list_consistency): Use grep -E, not $(EGREP) here.
---
 cfg.mk       | 2 +-
 configure.ac | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/cfg.mk b/cfg.mk
index c6b3f5c3..fdbeef38 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -112,7 +112,7 @@ sc_tests_list_consistency:
 	  cd $(top_srcdir);						\
 	  $(SHELL) build-aux/vc-list-files tests			\
 	    | grep -Ev '^tests/init\.sh$$'				\
-	    | $(EGREP) "$$test_extensions_rx\$$";			\
+	    | grep -E "$$test_extensions_rx\$$";			\
 	} | sort | uniq -u | grep . && exit 1; :
 
 # Ensure that all version-controlled test scripts are executable.
diff --git a/configure.ac b/configure.ac
index 94fe4090..8ad4b21f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -89,6 +89,7 @@ fi
 dnl Checks for programs.
 AC_PROG_CC
 AC_PROG_CPP
+AC_PROG_EGREP
 
 dnl for gnulib
 gl_EARLY
-- 
2.45.1

From b9c9310eecc6f6d98703619490f31ebda17ebabe Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <m...@bernhard-voelker.de>
Date: Mon, 20 May 2024 07:41:40 +0200
Subject: [PATCH 2/4] maint: avoid gnulib sc_prefer_angle_bracket_headers
 failure

The following syntax-check rule fails:

  $ make syntax-check
  ...
  maint.mk: Use #include <hdr.h>, not #include "hdr.h" for the above
  make: *** [maint.mk:619: sc_prefer_angle_bracket_headers] Error 1

The rule suggests using '#include <header.h>' instead of
'#include "header.h"' for headers that override system headers.
See gnulib documentation, section "Style of #include statements".

* find/parser.c (#include "fnmatch.h": Change from "..." to <...> style.
* find/pred.c (#include "fnmatch.h"): Likewise.
* find/tree.c (#include "fnmatch.h"): Likewise.
* lib/system.h (#include "error.h"): Likewise.
* locate/locate.c (#include "fnmatch.h"): Likewise.
* tests/xargs/test-sigusr.c (#include "error.h"): Likewise.
---
 find/parser.c             | 2 +-
 find/pred.c               | 2 +-
 find/tree.c               | 2 +-
 lib/system.h              | 3 +--
 locate/locate.c           | 2 +-
 tests/xargs/test-sigusr.c | 2 +-
 6 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/find/parser.c b/find/parser.c
index f95adfc7..e2c19e26 100644
--- a/find/parser.c
+++ b/find/parser.c
@@ -32,7 +32,7 @@
 
 
 /* gnulib headers. */
-#include "fnmatch.h"
+#include <fnmatch.h>
 #include "intprops.h"
 #include "modechange.h"
 #include "mountlist.h"
diff --git a/find/pred.c b/find/pred.c
index 8312f6e2..b2ca071b 100644
--- a/find/pred.c
+++ b/find/pred.c
@@ -38,7 +38,7 @@
 #include "areadlink.h"
 #include "dirname.h"
 #include "fcntl--.h"
-#include "fnmatch.h"
+#include <fnmatch.h>
 #include "stat-size.h"
 #include "stat-time.h"
 #include "yesno.h"
diff --git a/find/tree.c b/find/tree.c
index c42eb9e0..ba85107b 100644
--- a/find/tree.c
+++ b/find/tree.c
@@ -23,7 +23,7 @@
 #include <stdlib.h>
 
 /* gnulib headers. */
-#include "fnmatch.h"
+#include <fnmatch.h>
 #include "xalloc.h"
 
 /* find headers. */
diff --git a/lib/system.h b/lib/system.h
index c716cff7..911557d5 100644
--- a/lib/system.h
+++ b/lib/system.h
@@ -19,8 +19,7 @@
 # define SYSTEM_H
 
 # include <locale.h>
-
-# include "error.h"
+# include <error.h>
 
 /* Take care of NLS matters.  */
 
diff --git a/locate/locate.c b/locate/locate.c
index 643cf002..aefb3793 100644
--- a/locate/locate.c
+++ b/locate/locate.c
@@ -80,7 +80,7 @@
 #include <xstrtol.h>
 
 /* gnulib headers. */
-#include "fnmatch.h"
+#include <fnmatch.h>
 #include "progname.h"
 #include "xalloc.h"
 #include "fcntl--.h"
diff --git a/tests/xargs/test-sigusr.c b/tests/xargs/test-sigusr.c
index 616e06bd..7e20500c 100644
--- a/tests/xargs/test-sigusr.c
+++ b/tests/xargs/test-sigusr.c
@@ -29,7 +29,7 @@
 #include <unistd.h>
 
 /* Gnulib modules */
-#include "error.h"
+#include <error.h>
 
 
 enum { FLAGFILE_MAX = 128 };
-- 
2.45.1

From a76e5e1f028557a24fe4ffb4e56a142d521efbdd Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <m...@bernhard-voelker.de>
Date: Mon, 20 May 2024 09:13:33 +0200
Subject: [PATCH 3/4] xargs: avoid sc_useless_cpp_parens failure

$ make syntax-check
...
xargs/xargs.c:674:#if !(defined(SIGUSR1) && defined(SIGUSR2))
maint.mk: found useless parentheses in cpp directive
make: *** [maint.mk:924: sc_useless_cpp_parens] Error 1

* xargs/xargs.c (main): Simplify -P #if conditional to avoid the
above syntax-check failure.
---
 xargs/xargs.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xargs/xargs.c b/xargs/xargs.c
index 0f1d0227..e231223a 100644
--- a/xargs/xargs.c
+++ b/xargs/xargs.c
@@ -671,11 +671,11 @@ main (int argc, char **argv)
 	case 'P':
 	  /* Allow only up to MAX_PROC_MAX child processes. */
 	  proc_max = parse_num (optarg, 'P', 0L, MAX_PROC_MAX, 1);
-#if !(defined(SIGUSR1) && defined(SIGUSR2))
+#if defined SIGUSR1 && defined SIGUSR2
+	  catch_usr_signals = true;
+#else
 	  error (0, 0, _("SIGUSR1 and SIGUSR2 are not both defined, so the -P option does nothing."));
 	  proc_max = 1;
-#else
-	  catch_usr_signals = true;
 #endif
 	  break;
 
-- 
2.45.1

From 32132e9749813253250b2603757d44faa322666f Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <m...@bernhard-voelker.de>
Date: Mon, 20 May 2024 10:00:25 +0200
Subject: [PATCH 4/4] tests: avoid various syntax-check failures wrt/
 test-sigusr

The syntax-check complains:
  $ make syntax-check -k
  ...
  maint.mk: the above files do not call bindtextdomain
  make: *** [maint.mk:869: sc_bindtextdomain] Error 1
  ...
  maint.mk: the above files do not include <config.h>
  make: *** [maint.mk:509: sc_require_config_h] Error 1
  ...
  maint.mk: use EXIT_* values rather than magic number
  make: *** [maint.mk:411: sc_prohibit_magic_number_exit] Error 1
  ...
  maint.mk: found unmarked diagnostic(s)
  make: *** [maint.mk:916: sc_unmarked_diagnostics] Error 1
  ...
  make: *** [cfg.mk:111: sc_tests_list_consistency] Error 1
  ...
  maint.mk: Please make test executable: tests/xargs/test-sigusr.c
  make: *** [cfg.mk:124: sc_tests_executable] Error 1

* cfg.mk (exclude_file_name_regexp--sc_bindtextdomain): Add test-sigusr.
(exclude_file_name_regexp--sc_unmarked_diagnostics): Define with the
pattern of the test-sigusr source file.
(sc_tests_list_consistency): Strip off ".c" suffix.
(sc_tests_executable): Exempt C source from this rule.
* tests/local.mk (TEST_EXTENSIONS): Add .c sources, needed also for
sc_tests_list_consistency to work.
* tests/xargs/test-sigusr.c (#include <config.h>): Add to avoid
sc_require_config_h failure.
(verify_signal_ignored): Call exit with EXIT_FAILURE instead of 1 to
avoid sc_prohibit_magic_number_exit failure.
(verify_signal_is_fatal): Likewise.
(verify_signal_is_nonfatal_with_p): Likewise.
* tests/.gitignore (/xargs/test-sigusr): While at it, add an entry
for the built test program here.
---
 cfg.mk                    | 10 ++++++++--
 tests/.gitignore          |  1 +
 tests/local.mk            |  2 +-
 tests/xargs/test-sigusr.c | 10 ++++++----
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index fdbeef38..60bc8cd5 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -86,7 +86,11 @@ exclude_file_name_regexp--sc_texinfo_acronym = doc/perm\.texi
 
 # List syntax-check exemptions.
 exclude_file_name_regexp--sc_bindtextdomain = \
-  ^(locate/frcode|lib/regexprops|lib/test_splitstring|find/getlimits)\.c$$
+  ^(locate/frcode|lib/regexprops|lib/test_splitstring|find/getlimits|tests/xargs/test-sigusr)\.c$$
+
+# sc_unmarked_diagnostics: exempt internal programs.
+exclude_file_name_regexp--sc_unmarked_diagnostics = \
+  ^(tests/xargs/test-sigusr)\.c$$
 
 # sc_prohibit_strcmp is broken because it gives false positives for
 # cases where neither argument is a string literal.
@@ -112,7 +116,8 @@ sc_tests_list_consistency:
 	  cd $(top_srcdir);						\
 	  $(SHELL) build-aux/vc-list-files tests			\
 	    | grep -Ev '^tests/init\.sh$$'				\
-	    | grep -E "$$test_extensions_rx\$$";			\
+	    | grep -E "$$test_extensions_rx\$$"				\
+	    | sed 's/\.c$$//';						\
 	} | sort | uniq -u | grep . && exit 1; :
 
 # Ensure that all version-controlled test scripts are executable.
@@ -122,6 +127,7 @@ sc_tests_executable:
 	find $(srcdir)/tests \( $$find_ext \) \! -perm -u+x -print	   \
 	  | { sed "s|^$(srcdir)/||"; git ls-files $(srcdir)/tests/; }	   \
 	  | sort | uniq -d						   \
+	  | grep -Ev '^tests/.*\.c$$'					   \
 	  | sed -e "s/^/$(ME): Please make test executable: /" | grep .	   \
 	    && exit 1; :
 
diff --git a/tests/.gitignore b/tests/.gitignore
index 702a9418..46240f57 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,3 +1,4 @@
 /*/*.log
 /*/*.trs
 /test-suite.log
+/xargs/test-sigusr
diff --git a/tests/local.mk b/tests/local.mk
index 7a7e0aa8..4b96eed1 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -25,7 +25,7 @@ root_tests = $(all_root_tests)
 
 EXTRA_DIST += $(all_tests)
 
-TEST_EXTENSIONS = .sh
+TEST_EXTENSIONS = .sh .c
 
 SH_LOG_COMPILER = $(SHELL)
 
diff --git a/tests/xargs/test-sigusr.c b/tests/xargs/test-sigusr.c
index 7e20500c..3815c2ff 100644
--- a/tests/xargs/test-sigusr.c
+++ b/tests/xargs/test-sigusr.c
@@ -16,6 +16,8 @@
 
    Written by James Youngman <j...@gnu.org>
 */
+/* config.h must be included first. */
+#include <config.h>
 
 /* System headers */
 #include <assert.h>
@@ -285,12 +287,12 @@ verify_signal_ignored(int signum)
   if (status.fatalsig)
     {
       fprintf(stderr, "xargs should not have exited fatally on receipt of signal %d\n", signum);
-      exit(1);
+      exit(EXIT_FAILURE);
     }
   if (status.retval)
     {
       fprintf(stderr, "xargs should not have returned a nonzero exit status %d\n", status.retval);
-      exit(1);
+      exit(EXIT_FAILURE);
     }
   fputs("OK\n", stdout);
 }
@@ -306,7 +308,7 @@ verify_signal_is_fatal(int signum)
   if (!status.fatalsig)
     {
       fprintf(stderr, "xargs should have exited fatally on receipt of signal %d\n", signum);
-      exit(1);
+      exit(EXIT_FAILURE);
     }
   fputs("OK\n", stdout);
 }
@@ -322,7 +324,7 @@ verify_signal_is_nonfatal_with_p(int signum)
   if (status.fatalsig)
     {
       fprintf(stderr, "xargs -P should not have exited fatally on receipt of signal %d\n", signum);
-      exit(1);
+      exit(EXIT_FAILURE);
     }
   fputs("OK\n", stdout);
 }
-- 
2.45.1

Reply via email to