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=8e6cc3c04610603437d9f67e337d0abf113eb46b The branch, branch-1.6 has been updated via 8e6cc3c04610603437d9f67e337d0abf113eb46b (commit) from f7c6570e3eb5596ab59b014ea83a5114866eb879 (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 8e6cc3c04610603437d9f67e337d0abf113eb46b Author: Eric Blake <[EMAIL PROTECTED]> Date: Mon Jul 14 06:17:50 2008 -0600 Add -g/--gnu command line argument. * src/m4.c (usage): Mention the new option. (long_options, OPTSTRING): Add new option. (main): Use it. * NEWS: Document this addition. * doc/m4.texinfo (Limits control): Likewise. (Incompatibilities): Mention future use of POSIXLY_CORRECT. * THANKS: Update. Reported by Joel E. Denny. Signed-off-by: Eric Blake <[EMAIL PROTECTED]> ----------------------------------------------------------------------- Summary of changes: ChangeLog | 12 ++++++++++++ NEWS | 12 ++++++++++++ THANKS | 1 + doc/m4.texinfo | 33 +++++++++++++++++++++++++++++++++ src/m4.c | 10 ++++++++-- 5 files changed, 66 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b32f7b8..45a1db7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-07-13 Eric Blake <[EMAIL PROTECTED]> + + Add -g/--gnu command line argument. + * src/m4.c (usage): Mention the new option. + (long_options, OPTSTRING): Add new option. + (main): Use it. + * NEWS: Document this addition. + * doc/m4.texinfo (Limits control): Likewise. + (Incompatibilities): Mention future use of POSIXLY_CORRECT. + * THANKS: Update. + Reported by Joel E. Denny. + 2008-07-11 Eric Blake <[EMAIL PROTECTED]> Avoid bogus whitespace in @ovar, @dvar. diff --git a/NEWS b/NEWS index bdb7665..1ed9489 100644 --- a/NEWS +++ b/NEWS @@ -37,6 +37,18 @@ Foundation, Inc. then apply this patch: http://git.sv.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=56d42fa71 +** New `-g'/`--gnu' command-line option overrides `-G'/`--traditional'. + For now, the environment variable POSIXLY_CORRECT has no effect on M4 + behavior; but a future release of M4 will behave as though --traditional + is implied if POSIXLY_CORRECT is set (this future change is necessary, + because in the current release, there is no way to disable GNU + extensions that conflict with POSIX without the use of a non-POSIX + command-line argument). Clients of M4 that want to use GNU extensions, + even when POSIXLY_CORRECT is set, should start using the -g command-line + argument, even though it is currently a no-op if -G did not appear + earlier in the command line, so that the client will not break in the + face of an upgraded m4 and a POSIXLY_CORRECT execution environment. + ** The `defn' builtin now warns when operating on an undefined macro name. To simulate 1.4.x behavior, use: pushdef(`defn', `ifdef(`$1', `builtin(`defn', `$1')')') diff --git a/THANKS b/THANKS index 1fa9ba5..6a048b9 100644 --- a/THANKS +++ b/THANKS @@ -51,6 +51,7 @@ Jean-Charles Longuet [EMAIL PROTECTED] Jim Avera [EMAIL PROTECTED] Jim Kingdom [EMAIL PROTECTED] Jim Meyering [EMAIL PROTECTED] +Joel E. Denny [EMAIL PROTECTED] Joel Sherrill [EMAIL PROTECTED] John Brzustowski [EMAIL PROTECTED] John David Anglin [EMAIL PROTECTED] diff --git a/doc/m4.texinfo b/doc/m4.texinfo index d995818..cad75ca 100644 --- a/doc/m4.texinfo +++ b/doc/m4.texinfo @@ -744,6 +744,23 @@ only by your hardware and operating system constraints) in @acronym{GNU} @code{m4}. @table @code [EMAIL PROTECTED] -g [EMAIL PROTECTED] --gnu +Enable all the extensions in this implementation. In this release of +M4, this option is always on by default; it is currently only useful +when overriding a prior use of @option{--traditional}. However, having [EMAIL PROTECTED] behavior as default makes it impossible to write a +strictly @acronym{POSIX}-compliant client that avoids all incompatible [EMAIL PROTECTED] M4 extensions, since such a client would have to use the [EMAIL PROTECTED] command-line option to force full @acronym{POSIX} +behavior. Thus, a future version of M4 will be changed to implicitly +use the option @option{--traditional} if the environment variable [EMAIL PROTECTED] is set. Projects that intentionally use [EMAIL PROTECTED] extensions should consider using @option{--gnu} to state +their intentions, so that the project will not mysteriously break if the +user upgrades to a newer M4 and has @env{POSIXLY_CORRECT} set in their +environment. + @item -G @itemx --traditional Suppress all the extensions made in this implementation, compared to the @@ -7403,6 +7420,22 @@ However, this appears to be a bug in @acronym{POSIX}, since most traditional implementations also ignore all whitespace (formfeed, carriage return, and vertical tab). @acronym{GNU} @code{m4} follows tradition and ignores all leading unquoted whitespace. + [EMAIL PROTECTED] [EMAIL PROTECTED] @env{POSIXLY_CORRECT} +A strictly-compliant @acronym{POSIX} client is not allowed to use +command-line arguments not specified by @acronym{POSIX}. However, since +this version of M4 ignores @env{POSIXLY_CORRECT} and enables the option [EMAIL PROTECTED] by default (@pxref{Limits control, , Invoking m4}), a +client desiring to be strictly compliant has no way to disable [EMAIL PROTECTED] extensions that conflict with @acronym{POSIX} when +directly invoking the compiled @code{m4}. A future version of [EMAIL PROTECTED] M4 will honor the environment variable @env{POSIXLY_CORRECT}, +implicitly enabling @option{--traditional} if it is set, in order to +allow a strictly-compliant client. In the meantime, a client needing +strict @acronym{POSIX} compliance can use the workaround of invoking a +shell script wrapper, where the wrapper then adds @option{--traditional} +to the arguments passed to the compiled @code{m4}. @end itemize @node Other Incompatibilities diff --git a/src/m4.c b/src/m4.c index 238222f..c73e275 100644 --- a/src/m4.c +++ b/src/m4.c @@ -245,6 +245,7 @@ Preprocessor features:\n\ puts (""); fputs (_("\ Limits control:\n\ + -g, --gnu override -G to re-enable GNU extensions\n\ -G, --traditional suppress all GNU extensions\n\ -H, --hashsize=PRIME set symbol lookup hash table size [509]\n\ -L, --nesting-limit=NUMBER change artificial nesting limit [1024]\n\ @@ -325,6 +326,7 @@ static const struct option long_options[] = {"error-output", required_argument, NULL, 'o'}, /* FIXME: deprecate in 2.0 */ {"fatal-warnings", no_argument, NULL, 'E'}, {"freeze-state", required_argument, NULL, 'F'}, + {"gnu", no_argument, NULL, 'g'}, {"hashsize", required_argument, NULL, 'H'}, {"include", required_argument, NULL, 'I'}, {"interactive", no_argument, NULL, 'i'}, @@ -386,9 +388,9 @@ process_file (const char *name) '-' forces getopt_long to hand back file names as arguments to opt '\1', rather than reordering the command line. */ #ifdef ENABLE_CHANGEWORD -#define OPTSTRING "-B:D:EF:GH:I:L:N:PQR:S:T:U:W:d::eil:o:st:" +#define OPTSTRING "-B:D:EF:GH:I:L:N:PQR:S:T:U:W:d::egil:o:st:" #else -#define OPTSTRING "-B:D:EF:GH:I:L:N:PQR:S:T:U:d::eil:o:st:" +#define OPTSTRING "-B:D:EF:GH:I:L:N:PQR:S:T:U:d::egil:o:st:" #endif #ifdef DEBUG_REGEX @@ -543,6 +545,10 @@ main (int argc, char *const *argv, char *const *envp) interactive = true; break; + case 'g': + no_gnu_extensions = 0; + break; + case 'l': { long tmp = strtol (optarg, NULL, 10); hooks/post-receive -- GNU M4 source repository
