Hello,
Single, revised patch with all fixes is attached.
JGH
On Tue, 11 Oct 2005, Paul Eggert wrote:
Hmm, it appears that you sent the 2nd patch only to me. But I'm not
the M4 maintainer.
How about if you send a single, revised patch to <[email protected]>, one
that contains all the fixes? I think that'd be helpful.
diff -Naur m4-1.4.3.orig/COPYING m4-1.4.3/COPYING
--- m4-1.4.3.orig/COPYING 2004-08-21 17:29:00.000000000 +0700
+++ m4-1.4.3/COPYING 2005-10-11 16:26:30.000000000 +0700
@@ -2,7 +2,8 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +306,8 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
Also add information on how to contact you by electronic and paper mail.
diff -Naur m4-1.4.3.orig/ChangeLog m4-1.4.3/ChangeLog
--- m4-1.4.3.orig/ChangeLog 2005-03-31 18:50:38.000000000 +0700
+++ m4-1.4.3/ChangeLog 2005-10-11 16:26:30.000000000 +0700
@@ -1,3 +1,13 @@
+2005-10-11 John Gatewood Ham <[EMAIL PROTECTED]> (tiny changes)
+
+ * COPYING: fix FSF address
+ * README: update email address for bug reports
+ * src/m4.c: fix return code when non-existent files are processed
+ * doc/m4.texinfo: Add documentation about EXIT_STATUS
+ * checks/Makefile.in: Add invocation_tests to 'make check' system
+ * checks/invocation_tests: Add tests for EXIT_STATUS behavior so
+ 'make check' will test the changes.
+
2005-03-31 Gary V. Vaughan <[EMAIL PROTECTED]> (tiny change)
* configure.in (VERSION): Bump to 1.4.3.
diff -Naur m4-1.4.3.orig/README m4-1.4.3/README
--- m4-1.4.3.orig/README 2004-08-21 17:29:00.000000000 +0700
+++ m4-1.4.3/README 2005-10-11 16:26:30.000000000 +0700
@@ -25,7 +25,7 @@
feature which allows for changing the syntax of what is a "word" in
`m4'. This might go away, so don't count on it yet.
-Send bug reports to [EMAIL PROTECTED]'. A bug report is
-an adequate description of the problem: your input, what you expected,
-what you got, and why this is wrong. Diffs are welcome, but they only
-describe a solution, from which the problem might be uneasy to infer.
+Send bug reports to [EMAIL PROTECTED]'. A bug report is an adequate
+description of the problem: your input, what you expected, what you got,
+and why this is wrong. Diffs are welcome, but they only describe a
+solution, from which the problem might be uneasy to infer.
diff -Naur m4-1.4.3.orig/THANKS m4-1.4.3/THANKS
--- m4-1.4.3.orig/THANKS 2004-08-21 17:29:00.000000000 +0700
+++ m4-1.4.3/THANKS 2005-10-11 16:26:30.000000000 +0700
@@ -33,6 +33,7 @@
Jim Meyering [EMAIL PROTECTED]
Joel Sherrill [EMAIL PROTECTED]
John David Anglin [EMAIL PROTECTED]
+John Gatewood Ham [EMAIL PROTECTED]
Joseph E. Sacco [EMAIL PROTECTED]
Karl Berry [EMAIL PROTECTED]
Karl Vogel [EMAIL PROTECTED]
diff -Naur m4-1.4.3.orig/checks/Makefile.in m4-1.4.3/checks/Makefile.in
--- m4-1.4.3.orig/checks/Makefile.in 2005-02-10 03:48:32.000000000 +0700
+++ m4-1.4.3/checks/Makefile.in 2005-10-11 16:29:43.000000000 +0700
@@ -1,5 +1,5 @@
# Makefile for GNU m4 checks directory.
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 2005 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
PACKAGE = @PACKAGE@
VERSION = @VERSION@
@@ -28,7 +28,7 @@
# Vern says that the first star is required around an Alpha make bug.
CHECKS = *[0-9][0-9].*
-DISTFILES = Makefile.in get-them check-them stamp-checks incl.m4 foo
+DISTFILES = Makefile.in get-them check-them stamp-checks incl.m4 foo
invocation_tests
all: stamp-checks
@@ -43,7 +43,8 @@
check: stamp-checks
PATH=`pwd`/../src:$$PATH; export PATH; \
- cd $(srcdir) && ./check-them $(CHECKS)
+ cd $(srcdir) && ./check-them $(CHECKS); \
+ cd $(srcdir) && ./invocation_tests
tags:
diff -Naur m4-1.4.3.orig/checks/invocation_tests
m4-1.4.3/checks/invocation_tests
--- m4-1.4.3.orig/checks/invocation_tests 1970-01-01 07:00:00.000000000
+0700
+++ m4-1.4.3/checks/invocation_tests 2005-10-11 16:33:57.000000000 +0700
@@ -0,0 +1,77 @@
+#!/bin/sh
+# Check GNU m4 exit status codes.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+testno=0
+testcount=0
+failcount=0
+faillist=""
+
+testno=`expr ${testno} + 1`
+testcount=`expr ${testcount} + 1`
+msg="${testno}: Ensure m4 exits with non-zero exit code when fed a
non-existent file as input."
+echo -n "running invocation test ${testno}: "
+m4 nosuchfile >/dev/null 2>&1
+if [ $? -eq 0 ]
+then
+ failcount=`expr ${failcount} + 1`
+ if [ -z "${faillist}" ]
+ then
+ faillist="${msg}"
+ else
+ faillist="${faillist}\n${msg}"
+ fi
+ echo "FAIL"
+else
+ echo "OK"
+fi
+
+testno=`expr ${testno} + 1`
+testcount=`expr ${testcount} + 1`
+msg="${testno}: Ensure m4 exits with a zero exit code when fed a valid file as
input."
+echo -n "running invocation test ${testno}: "
+m4 foo >/dev/null 2>&1
+if [ $? -ne 0 ]
+then
+ failcount=`expr ${failcount} + 1`
+ if [ -z "${faillist}" ]
+ then
+ faillist="${msg}"
+ else
+ faillist="${faillist}\n${msg}"
+ fi
+ echo "FAIL"
+else
+ echo "OK"
+fi
+
+testno=`expr ${testno} + 1`
+testcount=`expr ${testcount} + 1`
+msg="${testno}: Ensure m4 exits with a zero exit code when fed a valid stream
from stdin."
+echo -n "running invocation test ${testno}: "
+cat foo | m4 - >/dev/null 2>&1
+if [ $? -ne 0 ]
+then
+ failcount=`expr ${failcount} + 1`
+ if [ -z "${faillist}" ]
+ then
+ faillist="${msg}"
+ else
+ faillist="${faillist}\n${msg}"
+ fi
+ echo "FAIL"
+else
+ echo "OK"
+fi
+
+#
+# display test results
+#
+if [ -z "${faillist}" ]
+then
+ echo "All ${testcount} checks successful"
+else
+ echo "${failcount} of ${testcount} checks failed. Failed checks were:"
+ echo -e "${faillist}"
+ exit 1
+fi
+exit 0
diff -Naur m4-1.4.3.orig/doc/m4.texinfo m4-1.4.3/doc/m4.texinfo
--- m4-1.4.3.orig/doc/m4.texinfo 2005-03-31 18:17:00.000000000 +0700
+++ m4-1.4.3/doc/m4.texinfo 2005-10-11 16:26:30.000000000 +0700
@@ -57,7 +57,7 @@
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1989, 1990, 1991, 1992, 1993, 1994, 2004 Free Software
Foundation, Inc.
+Copyright @copyright{} 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005 Free
Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -258,6 +258,7 @@
* Intro:: Introduction to @code{m4}
* History:: Historical references
* Invoking m4:: Invoking @code{m4}
+* EXIT_STATUS:: EXIT_STATUS of m4
* Bugs:: Problems and bugs
* Manual:: Using this manual
@end menu
@@ -312,7 +313,7 @@
Originally, @code{m4} was the engine for Rational FORTRAN preprocessor,
that is, the @code{ratfor} equivalent of @code{cpp}.
[EMAIL PROTECTED] Invoking m4, Bugs, History, Preliminaries
[EMAIL PROTECTED] Invoking m4, EXIT_STATUS, History, Preliminaries
@section Invoking @code{m4}
The format of the @code{m4} command is:
@@ -505,7 +506,65 @@
only be read once, so the filename @file{-} should only appear once on
the command line.
[EMAIL PROTECTED] Bugs, Manual, Invoking m4, Preliminaries
[EMAIL PROTECTED] EXIT_STATUS, Bugs, Invoking m4, Preliminaries
[EMAIL PROTECTED] EXIT_STATUS of @code{m4}
+
[EMAIL PROTECTED] EXIT_STATUS of @code{m4}
[EMAIL PROTECTED] EXIT_STATUS
+The @code{m4} program will return an exit code to the process which
+invokes it when @code{m4} exits. The default behavior for @code{m4}
+is that the following exit values shall be returned to the process
+invoking @code{m4}:
+
[EMAIL PROTECTED]
+0 Successful [EMAIL PROTECTED]
[EMAIL PROTECTED]
+>0 An error occurred
+
[EMAIL PROTECTED]
+It is possible to override this behavior by using the @code{m4exit} macro, in
+which case the exit value can be specified by the input file
+(@pxref{M4exit}).
+
[EMAIL PROTECTED]
+If a non-existent file is supplied as input, for example, the exit code should
+be non-zero. Assuming a bourne-style shell such as GNU bash, this could be
+used like this:
+
[EMAIL PROTECTED] ignore
[EMAIL PROTECTED]
+echo -n "Enter filename:"
+read FILENAME
+m4 "[EMAIL PROTECTED]@}" > "[EMAIL PROTECTED]@}.out"
+if [ $? -ne 0 ]
+then
+ echo "Unable to process \"[EMAIL PROTECTED]@}\" with m4."
+fi
[EMAIL PROTECTED] example
+
[EMAIL PROTECTED]
+If the user enters the text @code{nosuchfile} and indeed there is no
+file by the name @code{nosuchfile}, then @code{m4} will exit with an
+exit status of 1. The output of this script will look like this:
+
[EMAIL PROTECTED] ignore
[EMAIL PROTECTED]
+m4: nosuchfile: No such file or directory
+Unable to process "nosuchfile" with m4.
[EMAIL PROTECTED] example
+
[EMAIL PROTECTED]
+The first line of output is from @code{m4}, the second is from the
[EMAIL PROTECTED] statement.
+
[EMAIL PROTECTED]
+If the user user enters the text @code{goodfile.m4} and indeed there
+exists a readable, error-free m4 file by the name @code{goodfile.m4},
+then @code{m4} will exit with an exit status of 0. The @code{if} condition
+will be false as expected, and no message will be displayed.
+
[EMAIL PROTECTED] Bugs, Manual, EXIT_STATUS, Preliminaries
[EMAIL PROTECTED] bug
@section Problems and bugs
If you have problems with GNU @code{m4} or think you've found a bug,
@@ -521,11 +580,9 @@
say what you expected to occur; this will help us decide whether the
problem was really in the documentation.
-Once you've got a precise problem, send e-mail to (Internet)
[EMAIL PROTECTED]@@prep.ai.mit.edu} or (UUCP)
[EMAIL PROTECTED] Please include the
-version number of @code{m4} you are using. You can get this information
-with the command @samp{m4 --version}.
+Once you've got a precise problem, send e-mail to @file{bug-m4@@gnu.org}.
+Please include the version number of @code{m4} you are using. You can get
+this information with the command @samp{m4 --version}.
Non-bug suggestions are always welcome as well. If you have questions
about things that are unclear in the documentation or are just obscure
diff -Naur m4-1.4.3.orig/src/m4.c m4-1.4.3/src/m4.c
--- m4-1.4.3.orig/src/m4.c 2005-02-10 03:58:38.000000000 +0700
+++ m4-1.4.3/src/m4.c 2005-10-11 16:26:30.000000000 +0700
@@ -1,6 +1,6 @@
/* GNU m4 -- A simple macro processor
- Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004 Free
+ Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005 Free
Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -15,7 +15,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "m4.h"
@@ -263,6 +263,7 @@
macro_definition *tail;
macro_definition *new;
int optchar; /* option character */
+ int retcode = EXIT_SUCCESS;
macro_definition *defines;
FILE *fp;
@@ -484,6 +485,14 @@
if (fp == NULL)
{
error (0, errno, "%s", argv[optind]);
+ /*
+ * In order not to break existing applications that may
+ * depend on m4 continuing past non-existent files, I
+ * have decided to have m4 keep going as it always has
+ * past errors, but I make the final exit code be
+ * EXIT_FAILURE in this case.
+ */
+ retcode = EXIT_FAILURE;
continue;
}
else
@@ -506,5 +515,5 @@
undivert_all ();
}
- exit (EXIT_SUCCESS);
+ exit (retcode);
}
_______________________________________________
Bug-m4 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-m4