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=f6e75bf0240fbf2b4e7f5dfc7d70de546241bbdd The branch, master has been updated via f6e75bf0240fbf2b4e7f5dfc7d70de546241bbdd (commit) via db2b33bf92064729e8efde7f3342c3ee8014032d (commit) from 724c9cba4f9e8f7925d93f5aaa9899de8fa37f30 (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 f6e75bf0240fbf2b4e7f5dfc7d70de546241bbdd Author: Eric Blake <[email protected]> Date: Mon Aug 17 12:09:04 2009 -0600 Pick up gnulib fixes for sub-process execution. * gnulib: Update. * tests/others.at (stdin and stdout closed): New test, to avoid regression introduced on 1.4 branch on 2008-07-17. * NEWS: Document the change. Signed-off-by: Eric Blake <[email protected]> (cherry picked from commit d3237b2af19c80fc80218fd33eb64266be510be8) commit db2b33bf92064729e8efde7f3342c3ee8014032d Author: Eric Blake <[email protected]> Date: Mon Aug 17 11:58:32 2009 -0600 A status of 127 does not always imply esyscmd failure. * modules/gnu.c (esyscmd): Silence gnulib message; regression introduced 2009-03-13. * doc/m4.texinfo (Sysval): Test this. * NEWS: Document the change. Signed-off-by: Eric Blake <[email protected]> (cherry picked from commit 5fa9c079fbe226113280ac86401b432d9c0e7981) ----------------------------------------------------------------------- Summary of changes: ChangeLog | 14 ++++++++++++++ NEWS | 12 ++++++++++++ doc/m4.texinfo | 6 +++--- gnulib | 2 +- modules/gnu.c | 3 ++- tests/others.at | 16 ++++++++++++++++ 6 files changed, 48 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70f7bcc..21b662c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2009-08-24 Eric Blake <[email protected]> + + Pick up gnulib fixes for sub-process execution. + * gnulib: Update. + * tests/others.at (stdin and stdout closed): New test, to avoid + regression introduced on 1.4 branch on 2008-07-17. + * NEWS: Document the change. + + A status of 127 does not always imply esyscmd failure. + * modules/gnu.c (esyscmd): Silence gnulib message; regression + introduced 2009-03-13. + * doc/m4.texinfo (Sysval): Test this. + * NEWS: Document the change. + 2009-06-26 Eric Blake <[email protected]> Use bitrotate for hashing. diff --git a/NEWS b/NEWS index c14107f..819dfee 100644 --- a/NEWS +++ b/NEWS @@ -335,6 +335,18 @@ contains the following beta features that were deemed worth deferring until ** A number of portability improvements inherited from gnulib. +* 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 2a31238..71c8421 100644 --- a/doc/m4.texinfo +++ b/doc/m4.texinfo @@ -8210,10 +8210,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 @@ -8224,7 +8224,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 836f397..2d8b95d 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit 836f3974faad2f3de7bafd46719b77d6632a4c96 +Subproject commit 2d8b95d62cc4d6524fa6c4dbc3138d88a5839159 diff --git a/modules/gnu.c b/modules/gnu.c index 5650c72..665b57c 100644 --- a/modules/gnu.c +++ b/modules/gnu.c @@ -731,7 +731,8 @@ M4BUILTIN_HANDLER (esyscmd) m4_error (context, EXIT_FAILURE, errno, me, _("cannot read pipe to command %s"), quotearg_style (locale_quoting_style, cmd)); - status = wait_subprocess (child, caller, false, false, true, false, + errno = 0; + status = wait_subprocess (child, caller, false, true, true, false, &sig_status); if (sig_status) { diff --git a/tests/others.at b/tests/others.at index f95d80f..5ff1bb0 100644 --- a/tests/others.at +++ b/tests/others.at @@ -737,6 +737,22 @@ m4 FOO AT_CLEANUP +## ----------------------- ## +## stdin and stdout closed ## +## ----------------------- ## + +AT_SETUP([stdin and stdout closed]) + +dnl no error when only stderr is used +AT_DATA([in.m4], [[esyscmd(echo hi >&2 && echo err"print(bye +)d"nl)dnl +]]) +AT_CHECK_M4([in.m4 >&-], [0], [], [[hi +bye +]], [-]) + +AT_CLEANUP + ## ------------- ## ## stdout closed ## ## ------------- ## hooks/post-receive -- GNU M4 source repository
