[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
sysval and doc fixes [was: GNU M4 1.4.4b released (beta release)]
From: |
Eric Blake |
Subject: |
sysval and doc fixes [was: GNU M4 1.4.4b released (beta release)] |
Date: |
Sun, 18 Jun 2006 21:28:31 +0000 |
>
> Can you try that patch, backported to 1.4.4b, to see if it also solves
> the issue for OS/2? If so, I'll check it in.
On second thought, even if it doesn't help OS/2, it will help BeOS,
so I'm checking it in, along with an additional patch to beef up
the testsuite so that we validate an actual non-zero exit value (the
exit value of false is non-portable). But hopefully OS/2 does
define WEXITSTATUS.
>
> 2006-05-08 Bruno Haible <address@hidden> (tiny change)
> Eric Blake <address@hidden>
>
> * src/builtin.c (WEXITSTATUS): Provide fallback definition.
> (m4_esyscmd): Set sysval to 0xffff, to accomodate both
> big-endian and little-endian wait status definitions.
> (m4_sysval): Use WEXITSTATUS.
> Reported by Andreas Buening.
>
2006-06-18 Eric Blake <address@hidden>
Consistently use "GNU M4" as package name, "m4" as executable
name.
* NEWS: Document previous fix.
* THANKS: Update.
* README: Fix grammar. Document that --enable-changeword is on
its last leg.
* doc/m4.texinfo (Top): Likewise.
(Sysval): Enhance this test.
(History): Backport this section from CVS head, and update.
Index: AUTHORS
===================================================================
RCS file: /sources/m4/m4/AUTHORS,v
retrieving revision 1.2.2.1
diff -u -p -r1.2.2.1 AUTHORS
--- AUTHORS 29 May 2006 16:38:07 -0000 1.2.2.1
+++ AUTHORS 18 Jun 2006 21:25:19 -0000
@@ -1,7 +1,7 @@
-Authors of GNU m4.
+Authors of GNU M4.
The following contributors have warranted legal paper exchanges with
-the Free Software Foundation for their contributions to GNU m4. Also
+the Free Software Foundation for their contributions to GNU M4. Also
see the files ChangeLog and THANKS.
This list comes from "sed -ne '/^M4/,/^$/p' /gd/gnuorg/copyright.list"
Index: NEWS
===================================================================
RCS file: /sources/m4/m4/NEWS,v
retrieving revision 1.1.1.1.2.21
diff -u -p -r1.1.1.1.2.21 NEWS
--- NEWS 18 Jun 2006 20:38:02 -0000 1.1.1.1.2.21
+++ NEWS 18 Jun 2006 21:25:20 -0000
@@ -1,10 +1,11 @@
-GNU m4 NEWS - User visible changes.
+GNU M4 NEWS - User visible changes.
Copyright (C) 1992, 1993, 1994, 2004, 2005, 2006 Free Software
Foundation, Inc.
Version 1.4.5 - ?? 2006, by ??? (CVS version 1.4.4c)
-* No user-visible changes, yet.
+* Fix sysval on BeOS, OS/2, and other systems that store exit status
+ in the low-order byte.
Version 1.4.4b - 17 June 2006, by Eric Blake (CVS version 1.4.4a)
Index: README
===================================================================
RCS file: /sources/m4/m4/README,v
retrieving revision 1.1.1.1.2.1
diff -u -p -r1.1.1.1.2.1 README
--- README 18 Oct 2005 11:29:12 -0000 1.1.1.1.2.1
+++ README 18 Jun 2006 21:25:20 -0000
@@ -5,8 +5,8 @@ to macros). `m4' also has built-in func
running shell commands, doing arithmetic, etc. Autoconf needs GNU
`m4' for generating `configure' scripts, but not for running them.
-GNU `m4' has been originally written by Rene' Seindal, from Denmark.
-This release is to be considered as stable.
+GNU `m4' was originally written by Rene' Seindal, from Denmark.
+This release is considered stable.
If GNU `m4' is meant to serve GNU `autoconf', beware that `m4'
should be fully installed *prior to* configuring `autoconf' itself.
@@ -23,7 +23,9 @@ See file `THANKS' for a list of contribu
By using `./configure --enable-changeword', you get an experimental
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.
+`m4'. This feature will not be present in m4 2.0, but will be
+replaced by other new features which provide the same capability, so
+do not count on it.
Send bug reports to address@hidden'. A bug report is an adequate
description of the problem: your input, what you expected, what you got,
Index: THANKS
===================================================================
RCS file: /sources/m4/m4/THANKS,v
retrieving revision 1.1.1.1.2.8
diff -u -p -r1.1.1.1.2.8 THANKS
--- THANKS 15 Jun 2006 13:08:45 -0000 1.1.1.1.2.8
+++ THANKS 18 Jun 2006 21:25:20 -0000
@@ -1,7 +1,7 @@
-GNU m4 THANKS file
+GNU M4 THANKS file
-GNU m4 has originally been written by René Seindal. Many people
-further contributed to GNU m4 by reporting problems, suggesting
+GNU M4 was originally written by René Seindal. Many people
+further contributed to GNU M4 by reporting problems, suggesting
various improvements or submitting actual code. Here is a list of
these people. Help me keep it complete and exempt of errors.
@@ -20,6 +20,7 @@ Bernhard Daeubler address@hidden
Bjorn R. Bjornsson address@hidden
Bob Badour address@hidden
Brendan Kehoe address@hidden
+Bruno Haible address@hidden
Damian Menscher address@hidden
David J. MacKenzie address@hidden
Erez Zadok address@hidden
Index: doc/m4.texinfo
===================================================================
RCS file: /sources/m4/m4/doc/m4.texinfo,v
retrieving revision 1.1.1.1.2.20
diff -u -p -r1.1.1.1.2.20 m4.texinfo
--- doc/m4.texinfo 16 Jun 2006 03:09:14 -0000 1.1.1.1.2.20
+++ doc/m4.texinfo 18 Jun 2006 21:25:20 -0000
@@ -100,8 +100,10 @@ You should use:
@end example
@noindent
if you want this feature compiled in. The current implementation
-slows down @code{m4} considerably and is hardly acceptable. So, it
-might go away, do not count on it yet.
+slows down @code{m4} considerably and is hardly acceptable. In the
+future, @code{m4} 2.0 will come with a different set of new features
+that provide similar capabilities, but without the inefficiencies, so
+changeword will go away and you should not count on it.
@menu
* Preliminaries:: Introduction and preliminaries
@@ -228,8 +230,8 @@ Miscellaneous builtin macros
Compatibility with other versions of @code{m4}
-* Extensions:: Extensions in GNU m4
-* Incompatibilities:: Facilities in System V m4 not in GNU m4
+* Extensions:: Extensions in GNU M4
+* Incompatibilities:: Facilities in System V m4 not in GNU M4
* Other Incompatibilities:: Other incompatibilities
@end detailmenu
@@ -289,22 +291,56 @@ debugging their @code{m4} scripts than d
@node History, Invoking m4, Intro, Preliminaries
@section Historical references
-The historical notes included here are fairly incomplete, and not
-authoritative at all. Please knowledgeable users help us to more
-properly write this section.
-
@code{GPM} has been an important ancestor of @code{m4}. See
C. Stratchey: ``A General Purpose Macro generator'', Computer Journal
8,3 (1965), pp. 225 ff. @code{GPM} is also succinctly described into
David Gries classic ``Compiler Construction for Digital Computers''.
-While @code{GPM} was @emph{pure}, @code{m4} was meant to deal more
-with the true intricacies of real life: macros could be recognized
-with being pre-announced, skipping whitespace or end-of-lines was
-made easier, more constructs were builtin instead of derived, etc.
-
-Originally, @code{m4} was the engine for Rational FORTRAN preprocessor,
-that is, the @code{ratfor} equivalent of @code{cpp}.
+The classic B. Kernighan and P.J. Plauger: ``Software Tools'',
+Addison-Wesley, Inc. (1976) describes and implements a Unix
+macro-processor language, which inspired Dennis Ritchie to write
address@hidden, a macro processor for the AP-3 minicomputer.
+
+Kernighan and Ritchie then joined forces to develop the original
address@hidden, as described in ``The M4 Macro Processor'', Bell
+Laboratories (1977) which had only 21 builtin macros.
+
+While @code{GPM} was more @emph{pure}, @code{m4} is meant to deal with
+the true intricacies of real life: macros can be recognized without
+being pre-announced, skipping whitespace or end-of-lines is easier,
+more constructs are builtin instead of derived, etc.
+
+Originally, the Kernighan and Plauger macro-processor, and then
address@hidden formed the engine for the Rational FORTRAN preprocessor,
+that is, the @code{Ratfor} equivalent of @code{cpp}. Later, @code{m4}
+was used as a frontend for @code{Ratfor}, @code{C} and @code{Cobol}.
+
+Ren@'e Seindal released his implementation of @code{m4}, GNU @code{m4},
+in 1990, with the aim of removing the artificial limitations in many
+of the traditional @code{m4}'s: like maximum line length, macro size,
+number of macros and so on.
+
+The late Professor A. Dain Samples described and implemented a further
+evolution in the form of @code{M5}: ``User's Guide to the M5 Macro
+Language: 2nd edition'', Electronic Announcement on comp.compilers
+newsgroup (1992).
+
+Fran@,{c}ois Pinard took over maintainance of GNU @code{m4} in 1992, until
+1994 when he released GNU @code{m4} 1.4, which was the stable release
+for 10 years. It was at this time that GNU Autoconf decided to require
+GNU @code{m4} as its underlying engine, since all other implementations
+of @code{m4} had too many limitations.
+
+More recently, in 2004, Paul Eggert released 1.4.1 and 1.4.2 which
+addressed some long standing bugs in the venerable 1.4 release.
+Then in 2005 Gary V. Vaughan collected together the many
+patches to GNU @code{m4} 1.4 that were floating around the net and
+released 1.4.3 and 1.4.4. And in 2006, Eric Blake joined the team and
+prepared patches for the release of 1.4.5.
+
+Meanwhile, development has continued on new features for @code{m4}, such
+as dynamic module loading and additional builtins. When complete, GNU
address@hidden 2.0 will start a new series of releases.
@node Invoking m4, Bugs, History, Preliminaries
@section Invoking @code{m4}
@@ -1986,9 +2022,10 @@ changecom
The macro @code{changeword} and all associated functionality is
experimental. It is only available if the @code{--enable-changeword}
option was given to @code{configure}, at GNU @code{m4} installation
-time. The functionality might change or even go away in the future.
address@hidden not rely on it}. Please direct your comments about it the
-same way you would do for bugs.
+time. The functionality will go away in the future, to be replaced by
+other new features that are more efficient at providing the same
+capabilities. @emph{Do not rely on it}. Please direct your comments
+about it the same way you would do for bugs.
@end quotation
A file being processed by @code{m4} is split into quoted strings, words
@@ -2095,7 +2132,8 @@ lexical analysis of macro definition whe
the macro is @emph{used}.
You should note that using @code{changeword} will slow @code{m4} down
-by a factor of about seven.
+by a factor of about seven, once it is changed to be something other
+than the default regular expression.
@node M4wrap, , Changeword, Input Control
@section Saving input
@@ -3100,6 +3138,10 @@ syscmd(`false')
@result{}
ifelse(sysval, 0, zero, non-zero)
@result{}non-zero
+syscmd(`exit 2')
address@hidden
+sysval
address@hidden
syscmd(`true')
@result{}
sysval
@@ -3410,8 +3452,8 @@ There are also differences in BSD flavor
is made to summarize these here.
@menu
-* Extensions:: Extensions in GNU m4
-* Incompatibilities:: Facilities in System V m4 not in GNU m4
+* Extensions:: Extensions in GNU M4
+* Incompatibilities:: Facilities in System V m4 not in GNU M4
* Other Incompatibilities:: Other incompatibilities
@end menu
Index: src/builtin.c
===================================================================
RCS file: /sources/m4/m4/src/Attic/builtin.c,v
retrieving revision 1.1.1.1.2.11
diff -u -p -r1.1.1.1.2.11 builtin.c
--- src/builtin.c 15 Jun 2006 21:51:37 -0000 1.1.1.1.2.11
+++ src/builtin.c 18 Jun 2006 21:25:20 -0000
@@ -745,6 +745,10 @@ m4_defn (struct obstack *obs, int argc,
| and "sysval". "esyscmd" is GNU specific. |
`------------------------------------------------------------------------*/
+#ifndef WEXITSTATUS
+# define WEXITSTATUS(status) (((status) >> 8) & 0xff)
+#endif
+
/* Exit code from last "syscmd" command. */
static int sysval;
@@ -774,7 +778,7 @@ m4_esyscmd (struct obstack *obs, int arg
{
M4ERROR ((warning_status, errno,
"Cannot open pipe to command \"%s\"", ARG (1)));
- sysval = 0xff << 8;
+ sysval = 0xffff;
}
else
{
@@ -787,7 +791,7 @@ m4_esyscmd (struct obstack *obs, int arg
static void
m4_sysval (struct obstack *obs, int argc, token_data **argv)
{
- shipout_int (obs, (sysval >> 8) & 0xff);
+ shipout_int (obs, WEXITSTATUS (sysval));
}
/*-------------------------------------------------------------------------.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- sysval and doc fixes [was: GNU M4 1.4.4b released (beta release)],
Eric Blake <=