This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU M4 source repository".
http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=d3237b2af19c80fc80218fd33eb64266be510be8 The branch, branch-1.4 has been updated via d3237b2af19c80fc80218fd33eb64266be510be8 (commit) via af75eb36c890595b686532dc35cf090c4879038f (commit) via 5fa9c079fbe226113280ac86401b432d9c0e7981 (commit) from f294059b524570dfd91dff8c51632b0b20a4fede (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d3237b2af19c80fc80218fd33eb64266be510be8 Author: Eric Blake <[email protected]> Date: Mon Jul 20 07:08:27 2009 -0600 Pick up gnulib fixes for sub-process execution. * gnulib: Update. * doc/m4.texinfo (Command line files): Add test; regression introduced 2009-03-05. * NEWS: Document the change. Signed-off-by: Eric Blake <[email protected]> commit af75eb36c890595b686532dc35cf090c4879038f Author: Eric Blake <[email protected]> Date: Mon Jul 20 06:54:18 2009 -0600 Avoid cygwin 1.7 crash with closed stdout. * gnulib: Update. * doc/m4.texinfo (Command line files): Add test; regression introduced 2008-07-17. * NEWS: Document the change. Signed-off-by: Eric Blake <[email protected]> commit 5fa9c079fbe226113280ac86401b432d9c0e7981 Author: Eric Blake <[email protected]> Date: Fri Jul 17 15:20:06 2009 -0600 A status of 127 does not always imply esyscmd failure. * src/builtin.c (m4_esyscmd): Silence gnulib message; regression introduced 2009-03-05. * doc/m4.texinfo (Sysval): Test this. * NEWS: Document the change. Signed-off-by: Eric Blake <[email protected]> ----------------------------------------------------------------------- Summary of changes: ChangeLog | 20 ++++++++++++++++++++ NEWS | 12 ++++++++++++ doc/m4.texinfo | 24 +++++++++++++++++++++--- gnulib | 2 +- src/builtin.c | 2 +- 5 files changed, 55 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a765b0..2a14a45 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2009-07-20 Eric Blake <[email protected]> + + Pick up gnulib fixes for sub-process execution. + * gnulib: Update. + * doc/m4.texinfo (Command line files): Add test; regression + introduced 2009-03-05. + * NEWS: Document the change. + + Avoid cygwin 1.7 crash with closed stdout. + * gnulib: Update. + * doc/m4.texinfo (Command line files): Add test; regression + introduced 2008-07-17. + * NEWS: Document the change. + + A status of 127 does not always imply esyscmd failure. + * src/builtin.c (m4_esyscmd): Silence gnulib message; regression + introduced 2009-03-05. + * doc/m4.texinfo (Sysval): Test this. + * NEWS: Document the change. + 2009-06-25 Eric Blake <[email protected]> Fix description of limits on diversions. diff --git a/NEWS b/NEWS index 8b3b8e9..bfb7ab7 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,18 @@ GNU M4 NEWS - User visible changes. Copyright (C) 1992, 1993, 1994, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +* Noteworthy changes in Version 1.4.14 (2009-??-??) [stable] + Released by Eric Blake, based on git version 1.4.13.* + +** Fix regression introduced in 1.4.12 where executing with stdout closed + could crash m4 on exit on some platforms. + +** Fix regressions introduced in 1.4.13 in the `esyscmd' builtin, where + closed file descriptors could interfere with child execution, and where + a child status of 127 made m4 print a spurious message to stderr. + +** A number of portability improvements inherited from gnulib. + * Noteworthy changes in Version 1.4.13 (2009-04-01) [stable] Released by Eric Blake, based on git version 1.4.12.* diff --git a/doc/m4.texinfo b/doc/m4.texinfo index 48aa74e..9195e06 100644 --- a/doc/m4.texinfo +++ b/doc/m4.texinfo @@ -960,6 +960,24 @@ options. @example @error{}m4: cannot open `Makefile/': Not a directory @end example + +...@comment Test that closed stderr does not cause a crash. + +...@example +ifdef(`__unix__', , + `errprint(` skipping: syscmd does not have unix semantics +')m4exit(`77')')dnl +changequote(`[', `]')dnl +syscmd([echo | ']__program__[' >&-])dnl +...@error{}m4: write error: Bad file descriptor +sysval +...@result{}1 +syscmd([echo 'esyscmd(echo hi >&2)dnl' > tmp.m4 \ + && ']__program__[' tmp.m4 <&- >&- \ + && rm tmp.m4])sysval +...@error{}hi +...@result{}0 +...@end example @end ignore @node Syntax @@ -6615,10 +6633,10 @@ esyscmd(`false') @result{} ifelse(sysval, `0', `zero', `non-zero') @result{}non-zero -esyscmd(`exit 2') +esyscmd(`echo dnl && exit 127') @result{} sysval -...@result{}2 +...@result{}127 esyscmd(`true') @result{} sysval @@ -6629,7 +6647,7 @@ sysval command, for example, if the system-imposed argument length is exceeded, or if there were not enough resources to fork. It is not possible to distinguish between failed execution and successful execution that had -an exit status of 127. +an exit status of 127, unless there was output from the child process. On UNIX platforms, where it is possible to detect when command execution is terminated by a signal, rather than a normal exit, the result is the diff --git a/gnulib b/gnulib index e3e47d1..deb58d4 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit e3e47d1710f6154c54b65c5d9dd5d56516a893d6 +Subproject commit deb58d481fc8dc345e463002c7087a08a4f1d5f0 diff --git a/src/builtin.c b/src/builtin.c index 05146df..d416a00 100644 --- a/src/builtin.c +++ b/src/builtin.c @@ -1042,7 +1042,7 @@ m4_esyscmd (struct obstack *obs, int argc, token_data **argv) } if (ferror (pin) || fclose (pin)) M4ERROR ((EXIT_FAILURE, errno, "cannot read pipe")); - status = wait_subprocess (child, ARG (0), false, false, true, false, + status = wait_subprocess (child, ARG (0), false, true, true, false, &sig_status); if (sig_status) { hooks/post-receive -- GNU M4 source repository
