With the newest gnulib, a build of m4 from git fails:

make[2]: Entering directory '/tmp/m4/src'
  CC       m4.o
  CC       builtin.o
builtin.c: In function 'm4_syscmd':
builtin.c:968:44: warning: passing argument 3 of 'execute' from incompatible 
pointer type [-Wincompatible-pointer-types]
   status = execute (ARG (0), SYSCMD_SHELL, (char **) prog_args, false,
                                            ^
In file included from builtin.c:27:0:
../lib/execute.h:48:12: note: expected 'const char * const*' but argument is of 
type 'char **'
 extern int execute (const char *progname,
            ^
builtin.c:968:12: error: too few arguments to function 'execute'
   status = execute (ARG (0), SYSCMD_SHELL, (char **) prog_args, false,
            ^
In file included from builtin.c:27:0:
../lib/execute.h:48:12: note: declared here
 extern int execute (const char *progname,
            ^
builtin.c: In function 'm4_esyscmd':
builtin.c:1011:50: warning: passing argument 3 of 'create_pipe_in' from 
incompatible pointer type [-Wincompatible-pointer-types]
   child = create_pipe_in (ARG (0), SYSCMD_SHELL, (char **) prog_args,
                                                  ^
In file included from builtin.c:31:0:
../lib/spawn-pipe.h:113:14: note: expected 'const char * const*' but argument 
is of type 'char **'
 extern pid_t create_pipe_in (const char *progname,
              ^
builtin.c:1011:11: error: too few arguments to function 'create_pipe_in'
   child = create_pipe_in (ARG (0), SYSCMD_SHELL, (char **) prog_args,
           ^
In file included from builtin.c:31:0:
../lib/spawn-pipe.h:113:14: note: declared here
 extern pid_t create_pipe_in (const char *progname,
              ^
make[2]: *** [Makefile:1949: builtin.o] Error 1


This is due to the recent changes in the gnulib modules 'execute' and
'spawn-pipe' (see gnulib/NEWS). This patch fixes it. Can you please
apply it? Thanks.


>From c6f796b82d5ef7fdd30d3a3aa17cf4dbc06d32ad Mon Sep 17 00:00:00 2001
From: Bruno Haible <br...@clisp.org>
Date: Sun, 13 Dec 2020 01:46:46 +0100
Subject: [PATCH] Update after gnulib changed.

* src/builtin.c (m4_syscmd): Update 'execute' invocation.
(m4_esyscmd): Update 'create_pipe_in' invocation.
* po/POTFILES.in: Remove lib/w32spawn.h. Add lib/openat-die.c, lib/os2-spawn.c.
---
 po/POTFILES.in | 3 ++-
 src/builtin.c  | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/po/POTFILES.in b/po/POTFILES.in
index 7685034..5a5004d 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -25,13 +25,14 @@ lib/error.c
 lib/execute.c
 lib/getopt.c
 lib/obstack.c
+lib/openat-die.c
+lib/os2-spawn.c
 lib/quotearg.c
 lib/siglist.h
 lib/spawn-pipe.c
 lib/strsignal.c
 lib/verror.c
 lib/version-etc.c
-lib/w32spawn.h
 lib/wait-process.c
 lib/xalloc-die.c
 src/builtin.c
diff --git a/src/builtin.c b/src/builtin.c
index 9c43b72..d118b21 100644
--- a/src/builtin.c
+++ b/src/builtin.c
@@ -965,7 +965,7 @@ m4_syscmd (struct obstack *obs MAYBE_UNUSED, int argc, token_data **argv)
 #endif
   prog_args[2] = cmd;
   errno = 0;
-  status = execute (ARG (0), SYSCMD_SHELL, (char **) prog_args, false,
+  status = execute (ARG (0), SYSCMD_SHELL, prog_args, NULL, false,
                     false, false, false, true, false, &sig_status);
   if (sig_status)
     {
@@ -1008,7 +1008,7 @@ m4_esyscmd (struct obstack *obs, int argc, token_data **argv)
 #endif
   prog_args[2] = cmd;
   errno = 0;
-  child = create_pipe_in (ARG (0), SYSCMD_SHELL, (char **) prog_args,
+  child = create_pipe_in (ARG (0), SYSCMD_SHELL, prog_args, NULL,
                           NULL, false, true, false, &fd);
   if (child == -1)
     {
-- 
2.7.4

Reply via email to