diff --git a/.autom4te.cfg b/.autom4te.cfg
deleted file mode 100644
index f47eaeee..00000000
--- a/.autom4te.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-# Disable the autom4te.cache directory.
-begin-language: "Autoconf-without-aclocal-m4"
-args: --no-cache
-end-language: "Autoconf-without-aclocal-m4"
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index f7c0ed7c..00000000
--- a/.gitattributes
+++ /dev/null
@@ -1,5 +0,0 @@
-# See ./bootstrap for some helpful ~/.gitconfig or .git/config settings
-# needed for using these attributes effectively.
-*.texi* diff=texinfo
-null.* diff merge
-iso8859.m4 diff merge
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index e0841d1e..00000000
--- a/.gitignore
+++ /dev/null
@@ -1,91 +0,0 @@
-*~
-.#*
-*.a
-*.bak
-.deps
-.dirstamp
-*.exe
-*.gmo
-*.header
-*.la
-.libs
-*.lo
-*.log
-*.mo
-*.o
-*.orig
-*.patch
-.patch_number
-*.po
-*.pot
-*.rej
-*.sin
-/.tarball-version
-/.version
-ABOUT-NLS
-/aclocal.m4
-/aclocal.m4t
-autom4te.cache
-build-aux/
-!build-aux/gl/
-!build-aux/gnulib/
-!build-aux/m4/
-!build-aux/thanks-gen
-/ChangeLog
-/config.cache
-/config.h
-/config.h.in
-/config.log
-/config.status
-/configure
-cscope.*
-CVS
-/doc/.gitignore
-/doc/m4.1
-/doc/m4.??
-/doc/m4.???
-/doc/m4.html
-/doc/m4.info*
-/doc/manual
-/doc/stamp-vti
-/doc/version.texi
-/GNUmakefile
-/INSTALL
-libtool
-/m4-*
-/m4/gnu
-/m4/obstack.h
-/m4/pathconf.h
-/m4/system.h
-/maint.mk
-Makefile
-Makefile.in
-Makefile.inc
-/patches
-/po/.reference
-/po/*.sed
-/po/LINGUAS
-/po/Makefile.in.in
-/po/Makevars.template
-/po/POTFILES
-/po/Rules-quot
-/po/stamp-po
-/src/assure*
-/src/getopt*
-/src/m4
-/src/version-etc*
-/src/xstrto*
-/stamp-h
-/stamp-h1
-/stamp-h.in
-/stamp-vcl
-/tests/at-*
-/tests/atconfig
-/tests/atlocal
-/tests/m4
-/tests/generated.at
-/tests/gnu
-/tests/package.m4
-/tests/testsuite
-/tests/testsuite.dir
-/tests/testsuite.log
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 0d4d08ae..00000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "gnulib"]
- path = build-aux/gnulib
- url = git://git.sv.gnu.org/gnulib.git
diff --git a/.prev-version b/.prev-version
deleted file mode 100644
index f689e8c1..00000000
--- a/.prev-version
+++ /dev/null
@@ -1 +0,0 @@
-1.4.18
diff --git a/.x-update-copyright b/.x-update-copyright
deleted file mode 100644
index d0a3998e..00000000
--- a/.x-update-copyright
+++ /dev/null
@@ -1 +0,0 @@
-ltdl/m4/gnulib-cache.m4
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 73ce2f95..00000000
--- a/AUTHORS
+++ /dev/null
@@ -1,43 +0,0 @@
-Authors of GNU M4.
-
-The following contributors have warranted legal paper exchanges with
-the Free Software Foundation for their contributions to GNU M4. Also
-see the files ChangeLog and THANKS. This list results from searching
-for /\bM4\b/ in the file /gd/gnuorg/copyright.list on the
-fencepost.gnu.org machine.
-
-Rene' Seindal seindal@diku.dk 1990-03-28
-James L. Avera jima@netcom.com 1993-10-04
-Pete Chown pete.chown@dale.dircon.co.uk 1994-06-28
-John Gerard Makecki johnm@vlibs.com 1995-04-24
-Francois Pinard pinard@iro.umontreal.ca 1996-02-01
-Thomas Tanner tanner@ffii.org 1999-06-23
-Gary V. Vaughan gary@gnu.org 2000-10-02
-Yuji Minejima ? 2001-05-09
-Akim Demaille akim@freefriends.org 2001-11-01
-Andrew James Bettison andrewb@zip.com.au 2001-11-19
-Noah Jeffrey Misch noah@cs.caltech.edu 2004-07-05
-Michael Elizabeth Chastain mec@shout.net 2001-12-27
-William C. Cox bill@qswtools.com 2004-12-04
-Alexandre Duret-Lutz adl@gnu.org 2004-12-04
-John Gatewood Ham zappaman@buraphalinux.org 2005-11-01
-Eric Benjamin Blake ebb9@byu.net 2006-01-18
-John Brzustowski jbrzusto@fastmail.fm 2006-03-06
-Ralf Wildenhues Ralf.Wildenhues@gmx.de 2006-03-20
-Markus Duft markus.duft@salomon.at 2006-08-03
-Joel E. Denny jdenny@clemson.edu 2009-08-18
-David Warme David.Warme@Group-W-Inc.com 2010-03-10
-Raphael Poss m4-patches@raphael.poss.name 2010-10-04
-Tim Rice tim@multitalents.net 2011-01-24
-
-========================================================================
-
-Copyright (C) 2000, 2006-2007, 2010, 2013-2014, 2017 Free Software
-Foundation, Inc.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts. A copy of the license is included in the ``GNU Free
-Documentation License'' file as part of this distribution.
diff --git a/COPYING b/COPYING
deleted file mode 100644
index a9e5a4cc..00000000
--- a/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007, 2013-2014, 2017 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- 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
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/ChangeLog.old b/ChangeLog.old
deleted file mode 100644
index ab146a8e..00000000
--- a/ChangeLog.old
+++ /dev/null
@@ -1,12324 +0,0 @@
-2010-03-02 Giuseppe Scrivano (tiny change)
-
- Support bootstrap --gnulib-srcdir=DIR.
- * bootstrap: Add --gnulib-srcdir option, which overrides
- GNULIB_SRCDIR, for consistency with gnulib bootstrap.
-
-2010-03-01 Eric Blake
-
- Mention release of version 1.4.14.
- * gnulib: Update to latest.
- * README: Drop CVS mention.
- * HACKING: Tweak release instructions.
- * NEWS: Mention the release.
- * .prev-version: Record previous version.
- * cfg.mk (old_NEWS_hash): Auto-update.
-
-2010-02-24 Eric Blake
-
- Improve parsing example.
- * doc/m4.texinfo (Input processing): Double-quote argument to
- translit, for robustness.
- * THANKS: Update.
- Reported by Chris Penev.
-
-2010-01-29 Eric Blake
-
- Document upcoming release.
- * gnulib: Update to latest.
- * doc/m4.texinfo (History): Mention 1.4.14.
- * Makefile.am (src/getopt.h): Drop dependence on now-obsolete
- link-warning.h.
-
-2010-01-08 Eric Blake
-
- Address remaining 'make syntax-check' findings.
- * gnulib: Update to latest.
- * Makefile.am (tests/package.m4): Avoid @@ substitution.
- (src_m4_LDADD): Link with libiconv.
- * m4/m4private.h (STREQ): New macro.
- * m4/resyntax.c (m4_regexp_syntax_encode): Use it.
- * src/main.c (process_file): Likewise.
- (includes): Drop unused header.
- * m4/macro.c (m4_arg_equal): Adjust comment.
- * m4/syntax.c: Likewise.
- * m4/system_.h: Avoid useless preprocessor parenthesis.
- * ltdl/m4/stackovf.m4 (M4_SYS_STACKOVF): Likewise.
- * src/stackovf.c: Likewise.
- (setup_stackovf_trap): Mark diagnostics.
- * modules/mpeval.c (includes): Move quotearg.h inclusion...
- * modules/evalparse.c (includes): ...to where it is used.
- * cfg.mk (local-checks-to-skip): Exempt tests that cause spurious
- failures, but first fix what they were intended to detect.
- (_makefile_at_at_check_exceptions): Allow an exception.
-
-2010-01-07 Eric Blake
-
- Use correct license on auxiliary documentation.
- * gnulib: Update to latest.
- * AUTHORS: Use GFDL 1.3, not 1.2.
- * README-alpha: Likewise.
- * README: Likewise.
- * THANKS: Likewise.
- * doc/STYLE: Likewise.
- * modules/README: Likewise.
- * NEWS: Place under GFDL.
- * TODO: Likewise.
- * cfg.mk (old_NEWS_hash): Update.
-
- Address 'make sc_error_message_uppercase' failures.
- * m4/output.c (m4_freeze_diversions): Silence false positive.
- * src/main.c (main): Use 'warning', not 'Warning', in messages.
- * m4/utility.c (m4_verror_at_line): Likewise.
- * doc/m4.texinfo (Operation modes, Macro Arguments, Undefine)
- (Defn, Pushdef, Indir, Builtin, Ifdef, Ifelse, Dumpdef, Trace)
- (Debuglen, Debugfile, Dnl, Changeresyntax, Standard Modules)
- (Index macro, Regexp, Substr, Translit, Patsubst, Format, Incr)
- (Eval, Mkstemp, Syncoutput, Improved forloop)
- (Improved fatal_error): Adjust expected output.
- * tests/builtins.at (define, mkdtemp, mkstemp): Likewise.
- * tests/freeze.at (loading format 1, reloading unknown builtin):
- Likewise.
- * tests/macros.at (Arity and defn, 'Arity, defn, and freeze')
- (pushdef/popdef): Likewise.
- * tests/null.err: Likewise.
- * tests/options.at (deprecated options, POSIXLY_CORRECT)
- (--fatal-warnings, --regexp-syntax, --syncoutput): Likewise.
- * tests/others.at (nul character, stdin seekable): Likewise.
- * tests/modules.at (AT_CHECK_M4_MODTEST, modules: text):
- Likewise.
-
- Address 'make sc_cast_of_argument_to_free' failures.
- * m4/m4private.h (DELETE): Adjust comment and fix parentheses.
- * m4/m4.c (m4_delete): Use it to avoid warning.
- * m4/module.c (install_builtin_table, module_remove): Likewise.
- * m4/symtab.c (m4_symbol_value_delete, m4_symbol_value_copy):
- Likewise.
- * .x-sc_cast_of_argument_to_free: New file.
- * Makefile.am (syntax_check_exceptions): Distribute exceptions.
-
- More whitespace cleanup.
- * HACKING: Nuke trailing whitespace.
- * examples/WWW/Makefile: Likewise.
- * examples/WWW/_footer.htm: Likewise.
- * examples/WWW/_header.htm: Likewise.
- * examples/WWW/m4lib/bugs.m4: Likewise.
- * examples/WWW/m4lib/html.m4: Likewise.
- * examples/WWW/m4lib/menu.m4: Likewise.
- * examples/WWW/m4lib/visions.m4: Likewise.
- * examples/esyscmd.m4: Likewise.
- * examples/fstab.m4: Avoid space-tab.
- * examples/patsubst.m4: Likewise.
- * NEWS: Prefer space over tab for alignment.
- * THANKS: Likewise.
- * TODO: Likewise.
- * bootstrap: Likewise.
- * configure.ac: Likewise.
- * ltdl/m4/stackovf.m4: Likewise.
- * m4/hash.c: Likewise.
- * m4/hash.h: Likewise.
- * m4/input.c: Likewise.
- * m4/m4.c: Likewise.
- * m4/m4module.h: Likewise.
- * m4/m4private.h: Likewise.
- * m4/macro.c: Likewise.
- * m4/module.c: Likewise.
- * m4/output.c: Likewise.
- * m4/path.c: Likewise.
- * m4/resyntax.c: Likewise.
- * m4/symtab.c: Likewise.
- * m4/syntax.c: Likewise.
- * m4/system_.h: Likewise.
- * modules/evalparse.c: Likewise.
- * modules/format.c: Likewise.
- * modules/gnu.c: Likewise.
- * modules/import.c: Likewise.
- * modules/load.c: Likewise.
- * modules/m4.c: Likewise.
- * modules/m4.h: Likewise.
- * modules/modtest.c: Likewise.
- * modules/mpeval.c: Likewise.
- * modules/perl.c: Likewise.
- * modules/shadow.c: Likewise.
- * modules/stdlib.c: Likewise.
- * modules/time.c: Likewise.
- * modules/traditional.c: Likewise.
- * src/freeze.c: Likewise.
- * src/main.c: Likewise.
- * src/stackovf.c: Likewise.
- * tests/stackovf.test: Likewise.
- * doc/STYLE: Mention the change.
-
-2010-01-05 Eric Blake
-
- Document new indentation policy.
- * HACKING: Document indentation policy.
- * .x-sc_prohibit_tab_based_indentation: New file.
- * cfg.mk (sc_prohibit_tab_based_indentation): New rule.
- * Makefile.am (syntax_check_exceptions): Ship exception.
-
- Switch to indentation by space, not tab.
- * .gitmodules: Convert leading tabs to spaces.
- * TODO: Likewise.
- * bootstrap: Likewise.
- * configure.ac: Likewise.
- * examples/WWW/m4lib/html.m4: Likewise.
- * examples/WWW/m4lib/layout.m4: Likewise.
- * examples/WWW/m4lib/menu.m4: Likewise.
- * ltdl/m4/debug.m4: Likewise.
- * ltdl/m4/gmp.m4: Likewise.
- * ltdl/m4/m4-obstack.m4: Likewise.
- * ltdl/m4/stackovf.m4: Likewise.
- * m4/builtin.c: Likewise.
- * m4/debug.c: Likewise.
- * m4/hash.c: Likewise.
- * m4/hash.h: Likewise.
- * m4/input.c: Likewise.
- * m4/m4.c: Likewise.
- * m4/m4module.h: Likewise.
- * m4/m4private.h: Likewise.
- * m4/macro.c: Likewise.
- * m4/module.c: Likewise.
- * m4/output.c: Likewise.
- * m4/path.c: Likewise.
- * m4/resyntax.c: Likewise.
- * m4/symtab.c: Likewise.
- * m4/syntax.c: Likewise.
- * m4/utility.c: Likewise.
- * modules/evalparse.c: Likewise.
- * modules/format.c: Likewise.
- * modules/gnu.c: Likewise.
- * modules/load.c: Likewise.
- * modules/m4.c: Likewise.
- * modules/m4.h: Likewise.
- * modules/mpeval.c: Likewise.
- * modules/perl.c: Likewise.
- * modules/stdlib.c: Likewise.
- * modules/time.c: Likewise.
- * src/freeze.c: Likewise.
- * src/m4.h: Likewise.
- * src/main.c: Likewise.
- * src/stackovf.c: Likewise.
- * tests/builtins.at: Likewise.
- * tests/freeze.at: Likewise.
- * tests/generate.awk: Likewise.
- * tests/modules.at: Likewise.
- * tests/others.at: Likewise.
- * tests/stackovf.test: Likewise.
- * tests/testsuite.at: Likewise.
-
- Update copyright year.
- All files impacted, via 'make update-copyright'. Additionally:
- * .gitignore: Ignore backup files.
-
- Prepare to bulk update copyright year.
- * gnulib: Update.
- * ltdl/m4/gnulib-cache.m4: Import update-copyright module.
- * cfg.mk (update-copyright-env): Enforce longhand behavior.
- * .x-update-copyright: New file.
- * Makefile.am (syntax_check_exceptions): Distribute exception.
- * ltdl/m4/debug.m4: Add FSF copyright.
- * ltdl/m4/m4-error.m4: Fix FSF name in copyright.
- * ltdl/m4/m4-getopt.m4: Likewise.
- * ltdl/m4/m4-gettext.m4: Likewise.
- * ltdl/m4/m4-obstack.m4: Likewise.
- * ltdl/m4/m4-regex.m4: Likewise.
- * ltdl/m4/m4-rename.m4: Likewise.
- * ltdl/m4/m4-syscmd.m4: Likewise.
- * modules/modtest.m4: Likewise.
- * modules/perl.m4: Likewise.
- * modules/shadow.m4: Likewise.
- * modules/stdlib.m4: Likewise.
- * modules/time.m4: Likewise.
- * modules/time2.m4: Likewise.
- * tests/iso8859.m4: Likewise.
-
- Use gnulib maintainer-makefile module.
- * ltdl/m4/gnulib-cache.m4: Import maintainer-makefile module.
- * cfg.mk (local-checks-to-skip): Drop changelog-check; add
- sc_cast_of_x_alloc_return_value.
- (gnu_ftp_host-alpha, gnu_ftp_host-beta, gnu_ftp_host-major)
- (gnu_rel_host): Delete; provided by maint.mk.
- (old_NEWS_hash): New macro.
- * .prev-version: New file.
- * .x-sc_require_config_h: Likewise.
- * .x-sc_require_config_h_first: Likewise.
- * Makefile.am (syntax_check_exceptions, EXTRA_DIST): Ship new
- files.
- * maint.mk: Remove from version control; use gnulib instead.
- * .gitignore: Update.
-
- Update to latest gnulib.
- * gnulib: Update.
- * ltdl/m4/gnulib-cache.m4: Import xoset.
- * m4/output.c (includes): Ensure that gnulib oset usage will
- call xalloc_die on memory failure.
- * Makefile.am (src/getopt.h): Update snippet from gnulib.
- (LINK_WARNING_H, ARG_NONNULL_H): New macros.
-
- Fix testsuite failure on newer glibc.
- * tests/testsuite.at (AT_CHECK_M4): Tolerate alternate getopt
- spellings.
- * tests/options.at (deprecated options, unknown option)
- (--debugmode): Adjust expected output accordingly.
- Reported by Ralf Wildenhues.
-
-2009-11-26 Eric Blake
-
- Update to newer gnulib.
- * gnulib: Update.
- * ltdl/m4/gnulib-cache.m4: Import inttypes, setenv, and unsetenv
- modules.
- * modules/m4.c (m4_make_temp): Adjust gen_tempname client.
- * bootstrap (src_modules): Pick up getopt-gnu and its
- dependencies.
- * configure.ac (gl_VERSION_ETC): Support ./configure
- --with-packager.
- (AC_CHECK_FUNCS_ONCE): Rely on gnulib for setenv, unsetenv.
- * ltdl/m4/m4-getopt.m4: Rewrite to match current gnulib.
- * Makefile.am (src/getopt.h): Likewise.
- * modules/stdlib.c (setenv, unsetenv): Rely on gnulib.
-
-2009-08-24 Eric Blake
-
- 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
-
- Use bitrotate for hashing.
- * gnulib: Update to latest.
- * ltdl/m4/gnulib-cache.m4: Import bitrotate module.
- * m4/hash.c (m4_hash_string_hash): Use it.
-
- Fix description of limits on diversions.
- * doc/m4.texinfo (Diversions): Fix grammar. Be less pessimistic
- about limitations.
- * THANKS: Update.
- Reported by Elias Benali.
-
-2009-06-17 Eric Blake
-
- Stress test for hash resizing.
- * tests/builtins.at (define): Enhance test.
-
-2009-06-15 Eric Blake
-
- Document why bootstrap might touch state of tree.
- * bootstrap: Fix typos. Add comment.
- * HACKING: Add notes about this scenario.
- * gnulib: Update to latest version.
- * .gitignore: Track gnulib changes.
-
- Drop .cvsignore and redundant .gitignore files.
- * .cvsignore: Delete. We are moving further away from CVS.
- * build-aux/.cvsignore: Likewise.
- * doc/.cvsignore: Likewise.
- * examples/.cvsignore: Likewise.
- * ltdl/.cvsignore: Likewise.
- * m4/.cvsignore: Likewise.
- * modules/.cvsignore: Likewise.
- * po/.cvsignore: Likewise.
- * src/.cvsignore: Likewise.
- * tests/.cvsignore: Likewise.
- * .gitignore: Consolidate from other files.
- * build-aux/.gitignore: Delete, now that it is consolidated.
- * doc/.gitignore: Likewise.
- * examples/.gitignore: Likewise.
- * ltdl/.gitignore: Likewise.
- * m4/.gitignore: Likewise.
- * modules/.gitignore: Likewise.
- * po/.gitignore: Likewise.
- * src/.gitignore: Likewise.
- * tests/.gitignore: Likewise.
- * bootstrap: Simplify accordingly. Sync gnulib tree prior to
- libtoolize, to avoid libtool overwriting config.guess.
-
- Avoid compiler warning.
- * m4/macro.c (process_macro): Use correct type for isdigit.
-
-2009-06-13 Eric Blake
-
- Avoid snprintf link failures.
- * ltdl/m4/gnulib-cache.m4: Import snprintf-posix module.
- Reported by Ralf Wildenhues.
-
-2009-06-12 Ralf Wildenhues
-
- Avoid pointer arithmetic on `void *'.
- * modules/m4.c (dump_symbol_CB): Cast obstack_base return value
- to `char *' before using it.
-
-2009-05-04 Eric Blake
-
- Silence verbose testsuite runs.
- * tests/testsuite.at (m4_version_prereq): Bump to recent
- autoconf.git version where stdout-nolog was added.
- * tests/builtins.at (esyscmd, syscmd): Use new stdout-nolog.
- * tests/freeze.at (AT_TEST_FREEZE): Likewise.
- * tests/others.at (stderr closed): Likewise.
- * HACKING: Mention new requirement.
- * bootstrap: Likewise.
- Reported by Ralf Wildenhues.
-
-2009-04-21 Eric Blake
-
- Be more explicit about default quoting characters.
- * doc/m4.texinfo (Quoted strings): Call out characters by name.
- * THANKS: Update.
- Suggested by Mehul Sanghvi.
-
-2009-04-16 Eric Blake
-
- Use gnulib rename module.
- * ltdl/m4/gnulib-cache.m4: Import rename module. At the moment,
- we don't tickle either of the platform bugs that it fixes, but it
- is better to be safe than sorry.
-
- Require newer automake features.
- * configure.ac (AM_INIT_AUTOMAKE): Add dist-xz, color-tests,
- parallel-tests, and silent-rules. Drop dist-lzma.
- * HACKING: Update minimum requirements.
- * gnulib: Update to latest version.
-
- Mention release of 1.4.13.
- * NEWS: Update to match release on branch-1.4.
- * doc/m4.texinfo (History): Update release history.
- (copying): Finish conversion to GFDL 1.3, started 2008-11-04.
-
-2009-03-23 Eric Blake
-
- Exploit git submodule by adding appropriate symlinks.
- * bootstrap: No longer copy files from gnulib.
- * COPYING: Change to symlink pointing into gnulib.
- * INSTALL: Likewise.
- * build-aux/compile: Likewise.
- * build-aux/config.guess: Likewise.
- * build-aux/config.sub: Likewise.
- * build-aux/depcomp: Likewise.
- * build-aux/install-sh: Likewise.
- * build-aux/mdate-sh: Likewise.
- * build-aux/missing: Likewise.
- * build-aux/texinfo.tex: Likewise.
- * .cvsignore: Reflect these changes.
- * .gitignore: Likewise.
- * build-aux/.cvsignore: New file.
- * build-aux/.gitignore: Likewise.
-
- Make gnulib a git submodule.
- * .gitmodules: New file.
- * gnulib: Record which version of gnulib has been tested.
- * bootstrap: Aid in submodule usage.
- * cfg.mk (gnulib_dir): Alter default location of gnulib.
- * HACKING: Mention how to use submodule.
-
-2009-03-21 Eric Blake
-
- Use memcmp2 to simplify lexicographic comparisons.
- * ltdl/m4/gnulib-cache.m4: Import memcmp2.
- * modules/m4.c (dumpdef_cmp_CB): Use it.
-
-2009-03-19 Ralf Wildenhues
-
- Fix m4.1 build race, exposed by parallelism through GNUmakefile.
- * Makefile.am (SUBDIRS): Add doc.
- (Documentation rules): Move ...
- * doc/Makefile.am: ... to this new file.
- * configure.ac (AC_CONFIG_FILES): Generate doc/Makefile.
-
-2009-03-13 Eric Blake
-
- Try to tolerate spaces in directory names in testsuite.
- * tests/null.m4: Provide shell quoting, in case __program__
- contains spaces.
-
- Fix awk script portability.
- * checks/get-them: In gsub, properly escape {.
- Reported by Gary V. Vaughan.
-
- Make bootstrap easier on Solaris.
- * bootstrap: Add GNULIB_SRCDIR. Useful when a wrapper script
- gnulib-tool exists earlier on the path to work around /bin/sh
- failure in parsing $GNULIB_SRCDIR/gnulib-tool.
-
-2009-03-13 Eric Blake
-
- Allow configuration choice in syscmd shell.
- * ltdl/m4/m4-syscmd.m4: New file.
- * configure.ac (M4_SYSCMD): Use it to provide
- --with-syscmd-shell.
- (AC_CHECK_HEADERS_ONCE): No longer need to worry about
- .
- * modules/m4.c (syscmd): Use it to avoid hard-coding the shell
- location.
- * modules/gnu.c (esyscmd): Likewise.
- * doc/m4.texinfo (Syscmd, Esyscmd): Document this.
- * README: Document new configure option.
- * NEWS: Likewise.
-
- Use gnulib pipe module instead of popen(3).
- * ltdl/m4/gnulib-cache.m4: Import pipe and wait-process modules.
- * modules/gnu.c (M4_SYSVAL_EXITBITS, M4_SYSVAL_TERMSIGBITS):
- Delete.
- (esyscmd): Rewrite with pipe module.
- Resolves a failure on AIX, reported by Gary V. Vaughan.
-
- Use gnulib execute module instead of system(3).
- * ltdl/m4/gnulib-cache.m4: Import execute module.
- * m4/utility.c (m4_info_name): New function.
- * m4/m4module.h (m4_info_name): New prototype.
- * modules/m4.c (syscmd): Rewrite with execute module.
- (M4_SYSVAL_EXITBITS, M4_SYSVAL_TERMSIGBITS, m4_sysval): Move
- computation...
- * modules/gnu.c (M4_SYSVAL_EXITBITS, M4_SYSVAL_TERMSIGBITS)
- (esyscmd): ...here.
- Resolves a failure on AIX, reported by Gary V. Vaughan.
-
-2009-03-05 Eric Blake
-
- Improve web-manual maintainer rule.
- * maint.mk (web-manual): Factor package-specific detail...
- * cfg.mk (manual_title): ...to new variable.
-
-2009-02-23 Eric Blake
-
- Speed up translit when from argument is short.
- * modules/m4.c (translit): Use memchr2 when possible.
- * tests/builtins.at (translit): Add tests.
- * NEWS: Document this.
-
-2009-02-18 Eric Blake
-
- Prefer buffer over byte operations.
- * modules/format.c (format): Use memchr for speed.
- * modules/gnu.c (substitute): Likewise.
- * m4/macro.c (locate_dollar): Inline into only caller...
- (process_macro): ...and rearrange for readability.
- * m4/input.c (consume_buffer): Allow C++ compilation.
- * doc/m4.texinfo (Changesyntax): Enhance test.
-
- Speed up esyscmd with buffer reads.
- * modules/gnu.c (esyscmd): Read blocks directly into obstack,
- rather than repeatedly reading bytes. Detect read errors.
-
- Avoid risk of stack overflow.
- * m4/output.c (insert_file): Avoid stack allocation of large
- buffer.
-
- Synchronize THANKS with branch.
- * THANKS: Import more names.
-
- Improve handling of $ in syntax table.
- * m4/m4module.h (m4_is_syntax_single_dollar): New function.
- (M4_SYNTAX_DOLLAR, M4_SYNTAX_LBRACE, M4_SYNTAX_RBRACE): Change to
- be context rather than basic syntax categories.
- (M4_SYNTAX_MASKS): Adjust macro.
- * m4/m4private.h (struct m4_syntax_table): Add dollar and
- is_single_dollar members.
- (m4_is_syntax_single_dollar): Add fast alternative.
- * m4/syntax.c (m4_syntax_create, reset_syntax_set): Adjust to
- account for change to context categories.
- (m4_set_syntax): Manage is_single_dollar.
- (m4_is_syntax_single_dollar): New function.
- * m4/macro.c (locate_dollar): New helper function.
- (process_macro): Use it to speed up macro expansion.
- * m4/input.c (m4__next_token): Adjust client.
- * doc/m4.texinfo (Changesyntax): Document this.
-
-2009-02-17 Eric Blake
-
- Sync changecom documentation with branch.
- * doc/m4.texinfo (Changecom): Tweak wording.
- * NEWS: Import changes from the branch.
-
- Stage 29b: Process quotes and comments by buffer, not bytes.
- Search for quote and comment delimiters by buffer when possible.
- Memory impact: none.
- Speed impact: noticeable improvement, from fewer function calls.
- * ltdl/m4/gnulib-cache.m4: Import memchr2 module.
- * m4/input.c (m4__next_token): Add buffer reads to quote and
- comment parsing.
- * NEWS: Document this.
-
-2009-02-16 Eric Blake
-
- Stage 29a: Process dnl and macro names by buffer, not bytes.
- Enhance input engine to provide lookahead buffer, rather than
- forcing clients to call next_char for every byte. Utilize this
- for the simplest clients.
- Memory impact: none.
- Speed impact: noticeable improvement, from fewer function calls.
- * ltdl/m4/gnulib-cache.m4: Import freadptr and freadseek modules.
- * m4/input.c (struct input_funcs): Add virtual functions
- buffer_func and consume_func.
- (file_buffer, file_consume, string_buffer, string_consume)
- (composite_buffer, composite_consume, eof_buffer): Implement
- them.
- (file_funcs, string_funcs, composite_funcs, eof_funcs): Update
- vtables accordingly.
- (buffer_retry): New sentinel.
- (next_buffer, consume_buffer): New functions.
- (m4_skip_line, match_input, consume_syntax): Use them for faster
- parsing.
- Suggested by Bruno Haible.
-
- Unify single and multi-character delimiter handling.
- * m4/input.c (MATCH): Add a parameter.
- (m4__next_token): Simplify logic and reduce redundancy.
- (m4__next_token_is_open): Adjust caller.
- * m4/syntax.c (m4_set_comment, m4_set_quotes): Handle delimiters
- of differing lengths.
- (m4_set_syntax): Recognize restoration of single delimiters.
-
- Revamp changesyntax vs. changequote interactions.
- * m4/m4module.h (M4_SYNTAX_VALUE): Delete unused macro.
- (M4_SYNTAX_SUSPECT): New macro.
- * m4/m4private.h (struct m4_syntax_table): Add suspect field.
- * m4/syntax.c (check_is_single_quotes, check_is_single_comments)
- (check_is_macro_escaped): Delete, by inlining body...
- (m4_set_syntax): ...into here. Improves handling between
- changesyntax and changequote/changecom.
- (add_syntax_set, subtract_syntax_set, set_syntax_set): Simplify,
- and let suspect field track needed cleanup.
- (m4_set_quotes, m4_set_comment): Adjust meaning of
- is_single_quotes and is_single_comment flags to always be true if
- only one delimiter exists, regardless of its length. Ensure that
- the syntax categories M4_SYNTAX_LQUOTE and M4_SYNTAX_BCOMM are
- only used on 1-byte delimiters.
- (add_syntax_attribute, remove_syntax_attribute): Change signature
- to allow the use of fewer casts. Adjust the suspect field when
- necessary.
- (m4_reset_syntax, set_quote_age): Adjust callers.
- * m4/input.c (m4__next_token, m4__next_token_is_open): Simplify
- callers.
- * doc/m4.texinfo (Changesyntax): Update documentation and tests.
-
- Improve changesyntax documentation.
- * doc/m4.texinfo (Changesyntax): Merge two tables into one
- multitable.
-
- Fix regression in multicharacter quotes, from 2008-01-26.
- * m4/input.c (m4__next_token): Fix typo.
- * tests/builtins.at (changequote): Enhance test.
-
-2009-02-13 Eric Blake
-
- Speed up parsing when detecting input file change.
- * m4/input.c (next_char): Clear input_change flag. Bug introduced
- 2006-10-25.
-
-2009-02-12 Eric Blake
-
- Avoid quadratic code when walking definition stack.
- * examples/stack_sep.m4: Use linear, not quadratic
- implementation.
- * doc/m4.texinfo (Improved copy): Fix documentation, based on
- recent autoconf bug fix.
- * tests/others.at (recursion): Enhance test.
-
-2009-02-11 Eric Blake
-
- Stage 28c: Warn on embedded NUL in remaining cases.
- Ensure all remaining warnings can handle embedded NUL.
- Memory impact: none.
- Speed impact: none noticed.
- * m4/m4module.h (m4_debug_decode, m4_parse_truth_arg): Add
- parameter.
- * m4/macro.c (m4_macro_call): Improve diagnostic.
- * modules/m4.c (defn): Likewise.
- * m4/debug.c (m4_debug_decode): Handle embedded NUL.
- * m4/utility.c (m4_parse_truth_arg): Likewise.
- * modules/format.c (arg_int, arg_long, arg_double): Likewise.
- (arg_string): New function.
- (ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE): Update callers.
- * src/main.c (main): Likewise.
- * src/freeze.c (reload_frozen_state): Likewise.
- * modules/gnu.c (debugmode, syncoutput): Likewise.
- * tests/options.at (--regexp-syntax): Adjust test.
- * tests/freeze.at (reloading nul): Likewise.
- * tests/null.m4: Likewise.
- * tests/null.out: Likewise.
- * tests/null.err: Likewise.
-
- Stage 28b: Warn on embedded NUL in file arguments.
- Quote warning messages related to file and other NUL-terminated
- system commands.
- Memory impact: none.
- Speed impact: none noticed.
- * m4/path.c (m4_path_search): Quote file names in message.
- * modules/m4.c (syscmd, include, m4_make_temp): Handle embedded
- NUL.
- * modules/gnu.c (debugfile, esyscmd): Likewise.
- * tests/others.at (nul character): Adjust test.
- * tests/builtins.at (mkdtemp, mkstemp): Likewise.
- * tests/null.m4: Likewise.
- * tests/null.out: Likewise.
- * tests/null.err: Likewise.
-
- Stage 28a: Warn on embedded NUL in numeric arguments.
- Quote warning messages related to numeric parsing in order to
- handle embedded NUL.
- Memory impact: none.
- Speed impact: none noticed.
- * m4/m4module.h (m4_numeric_arg): Adjust prototype.
- * m4/utility.c (m4_numeric_arg): Add parameter.
- * modules/gnu.c (debuglen): Adjust callers.
- * modules/m4.c (incr, decr, divert, undivert, m4exit, substr)
- (index): Likewise.
- * modules/evalparse.c (m4_evaluate): Likewise.
- * modules/stdlib.c (setenv, getpwuid, srand): Likewise.
- * modules/time.c (ctime, gmtime, localtime, mktime, strftime):
- Likewise.
- * doc/m4.texinfo (Changesyntax): Fix typo.
- * tests/others.at (nul character): Adjust test.
- * tests/null.m4: Likewise.
- * tests/null.out: Likewise.
- * tests/null.err: Likewise.
-
-2009-02-11 Eric Blake
-
- Avoid regression in popdef(undef).
- * doc/m4.texinfo (Trace): Enhance test, to cover regression
- recently fixed on the branch.
-
-2009-02-09 Eric Blake
-
- Enhance index to support starting offset.
- * modules/m4.c (index): Add optional third argument.
- * NEWS: Document this.
- * doc/m4.texinfo (Index macro): Likewise.
- (Macro Arguments): Adjust tests.
-
-2009-01-24 Eric Blake
-
- Add URLs to --help output.
- * src/main.c (usage): Use enhanced version-etc features.
-
-2009-01-07 Eric Blake
-
- Enhance substr to support replacement text.
- * doc/m4.texinfo (Substr): Document new semantics.
- * modules/m4.c (substr): Support optional fourth argument.
- * NEWS: Document this.
-
- Enhance substr to support negative values.
- * doc/m4.texinfo (Substr): Document new semantics, and how to
- simulate old.
- * modules/m4.c (substr): Support negative values.
- * NEWS: Document this.
-
-2009-01-05 Eric Blake
-
- Maintainer cleanups.
- * HACKING: Remove mention of xdelta.
- * Makefile.am (EXTRA_DIST, MAINTAINERCLEANFILES): Let gnulib take
- care of distributing gendocs.sh.
- * maint.mk (web-manual): Use new feature of gendocs.
- * ltdl/m4/gnulib-cache.m4: Regenerate.
-
-2008-12-24 Eric Blake
-
- Relax eval as allowed by POSIX 2008.
- * modules/evalparse.c (m4_evaluate): Warn, not error, on invalid
- operator. Quote expression in warning.
- * modules/mpeval.c (includes): Add quotearg.h.
- * doc/m4.texinfo (Eval, Improved forloop): Update tests.
- * NEWS: Update to reflect 1.6 support for `?:'.
-
-2008-12-23 Eric Blake
-
- Add debugmode(o) to control dumpdef output location.
- * m4/m4module.h (M4_DEBUG_TRACE_OUTPUT_DUMPDEF): New enumerator.
- (M4_DEBUG_TRACE_VERBOSE): Update.
- * m4/debug.c (m4_debug_decode): Support new debug option.
- * src/freeze.c (produce_debugmode_state): Likewise.
- * modules/m4.c (dumpdef): When set, force dumpdef to stderr rather
- than the debug file.
- * src/main.c (usage): Document it.
- * doc/m4.texinfo (Debugmode, Dumpdef, Debugging options)
- (Debugfile): Likewise.
- * NEWS: Likewise.
- Based on an autoconf bug report by Paolo Bonzini.
-
- Make --debugfile argument optional.
- * src/main.c (long_options): Make the argument optional, to allow
- setting debug file back to stderr.
- (main): Make --debugfile order-dependent.
- (usage): Document this.
- * doc/m4.texinfo (Debugging options): Likewise.
- * NEWS: Likewise.
- * tests/options.at (--debugfile): Enhance test.
- (--safer): Adjust to new semantics.
-
-2008-12-22 Eric Blake
-
- Use @var correctly.
- * doc/m4.texinfo (Operation modes, Preprocessor features)
- (Limits control, Frozen state, Debugging options)
- (Dynamic loading features): Use lower case names in @var.
- (Improved copy): Use @code, not @var, as appropriate.
-
-2008-12-18 Eric Blake
-
- Deal with M4 1.4.x limitation on builtin tokens.
- * doc/m4.texinfo (Composition): Mention limitation on curry.
- (Improved copy): New node.
- (Stacks): Fix typo.
- * examples/stack.m4: Likewise.
- * examples/stack_sep.m4: New file.
- * Makefile.am (dist_pkgdata_DATA): Distribute it.
-
-2008-12-15 Eric Blake
-
- Double size of temp file cache.
- * m4/output.c (tmp_file, tmp_file_owner): Split...
- (tmp_file1, tmp_file2, tmp_file1_owner, tmp_file2_owner): ...into
- two variables.
- (tmp_file2_recent): New variable.
- (m4_tmpopen, m4_tmpclose, m4_tmpremove, m4_tmprename)
- (m4_output_exit): Adjust callers.
-
- Use fewer seeks on cached files.
- * m4/output.c (m4_tmpfile): Use write, not append mode.
- (m4_tmpopen): Add parameter to decide when to skip seeks.
- (m4_tmprename, m4_make_diversion, insert_diversion_helper)
- (m4_freeze_diversions): Adjust callers.
-
- Cache most recently spilled diversion.
- * m4/output.c (tmp_file, tmp_file_owner): New variables, for
- 1-deep cache of spilled diversions.
- (m4_tmpfile): Open in append mode, since we might revisit
- diversion without closing it now.
- (m4_tmpopen): Check cache first.
- (m4_tmpclose): Update cache, rather than closing. Add parameter.
- (m4_tmpremove): Close cache before removing.
- (m4_tmprename): Deal with open files when renaming.
- (m4_output_exit): Close cache before exiting.
- (make_room_for, m4_make_diversion, insert_diversion_helper):
- Adjust callers.
- * ltdl/m4/m4-rename.m4 (M4_RENAME): New file.
- * configure.ac (M4_RENAME): Invoke it.
-
- Correctly track size of in-memory diversions.
- * m4/output.c (insert_diversion_helper): Correctly track total
- in-memory diversion size after undivert.
-
- Avoid quadratic behavior for some cases of divert/undivert.
- * m4/output.c (struct m4_diversion): Improve comments.
- (m4_tmpname, m4_make_diversion): Strengthen preconditions.
- (m4_tmprename): New function.
- (m4_output_init, m4_output_exit): Move after internal functions.
- (make_room_for): Don't bother copying uninitialized bytes.
- (insert_diversion_helper): Transfer metadata, rather than copying
- contents, when undiverting into a previously unused diversion.
- * tests/builtins.at (divert): Add a check to the test.
- * doc/m4.texinfo (Undivert): Enhance test.
- * NEWS: Document the speedup.
-
-2008-12-02 Eric Blake
-
- Stage 27: Allow embedded NUL in text processing macros.
- Pass NUL through regular expressions, format, and translit, and
- diagnose it in eval and changeresyntax. Improve warning
- capabilities of format.
- Memory impact: none.
- Speed impact: none noticed.
- * modules/m4.c (m4_expand_ranges): Don't append extra bytes.
- (translit): Manage NUL bytes.
- * modules/format.c (format): Likewise.
- * modules/gnu.c (substitute, regexp_substitute): Likewise.
- (m4_resyntax_encode_safe): Add parameter.
- (regexp, patsubst, renamesyms): Update callers.
- (regexp_compile): Adjust error message.
- * modules/evalparse.c (m4_evaluate): Use consistent message.
- (end_text): New variable.
- (eval_init_lex): Add parameter.
- (eval_lex): Detect embedded NUL.
- * src/freeze.c (reload_frozen_state): Likewise.
- * doc/m4.texinfo (Format): Update to cover new behavior.
- (Eval): Mention that result is unquoted.
- * tests/freeze.at (reloading nul): Enhance test.
- * tests/null.m4: Likewise.
- * tests/null.err: Update expected output.
- * tests/null.out: Likewise.
- * tests/options.at (--regexp-syntax): Likewise.
-
-2008-11-28 Eric Blake
-
- Resync NEWS with branches.
- * NEWS: Mention 1.4.12, update state of 1.6.
-
-2008-11-26 Eric Blake
-
- Keep COPYING in repository.
- * Makefile.am (MAINTAINERCLEANFILES): Don't remove COPYING.
- * .cvsignore: Don't ignore it.
- * .gitignore: Likewise.
- * COPYING: Store in repository, per automake 1.10.2
- recommendation.
-
-2008-11-26 Eric Blake
-
- Document optimized forloop.
- * doc/m4.texinfo (Improved forloop): Mention alternate style that
- avoids define overhead.
- * examples/forloop3.m4: New file.
- * Makefile.am (dist_pkgdata_DATA): Distribute it.
-
- Document copy composite using stack_foreach and curry.
- * doc/m4.texinfo (Stacks): New node, to document pushdef stack
- manipulation.
- (Ifelse): Move define_blind...
- (Composition): ...to this new node. Document currying, then use
- it to implement copy and rename.
- * examples/curry.m4: New file.
- * examples/stack.m4: Likewise.
- * Makefile.am (dist_pkgdata_DATA): Distribute them.
-
-2008-11-04 Eric Blake
-
- Upgrade to FDL 1.3.
- * ltdl/m4/gnulib-cache.m4: Replace fdl module with fdl-1.3.
- * Makefile.am (doc_m4_TEXINFOS, MAINTAINERCLEANFILES): Reflect
- file change.
- * doc/m4.texinfo (GNU Free Documentation License): Likewise.
-
-2008-10-22 Eric Blake
-
- Give nicer error if user modifies testsuite but lacks autoconf.
- * Makefile.am (AUTOM4TE): Use missing in the definition.
-
-2008-10-09 Eric Blake
-
- Allow user to choose which sed to use in testsuite.
- * tests/atlocal.in (SED): Inherit from configure results.
- * tests/builtins.at (__m4_@&t@version__, divert, esyscmd)
- (mkstemp, syscmd): Use $SED.
- * tests/generate.awk (new_test): Likewise.
- * tests/options.at (deprecated options, unknown option)
- (--debugmode, --help and --version): Likewise.
- * tests/testsuite.at (AT_CHECK_M4): Likewise.
- * tests/others.at (directory, stderr closed, stdin seekable)
- (stdout closed): Likewise.
- (nul character): Likewise. Also, skip test if sed can't handle
- NUL bytes.
-
- Clean up testsuite invocation.
- * tests/atlocal.in: Fix copyright notice.
- * Makefile.am (TESTS_ENVIRONMENT): Delete; it wasn't being used.
- (check-local, installcheck-local): Adjust clients. Add missing
- dependency.
-
-2008-09-25 Eric Blake
-
- Tweak error message on command line failure.
- * m4/m4private.h (includes): Use "quotearg.h".
- * src/main.c (process_file, main): Use nicer quotes for file name
- in error messages.
- * m4/input.c (file_clean, m4_push_file): Likewise.
- * m4/module.c (m4__module_open): Likewise.
- * src/freeze.c (produce_frozen_state, reload_frozen_state):
- Likewise.
- * modules/gnu.c (debugfile): Likewise.
- * modules/m4.c (undivert, include): Likewise.
- * tests/others.at (directory, stdin closed): Update tests.
- * tests/options.at (file names, --debugmode): Likewise.
- * doc/m4.texinfo (Debugmode): Likewise.
-
- Unify error handling for reading directories.
- * m4/path.c (m4_path_search): Factor open attempts...
- (m4_fopen): ...into new function, to reject directories.
- * tests/others.at (directory): Enhance test.
- * doc/m4.texinfo (Include): Document that directories cannot be
- input files.
-
- Avoid bugs on platforms that mishandle trailing /.
- * ltdl/m4/gnulib-cache.m4: Import fopen module.
- * tests/others.at (directory): New test.
-
-2008-09-16 Eric Blake
-
- Fix bootstrap for Solaris /bin/sh.
- * bootstrap: Avoid shell quoting pitfall.
-
-2008-09-01 Ralf Wildenhues
-
- Typos in source code comments.
- * modules/m4.c: Fix typos in comments.
- * m4/input.c: Likewise.
- * src/main.c: Likewise.
-
-2008-08-29 Eric Blake
-
- Fix manual date information.
- * doc/m4.texinfo: UPDATED refers to the day the manual was built,
- not the release date of M4.
- Based on a bison patch by Akim Demaille.
-
-2008-08-27 Eric Blake
-
- Tweak -d examples.
- * doc/m4.texinfo (Invoking m4): Fix example, since order of -d
- matters.
- (Dumpdef): Fix typo.
-
-2008-08-23 Eric Blake
-
- Allow debugmode control over whether defn(undef) warns.
- * ltdl/m4/gnulib-cache.m4: Import verify module.
- * m4/m4module.h (M4_DEBUG_TRACE_DEREF, M4_DEBUG_TRACE_INITIAL):
- New values.
- (M4_DEBUG_TRACE_VERBOSE, M4_DEBUG_TRACE_DEFAULT): Adjust.
- * m4/m4.c (m4_create): Start with debugmode = d.
- * src/main.c (usage): Mention this.
- (main): Let -E impact debug mode.
- * m4/utility.c (m4_symbol_value_lookup): Squelch undefined warning
- if flag is clear.
- * modules/gnu.c (builtin, inder): Likewise.
- * m4/debug.c (m4_debug_decode): Parse new mode.
- * src/freeze.c (produce_debugmode_state): Accomodate new mode.
- * doc/m4.texinfo (Debugging options): Mention change in the
- default behavior.
- (Debugmode): Mention new flag d.
- (Operation modes): Mention interaction with -E.
- (Undefine, Defn, Pushdef, Indir, Builtin, Dumpdef): Document and
- test its effect.
- * tests/options.at (--debugmode): Update tests.
- * tests/freeze.at (reloading debugmode): Likewise.
- * NEWS: Document this.
- Reported by Ralf Wildenhues; without this patch, M4 1.6+ would be
- incompatible with Autoconf 2.62.
-
-2008-08-22 Eric Blake
-
- Improve --debugmode behavior.
- * m4/m4module.h (m4_debug_decode): Simplify interface.
- * m4/debug.c (m4_debug_decode): Remove parameter, and handle
- setting the new value.
- * modules/gnu.c (debugmode): Adjust caller.
- * src/freeze.c (reload_frozen_state): Likewise.
- * src/main.c (main): Likewise.
- (usage): Fix default for --debug.
- * doc/m4.texinfo (Debugging options): Add an example.
-
-2008-08-21 Eric Blake
-
- Avoid regression in defn(undef).
- * doc/m4.texinfo (Trace): Enhance test, to cover regression
- recently fixed on the branch.
-
-2008-08-18 Eric Blake
-
- Remove deprecated -N option; fixes a regression from 2006-09-14.
- * src/main.c (DIVERSIONS_OPTION): Delete.
- (long_options, OPTSTRING, main): Remove -N/--diversions option.
- * doc/m4.texinfo (Limits control): Remove it from the manual.
- * NEWS: Mention that it is gone.
- * tests/options.at (deprecated options): Update test.
-
- Improve 'git diff' of manual source.
- * .gitattributes (*.texi*): Add diff attribute.
- * bootstrap: Tell git how to use it.
- Inspired by Jim Meyering's similar patch for coreutils.
-
-2008-08-07 Bruno Haible (tiny change)
-
- Run m4 tests prior to gnulib unit tests.
- * Makefile.am (SUBDIRS): Swap order of directories.
-
-2008-08-03 Eric Blake
-
- Stage 26: Allow embedded NUL in macro definitions.
- Clean up final few locations that did not track macro definitions
- by length, to allow embedded NUL. Make m4_arg_len callers aware
- of issue of flattening builtins when determining length.
- Memory impact: none.
- Speed impact: none noticed.
- * m4/m4module.h (m4_arg_len): Add parameter.
- (M4ARGLEN): Provide default for the parameter.
- * m4/m4private.h (includes): Share xmemdup0.h among all libm4
- files.
- * m4/macro.c (m4_arg_len): Fail if builtins are not flattened.
- * m4/syntax.c (includes): Rely on m4private.h for xmemdup0.
- * m4/symtab.c (includes): Likewise.
- (m4_symbol_value_copy): Use xmemdup0.
- * m4/module.c (install_macro_table): Likewise.
- * src/freeze.c (reload_frozen_state): Likewise.
- * tests/freeze.at (reloading nul): Enhance test.
- * tests/null.m4: Likewise.
- * tests/null.err: Update expected output.
- * tests/null.out: Likewise.
-
- Fix regression in commenting unbalanced quotes, from 2008-02-16.
- * m4/m4private.h (m4__token_type): Add M4_TOKEN_COMMENT.
- * m4/input.c (m4__next_token, m4_print_token): Supply new token
- type for comments.
- * m4/macro.c (expand_token): Penalize comments, as they can
- contain unbalanced quotes; latent bug since 2007-12-07, exposed by
- passing $@ references built from comments.
- (expand_argument): Adjust caller.
- * tests/others.at (Comments): Enhance test to catch it.
- * NEWS: Mention the fix.
-
-2008-07-30 Eric Blake
-
- Fix regression in trace output, introduced 2008-05-08.
- * m4/input.c (m4__push_symbol): When cloning chains, break pointer
- back to original chain; latent bug from 2008-02-02 that did not
- cause misbehavior until trace output read unfinished chain.
- * tests/builtins.at (debug): Add test for this.
-
-2008-07-28 Eric Blake
-
- Optimize iteration examples.
- * examples/forloop2.m4: Avoid excess indir, by passing current
- counter value as parameter.
- * examples/foreachq3.m4: Avoid unneeded ifelse, by injecting an
- ignored argument.
- * doc/m4.texinfo (Improved forloop, Improved foreach): Update the
- documentation to match.
-
-2008-07-26 Eric Blake
-
- Give example for O(n) foreach on m4 1.4.x.
- * examples/foreachq4.m4: New file.
- * Makefile.am (dist_pkgdata_DATA): Distribute it.
- * tests/others.at (recursion): Test it.
- * doc/m4.texinfo (Improved foreach): Document linear foreach with
- m4 1.4.5 and greater.
-
-2008-07-19 Eric Blake
-
- Resynchronize docs from branch.
- * doc/m4.texinfo (Undefine, Pushdef): Mention warning on undefined
- name, particularly since the old documentation didn't match code.
- (Standard Modules): Add caveat about using __m4_version__.
-
-2008-07-11 Eric Blake
-
- Bump required automake to 1.10a; regression introduced 2008-01-22.
- * configure.ac (AM_INIT_AUTOMAKE): Undo requirement downgrade to
- 1.10.1, since we also rely on pkglibexecdir.
- * HACKING: Fix minimum requirement.
- * bootstrap: Likewise.
- * THANKS: Update.
- Reported by Joel E. Denny.
-
- Avoid bogus whitespace in @ovar, @dvar.
- * doc/m4.texinfo (ovar, dvar): Add @c.
- Based on patch by Ralf Wildenhues to Autoconf manual.
-
-2008-06-23 Eric Blake
-
- Adjust to new gnulib-tool layout.
- * ltdl/m4/gnulib-cache.m4: Reformat.
-
- Fix bootstrap comment.
- * bootstrap: DOWNLOAD_PO was previously removed.
-
-2008-06-19 Eric Blake
-
- Revert speed regression from 2008-06-16.
- * m4/output.c (m4_shipout_int): Avoid obstack_printf in hot path.
- * modules/m4.c (numb_obstack): Likewise.
- * m4/input.c (MATCH): Use fewer conditionals, and factor
- adjustment of S...
- (match_input): ...here for smaller code size.
- * m4/syntax.c (m4_reset_syntax, m4_set_quotes, m4_set_comment):
- Supply trailing NUL to delimiters, to meet contract of faster
- MATCH.
-
-2008-06-18 Eric Blake
-
- Whitespace cleanup.
- * m4/m4module.h: Use consistent spacing for pointer parameters.
- * m4/m4private.h: Likewise.
-
- Stage 25b: Handle embedded NUL in changesyntax and friends.
- Track quote and comment delimiters by length, to allow embedded
- NUL. Improve changesyntax to support assigning syntax to NUL.
- Memory impact: none.
- Speed impact: none noticed.
- * m4/m4module.h (m4_set_quotes, m4_set_comment, m4_set_syntax):
- Add parameter.
- (m4_reset_syntax): New prototype.
- * m4/syntax.c (add_syntax_set, subtract_syntax_set)
- (set_syntax_set, m4_set_quotes, m4_set_comment): Add parameter, to
- handle embedded NUL.
- (m4_set_syntax): Likewise. Also, split code to reset the table...
- (m4_reset_syntax): ...into a new function.
- (m4_syntax_create): Adjust callers.
- * m4/input.c (match_input, MATCH): Add parameter.
- (m4__next_token, m4__next_token_is_open): Adjust callers.
- * modules/m4.h (m4_expand_ranges_func): Add parameter.
- * modules/m4.c (dumpdef): Handle NUL in dumped quotes.
- (changequote, changecom, translit, m4_expand_ranges): Track
- delimiter length.
- * modules/gnu.c (changesyntax): Handle embedded NUL.
- * src/freeze.c (reload_frozen_state): Adjust callers.
- * tests/freeze.at (reloading nul): Enhance test.
- * tests/null.m4: Likewise.
- * tests/null.out: Update expected output.
- * tests/null.err: Likewise.
-
-2008-06-16 Eric Blake
-
- Stage 25a: Use obstack_printf for easier output.
- Convert macro tracing and other locations to use obstack_printf
- rather than hand-rolled equivalents. Ensure that embedded NUL in
- trace output does not truncate the trace string.
- Memory impact: none.
- Speed impact: noticeable penalty, from obstack_printf overhead.
- * ltdl/m4/gnulib-cache.m4: Import obstack-printf-posix module.
- * m4/macro.c (trace_format): Delete; use obstack_printf instead.
- (trace_header, trace_pre, trace_post): All callers updated.
- * m4/output.c (m4_shipout_int, m4_tmpname): Use obstack_printf.
- (m4_divert_text): Speed up syncline output.
- * modules/m4.c (dumpdef): Handle embedded NUL.
- (numb_obstack): Speed up eval output.
- (maketemp): Use obstack_printf.
- * modules/format.c (format): Likewise.
-
- Add missing const qualifications.
- * m4/resyntax.c (m4_resyntax_map): Declare array elements as
- const.
- * modules/gnu.c (m4_builtin_table, m4_macro_table): Likewise.
- * modules/import.c (m4_builtin_table): Likewise.
- * modules/load.c (m4_builtin_table, m4_macro_table): Likewise.
- * modules/m4.c (m4_builtin_table): Likewise.
- * modules/modtest.c (m4_builtin_table, m4_macro_table): Likewise.
- * modules/mpeval.c (m4_builtin_table, m4_macro_table): Likewise.
- * modules/perl.c (m4_builtin_table, m4_macro_table): Likewise.
- * modules/shadow.c (m4_builtin_table, m4_macro_table): Likewise.
- * modules/stdlib.c (m4_builtin_table): Likewise.
- * modules/time.c (m4_builtin_table): Likewise.
- * modules/traditional.c (m4_macro_table): Likewise.
-
-2008-06-10 Eric Blake
-
- Avoid corrupted frozen file if NUL appears on block boundary.
- * m4/output.c (insert_file): Separate consecutive quotearg blocks
- with \, in case last byte of first block was NUL.
-
-2008-06-03 Eric Blake
-
- Fix printf type mismatches.
- * m4/m4module.h (m4_bad_argc): Alter parameter type.
- * m4/m4private.h (struct m4_call_info): Alter call_id type.
- * m4/macro.c (expand_macro, m4__adjust_refcount): Use correct
- specifiers.
- * m4/utility.c (m4_bad_argc): Likewise.
-
- Borrow bootstrap ideas from gnulib.
- * bootstrap (options, DOWNLOAD_PO): Remove --download-po; the
- advertized subset of languages didn't work. Use --skip-po
- instead, for consistency with gnulib bootstrap.
- (func_get_translations): Use rsync, not wget.
- (func_update_po): Use a reference directory, to avoid changing
- timestamps on unchanged .po files.
- * TODO: Update accordingly.
-
- Fix fallout from previous patch.
- * doc/m4.texinfo (Builtin): Adjust expected output.
-
-2008-06-02 Eric Blake
-
- Stage 24c: Improve display of macro names with embedded NUL.
- Quote instances of problematic characters in macro names when
- presented to user. Track location via call_info rather than
- munging context for every expansion.
- Memory impact: none.
- Speed impact: slight penalty, due to more bookkeeping.
- * m4/m4module.h (m4_push_string_init): Add parameters.
- * m4/m4private.h (struct m4_macro_args): Remove argv0 and
- argv0_len, now redundant with info.
- (m4__push_wrapup_init): Add parameter.
- * m4/input.c (m4_push_string_init, m4__push_wrapup_init): Track
- location from caller, rather than context.
- (composite_peek, composite_read, match_input): Adjust callers.
- * m4/utility.c (m4_symbol_value_lookup): Quote macro name.
- (m4_verror_at_line): Allow NUL in macro name.
- * m4/macro.c (trace_flush, m4_trace_prepare, trace_pre): Allow NUL
- in trace.
- (expand_macro): No longer munge context location.
- (collect_arguments, m4_arg_text, m4_arg_empty, m4_arg_len)
- (m4_make_argv_ref, m4_push_arg, m4_wrap_args): Adjust callers.
- * modules/gnu.c (builtin, indir): Likewise.
- * tests/null.m4: Enhance test.
- * tests/null.err: Adjust expected output.
- * tests/null.out: Likewise.
-
- Stage 24b: Allow embedded NUL in macro names.
- Use length rather than NUL-termination when tracking macro names.
- All APIs dealing with symbol table changed.
- Memory impact: none.
- Speed impact: slight penalty, due to more bookkeeping.
- * m4/m4module.h (m4_symtab_apply_func, m4_symbol_lookup)
- (m4_symbol_pushdef, m4_symbol_define, m4_symbol_popdef)
- (m4_symbol_rename, m4_symbol_delete): Add length parameter.
- (m4_string): New type.
- * ltdl/m4/gnulib-cache.m4: Import xmemdup0 module.
- * m4/hash.c (m4_hash_string_hash, m4_hash_string_cmp): Account for
- length.
- * m4/symtab.c (m4_symtab_delete, m4_symtab_apply, symtab_fetch)
- (m4__symtab_remove_module_references, symbol_destroy_CB)
- (m4_symbol_lookup, m4_symbol_pushdef, m4_symbol_define)
- (m4_symbol_popdef, m4_symbol_rename, m4_set_symbol_name_traced)
- (m4_symbol_delete): Likewise.
- * modules/m4.h (struct m4_dump_symbol_data): Adjust type to allow
- passing length.
- * m4/macro.c (expand_token): Adjust all callers.
- * m4/module.c (install_builtin_table, install_macro_table):
- Likewise.
- * m4/utility.c (m4_symbol_value_lookup): Likewise.
- * modules/gnu.c (indir, renamesyms, m4symbols): Likewise.
- * modules/m4.c (define, undefine, pushdef, popdef)
- (dumpdef_cmp_CB, dump_symbol_CB, m4_dump_symbols, dumpdef)
- (traceon, traceoff): Likewise.
- * src/main.c (main): Likewise.
- * src/freeze.c (dump_symbol_CB, reload_frozen_state): Likewise.
- * tests/freeze.at (reloading nul): Augment test.
- * tests/null.out: Adjust expected output.
-
- Stage 24a: Use full call context in error reporting.
- Replace const char *macro_name with const m4_call_info *call, so
- that the next patch can pass the length of macro_name with
- embedded NUL. Simplifies handling of global state.
- Memory impact: none.
- Speed impact: none noticed.
- * m4/m4module.h (m4_error, m4_warn): Change parameter type.
- (m4_error_at_line, m4_warn_at_line): Delete.
- (m4_debug_set_output, m4_skip_line, m4_bad_argc, m4_numeric_arg)
- (m4_parse_truth_arg, m4_symbol_value_lookup): Adjust all clients.
- * m4/m4private.h (m4__next_token): Likewise.
- * m4/utility.c (m4_verror_at_line): Alter parameter, and use
- caller's location if caller is provided.
- (m4_error, m4_warn): Change parameter type.
- (m4_error_at_line, m4_warn_at_line): Delete.
- (m4_bad_argc, m4_numeric_arg, m4_parse_truth_arg)
- (m4_symbol_value_lookup): Adjust all callers.
- * m4/debug.c (set_debug_file, m4_debug_set_output): Likewise.
- * m4/input.c (m4_skip_line, m4__next_token): Likewise.
- * m4/macro.c (expand_argument, collect_arguments, m4_macro_call)
- (process_macro): Likewise.
- * modules/m4.h (m4_make_temp_func): Likewise.
- * modules/evalparse.c (m4_evaluate): Likewise.
- * modules/format.c (arg_int, arg_long, arg_double, format):
- Likewise.
- * modules/gnu.c (builtin, changeresyntax, changesyntax, debugfile)
- (debuglen, debugmode, esyscmd, indir, mkdtemp, patsubst, regexp)
- (renamesyms, syncoutput, regexp_compile, substitute)
- (regexp_substitute, m4_resyntax_encode_safe): Likewise.
- * modules/m4.c (define, undefine, pushdef, popdef, ifdef, ifelse)
- (m4_dump_symbols, defn, syscmd, incr, decr, divert, undivert, dnl)
- (include, maketemp, mkstemp, m4exit, traceon, traceoff, substr):
- Likewise.
- * modules/stdlib.c (setenv, getpwuid, srand): Likewise.
- * modules/time.c (ctime, gmtime, localtime, mktime, strftime):
- Likewise.
- * tests/options.at (--syncoutput): Add test for invalid
- command-line argument. Split xfailed portion...
- (--syncoutput and diversions): ...into new test.
- (unknown option): New test.
- * tests/freeze.at (reloading unknown builtin): Update expected
- output.
-
- Adjust to recent gnulib change.
- * configure.ac (AB_INIT): Delete, now that gnulib does this.
-
-2008-05-28 Eric Blake
-
- Improve frozen debugmode behavior.
- * m4/debug.c (m4_debug_decode): Make empty debugmode additive.
- * src/main.c (main): Interleave -d with files.
- * tests/options.at (--debugmode): Update test.
- * tests/freeze.at (reloading debugmode): New test.
- * doc/m4.texinfo (Debugging options, Debugmode): Document the
- change.
- * NEWS: Likewise.
-
-2008-05-27 Eric Blake
-
- Fix some testsuite failures on Solaris 8.
- * tests/builtins.at (esyscmd, syscmd): Skip tests if system(2) is
- broken.
- * tests/others.at (stderr closed): Likewise. Also support Solaris
- wording for EBADF.
- (stdin closed): Skip test if closed stdin gets reopened.
- (stdout closed): Support Solaris wording for EBADF.
- * tests/testsuite.at (AT_CHECK_M4): Likewise.
-
- Fix configure message nesting, broken since 2001-09-20.
- * ltdl/m4/gmp.m4 (M4_LIB_GMP): Don't cache result; the test is
- not expensive, and AC_MSG_WARN doesn't work in AC_CACHE_CHECK.
-
- Support 'make dist' with BSD make.
- * Makefile.am (TESTSUITE_AT, MAINTAINERCLEANFILES): Qualify uses
- of the generated file tests/generated.at.
- (EXTRA_DIST, $(TESTSUITE)): Likewise for tests/package.m4.
- * tests/others.at (stdout closed): Accomodate OpenBSD /bin/sh.
-
-2008-05-24 Eric Blake
-
- Test NUL in frozen files.
- * tests/testsuite.at (AT_CHECK_M4): Add parameter.
- * tests/freeze.at (reloading nul): New test.
- (AT_TEST_FREEZE): Inhibit -d when reloading frozen file.
- (reloading unknown builtin): Likewise.
-
-2008-05-23 Eric Blake
-
- Improve handling of frozen file errors.
- * src/freeze.c (produce_frozen_state): Detect write failures.
- (reload_frozen_state): Use close_stream.
- * tests/freeze.at (freezing failure): New test.
- * THANKS: Update.
- Reported by Jean-Charles Longuet.
-
-2008-05-19 Eric Blake
-
- In frozen file, split consecutive strings with newline.
- * src/freeze.c (dump_symbol_CB): Add newline to 'T', 'F'.
- (produce_frozen_state): Likewise for 'Q', 'C'.
- (reload_frozen_state): Parse the new layout.
- [GET_DIRECTIVE]: Fix format 1 regression from 2008-05-13.
- * tests/freeze.at (loading format 2): Rewrite to new format.
- (reloading unknown builtin): Likewise.
- (loading format 1): Make sure backslash-newline is not
- interpreted.
- * doc/m4.texinfo (Frozen file format 2): Document the format.
- * NEWS: Document this change.
-
- Fix xgettext options.
- * po/Makevars (XGETTEXT_OPTIONS): The " must be passed to
- xgettext.
-
- Fix spelling of René Seindal's name in --version output.
- * ltdl/m4/gnulib-cache.m4: Import propername module.
- * src/main.c (AUTHORS): Rewrite in terms of proper_name.
- * po/Makevars (XGETTEXT_OPTIONS): Detect new functions.
- * HACKING: Mention new prerequisite of gperf.
-
-2008-05-18 Eric Blake
-
- Allow freezing the trace status of macros.
- * src/freeze.c (produce_symbol_dump): Let undefined traced macros
- through.
- (dump_symbol_CB): Also freeze trace state.
- * tests/freeze.at (reloading traced macros): New test.
- * doc/m4.texinfo (Using frozen files): Update documentation to
- mention new state.
- (Frozen file format 1): Improve synchronization with branch.
- (Frozen file format 2): Reorder directives, and add `d', `t'.
- * NEWS: Document this change.
-
-2008-05-15 Eric Blake
-
- Fix frozen file regression in pushdef stacks from 2001-09-01.
- * src/freeze.c (dump_symbol_CB): Push all values on the stack, not
- just the current definition.
- (reverse_symbol_value_stack): New helper method.
- * tests/freeze.at (AT_TEST_FREEZE): New helper macro.
- (reloading pushdef stack): New test.
- (reloading unknown builtin): Enhance test.
-
-2008-05-13 Eric Blake
-
- Fix frozen file regression in diversions from 2007-01-21.
- * m4/output.c (insert_diversion_helper): Add parameter.
- (m4_insert_file): Move contents...
- (insert_file): ...to this new helper, with added parameter.
- (m4_insert_diversion, m4_undivert_all, m4_freeze_diversions):
- Update callers.
- * src/freeze.c (produce_mem_dump): Simplify.
- * tests/freeze.at (large diversion): Test for this.
-
- Improve error message when frozen file is invalid.
- * src/freeze.c (decode_char): Add parameter. Allow \
- line continuations.
- (reload_frozen_state): Track current line.
- * tests/freeze.at (loading format 1, loading format 2): Update to
- test this.
-
-2008-05-10 Eric Blake
-
- Detect integer overflow when loading frozen file.
- * src/freeze.c (reload_frozen_state) [GET_NUMBER]: Rewrite to fail
- immediately on overflow.
- * tests/freeze.at (loading format 2): Test this.
- Reported by Jim Meyering.
-
-2008-05-08 Eric Blake
-
- Stage 23: allow tracing of indirect macro calls.
- Track all trace information as part of the argv struct, rather
- than temporarily resetting global state. Teach indir to trace
- macros that it invokes.
- Memory impact: slight penalty, due to larger argv struct.
- Speed impact: none noticed.
- * m4/m4module.h (m4_input_block): Remove.
- (m4_call_info): New opaque type.
- (m4_trace_prepare, m4_arg_info): New prototypes.
- (m4_macro_call, m4_push_string_finish, m4_input_print): Change
- prototypes.
- * m4/m4private.h (struct m4_macro_args): Add info field.
- (struct m4_call_info): New structure.
- (m4_arg_info): New accessor.
- * m4/input.c (m4_input_block): Make typedef local.
- (m4_push_string_init): Initialize length.
- (m4_push_string_finish, m4_input_print): Change signature, so that
- printing can be done before finalization.
- (struct input_funcs): Add parameter to print_func.
- (file_print, string_print, composite_print): Adjust accordingly.
- * m4/macro.c (trace_header, trace_flush, trace_pre, trace_post):
- Change signatures for stacked trace messages, and for using call
- context.
- (trace_prepre): Export and rename...
- (m4_trace_prepare): ...to this, for use by indir. Alter signature
- to use call context.
- (collect_arguments): Alter signature, to manage new field.
- (expand_macro): Change call context management. Move tracing...
- (m4_macro_call): ...here. Remove redundant parameter.
- (m4_arg_argc): New function.
- (m4_make_argv_ref): Replace unused skip parameter with new trace
- parameter; manage new field.
- * modules/gnu.c (builtin, indir): Adjust callers.
- * src/main.c (usage): Update debugmode flag summary.
- * tests/null.m4: Enhance test.
- * tests/null.err: Update expected output.
- * tests/macros.at (Tracing Hanoi Towers): Likewise.
- * doc/m4.texinfo (Trace): Mention more about trace formatting.
- (Debugmode): Enhance description of 'c' and 'x'. Enhance test to
- cover line numbering details in traces.
- (Debuglen): Enhance test to cover indir tracing.
- * NEWS: Mention these changes.
- Reported by Akim Demaille in the autoconf TODO file in 2000.
-
-2008-05-07 Eric Blake
-
- Test for traceon regression just fixed in branch-1.6.
- * doc/m4.texinfo (Trace): Enhance test.
- * NEWS: Port news item from branch.
-
-2008-05-05 Eric Blake
-
- Stage 22: allow builtin token concatenation outside $@.
- Adjust the input and argument parsing engines to append builtins
- alongside text. Make define warn when builtins must be
- flattened.
- Memory impact: slight penalty, with fewer builtins flattened.
- Speed impact: slight penalty, from more bookkeeping.
- * m4/m4module.h (m4_is_arg_composite): New prototype.
- (m4_symbol_value_copy): Change return type.
- (m4_arg_text): Add parameter.
- (M4ARG): Adjust callers.
- * m4/m4private.h: Adjust comments.
- * m4/symtab.c (m4_symbol_value_copy): Detect when builtins are
- flattened.
- * m4/input.c (init_builtin_token): Add parameter, and allow
- concatenating builtins.
- (m4__next_token): Adjust caller.
- * m4/macro.c (m4_is_arg_composite): New function.
- (expand_argument): Allow builtin concatenation.
- (m4_arg_text): Add parameter.
- (m4__arg_adjust_refcount, m4__arg_print): Adjust callers.
- (m4_arg_equal): Fix comparison of builtin tokens.
- * modules/m4.c (define, pushdef): Warn when flattening builtins.
- * doc/m4.texinfo (Define): Remove dead comment.
- (Defn): Update to reflect code changes.
- * tests/builtins.at (defn): Remove xfail.
- * NEWS: Document this change.
-
-2008-05-03 Eric Blake
-
- Document define_blind.
- * doc/m4.texinfo (Ifelse): Add a new composite macro.
- * THANKS: Update.
- Suggested by Mike R.
-
-2008-05-01 Eric Blake
-
- Avoid -Wshadow compiler warnings.
- * m4/output.c (threshold_diversion_CB): s/div/diversion/.
- * m4/macro.c (make_argv_ref, arg_symbol, m4_arg_symbol)
- (m4_is_arg_text, m4_is_arg_func, m4_arg_text, m4_arg_empty)
- (m4_arg_len, m4_arg_func, m4__arg_print, m4_make_argv_ref)
- (m4_push_arg, m4__push_arg_quote): s/index/arg/.
- * modules/format.c (format): Likewise.
- * modules/m4.c (ifelse): Likewise.
-
- Improve debugmode testing, based on recent branch-1.6 regressions.
- * doc/m4.texinfo (Debugmode): Enhance tests.
- * tests/generate.awk: Run tests from stdin, not input.m4. Support
- stderr munging when using -I examples.
-
- Fix regression in define from 2008-02-22.
- * m4/m4module.h (m4_symbol_value_copy): Add parameter.
- * m4/symtab.c (m4_symbol_value_copy): Support copying $@
- back-references.
- * m4/macro.c (expand_argument): Update callers.
- * modules/m4.c (define, pushdef): Likewise.
- * tests/builtins.at (define): Enhance test to catch this.
-
-2008-04-21 Eric Blake
-
- Simplify previous patch.
- * tests/m4.in: Compress assignment.
- Suggested by Gary V. Vaughan.
-
- Fix --disable-shared testsuite regression from previous patch.
- * tests/m4.in: Export M4MODPATH, so that recursive m4 invocations
- will also work.
-
- Fix spelling of attribution to Christopher Strachey.
- * doc/m4.texinfo (History, Inhibiting Invocation): Fix typo.
- * THANKS: Update.
- Reported by Fernando Carrijo.
-
-2008-04-17 Eric Blake
-
- Fix testsuite bug when SIGPIPE is ignored.
- * tests/builtins.at (divert): Consume all of m4's output, to avoid
- spurious write failure.
- * src/main.c (main): In batch mode, restore default handling of
- SIGPIPE.
- * doc/m4.texinfo (Operation modes): Document SIGPIPE behavior.
- * THANKS: Update.
- Reported by Bob Proulx, via his autobuilder.
-
-2008-04-15 Eric Blake
-
- Fix 'make installcheck' after './configure --prefix-progname'.
- * tests/testsuite.at (AT_CHECK_M4): Allow overriding the m4
- program name.
- (HELP_OTHER, PREPARE_TESTS): Document and use $M4.
- * tests/builtins.at (patsubst): Avoid space-tab.
- (divert, mkdtemp, mkstemp): Adjust tests to use $M4.
- * tests/options.at (--debugfile): Likewise.
- * tests/others.at (stdin seekable): Likewise.
- (fstab): Avoid space-tab.
- * Makefile.am (installcheck-local): Accomodate transformed name.
- (DISTCHECK_CONFIGURE_FLAGS): Ensure no regressions, by using gm4
- during 'make distcheck'.
- * cfg.mk: New file, borrowed from branch.
-
- Update prerequisite tools to match recent releases.
- * configure.ac (AC_PREREQ): Rely on released autoconf.
- (LT_PREREQ): Rely on released libtool.
- * tests/testsuite.at (m4_version_prereq): Update dependence.
- * bootstrap: Mention prerequisites.
-
- Work around OS/2 limitation of printf(1).
- * tests/null.m4: Use m4, not printf, to generate NUL byte.
- * tests/null.out: Check for esyscmd failure.
- Reported by Elbert Pol.
-
-2008-04-14 Eric Blake
-
- Stage 21b: $@ concatenates builtins, m4wrap takes builtins.
- Improve arg_print to handle builtin tokens when printing to a
- known chain, rather than always flattening builtins. This allows
- m4wrap and $@ back-references to handle embedded builtin tokens.
- Memory impact: none.
- Speed impact: slight penalty, from more bookkeeping.
- * m4/m4module.h (m4_push_builtin): Add parameter.
- (m4_builtin_print, m4_push_wrapup_init, m4_push_wrapup_finish)
- (m4_arg_print, m4_symbol_value_print): Rename and reduce scope...
- * m4/m4private.h (m4__builtin_print, m4__push_wrapup_init)
- (m4__push_wrapup_finish, m4__arg_print, m4__symbol_value_print):
- ...to these, in some cases adding a parameter.
- (m4__append_builtin): New prototype.
- * m4/builtin.c (m4_builtin_print): Alter signature to print
- builtin to a growing symbol chain.
- * m4/symtab.c (m4__symbol_value_print): Alter signature.
- (m4_symbol_print, dump_symbol_CB): Adjust callers.
- * m4/input.c (builtin_peek, builtin_read, builtin_unget)
- (builtin_print, builtin_funcs): Delete, handled via composite
- blocks now.
- (struct m4_input_block): Delete u.builtin member.
- (init_builtin_token): Only use composite block.
- (m4__append_builtin): New function.
- (m4_push_builtin, m4__push_wrapup_init): Alter signature.
- (m4__push_symbol): Allow builtin tokens.
- (m4__push_wrapup_finish): Rename.
- (composite_print, m4_print_token): Adjust callers.
- * m4/macro.c (m4_wrap_args, collect_arguments): Allow builtin
- tokens.
- (m4__arg_print): Alter signature.
- (trace_prepre, trace_pre, m4_arg_text, m4_arg_equal): Adjust
- callers.
- * modules/m4.c (m4wrap): Allow builtin tokens.
- (defn, errprint): Adjust callers.
- * modules/gnu.c (builtin): Likewise.
- * doc/m4.texinfo (M4wrap): New test.
- (Debuglen): Adjust expected output.
-
- Stage 21a: Optimize checks for end of input.
- Create a new polymorphic input block type, which always fails with
- CHAR_EOF, so that remaining input routines no longer have to check
- for NULL input block.
- Memory impact: none.
- Speed impact: noticeable improvement, from fewer conditionals.
- * m4/input.c (eof_funcs, input_eof): New objects.
- (eof_peek, eof_read, eof_unget): New functions.
- (file_clean, m4_push_string_init, pop_input, m4_push_wrapup_init)
- (m4_pop_wrapup, next_char, peek_char, unget_input, m4_input_init)
- (m4_input_exit): Use placeholder to guarantee non-NULL isp and
- wsp.
- (next_char): Rename retry to allow_unget, and change sense for
- easier manipulation. All callers changed.
-
- Improve OS/2 detection.
- * modules/gnu.c (m4_macro_table): Ensure all possible identifiers
- are defined, not just the first. The testsuite ensures that
- exactly one gets defined.
- * m4/system_.h [__EMX__]: OS/2 is not Unix-compatible, no matter
- what other pre-defined macros it has.
- * THANKS: Update.
- Reported by Elbert Pol.
-
- Ensure __m4_version__ is unquoted.
- * tests/builtins.at (__m4_@&t@version__): Augment test.
-
- Avoid GNU make failure on tarball.
- * Makefile.am (EXTRA_DIST): Distribute cfg.mk and maint.mk.
-
-2008-04-10 Eric Blake
-
- Allow back-referenced macro names; fixes 2008-03-13 regression.
- * m4/m4module.h (m4_symbol_value_lookup): Change prototype.
- * m4/utility.c (m4_symbol_value_lookup): Change signature.
- * modules/m4.c (undefine, popdef, ifdef, m4_dump_symbols, defn):
- Adjust all callers.
- * tests/others.at (ifndef): New test.
-
- Be namespace clean for M4 version; fixes 2008-04-08 regression.
- * configure.ac (version): Rename...
- (M4_VERSION): ...to this, since using 'version' broke po.m4.
-
-2008-04-09 Eric Blake
-
- Mention 1.4.11 release.
- * doc/m4.texinfo (History, Defn, Ifdef, Ifelse, M4wrap)
- (Extensions, Improved foreach): Distinguish 1.4.11 and 1.6.
- (Format): Add test of C99 hex-float parsing.
- * NEWS: Mention 1.4.11 release.
- * tests/builtins.at (divert): Add additional test.
-
-2008-04-08 Eric Blake
-
- Overhaul inter-version releases to work with git.
- * configure.ac (version): New variable, which has nicer version
- contents when using git 1.5.5+, hardcoded to 1.9a otherwise.
- (TIMESTAMP): Delete, since CVS id expansion died with transition
- to git.
- (AM_INIT_AUTOMAKE): Use version to decide gnu vs. gnits.
- * build-aux/mkstamp: Delete, no longer used.
- * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Kill, to speed up
- rebuilds when timestamps don't matter.
- (MKSTAMP): Delete, no longer used.
- (EXTRA_DIST): No longer worry about mkstamp.
- (.version): New rule and distributed file.
- (doc/m4.1, tests/package.m4): Depend on .version, not
- configure.ac, for timestamp.
- * ltdl/m4/gnulib-cache.m4: Import git-version-gen module.
- * modules/gnu.c (__m4_version__): TIMESTAMP no longer exists.
- * src/main.c (main): Likewise.
-
-2008-03-28 Eric Blake
-
- Use GNUmakefile module.
- * ltdl/m4/gnulib-cache.m4: Import gnumakefile module.
- * Makefile.am: Split off maintainer rules...
- * maint.mk: ...into this new file.
-
-2008-03-18 Eric Blake
-
- Stage 20b: make m4wrap obey POSIX fifo ordering.
- Improve input engine to support location changes within symbol
- chains, then convert m4wrap to always build symbol chain.
- Memory impact: none.
- Speed impact: slight penalty, from more m4wrap bookkeeping.
- * m4/m4module.h (m4_wrap_args): Add prototype.
- * m4/m4private.h (enum m4__symbol_chain_type): Add M4__CHAIN_LOC.
- (struct m4__symbol_chain): Add struct u_l.
- * m4/input.c (m4_push_wrapup_init, m4_push_wrapup_finish): Use
- new link type.
- (composite_peek, composite_read, composite_clean): Handle location
- link.
- * m4/macro.c (m4_wrap_args): New function.
- * modules/m4.c (m4wrap): Use it.
- * doc/m4.texinfo (M4wrap): Sync with branch and POSIX.
- (Extensions): Document extension of multiple arguments.
- (Location, Improved m4wrap): Adjust example to match FIFO order.
- * tests/builtins.at (wrap): Likewise.
- * NEWS: Document this change.
-
-2008-03-17 Eric Blake
-
- Stage 20a: reduce unget's in input engine.
- Now that out-of-range input placeholders like CHAR_BUILTIN are
- consumed outside of next_char, next_token should always consume
- rather than peek at the first character. Fewer peeks results in
- less ungetc overhead.
- Memory impact: none.
- Speed impact: noticeable improvement, from fewer function calls.
- * m4/input.c (struct input_funcs): Alter read_func prototype.
- (next_char, file_read, buildin_read, string_read, composite_read):
- Add allow_argv parameter.
- (init_builtin_token, init_argv_symbol): Require all prior input to
- be consumed.
- (m4_skip_line, match_input, consume_syntax): Adjust callers.
- (m4__next_token): Consume first byte without peek.
-
- Update for fresh bootstrap.
- * ltdl/m4/gnulib-cache.m4: Updated copyright from upstream.
-
-2008-03-15 Eric Blake
-
- Document join, in order to fix bug in m4wrap example.
- * examples/join.m4: New file.
- * examples/wraplifo2.m4: Likewise.
- * Makefile.am (EXTRA_DIST): Add new files.
- * doc/m4.texinfo (Improved m4wrap): New node.
- (Defn, Location): Enhance tests.
- (Shift): Document the composite macro join.
- (Incompatibilities): Move documentation of LIFO vs. FIFO...
- (M4wrap): ...here, to match improved example.
-
-2008-03-13 Eric Blake
-
- Stage 19c: allow builtin tokens in more macros.
- Allow builtin tokens inside symbol chains, although for now, they
- are not allowed inside comments or quotes. Enable builtin token
- handling in more macros, if only to consistently diagnose invalid
- macro names.
- Memory impact: none.
- Speed impact: slight impact, due to more bookkeeping.
- * m4/m4module.h (m4_symbol_value_lookup, m4_builtin_print): New
- prototypes.
- * m4/m4private.h (enum m4__symbol_chain_type): Add
- M4__CHAIN_FUNC.
- (struct m4__symbol_chain): Add builtin member.
- * m4/utility.c (m4_symbol_value_lookup): New method.
- * m4/builtin.c (m4_builtin_print): New function.
- * m4/symtab.c (m4_symbol_value_print): Use it.
- * m4/input.c (builtin_print): Likewise.
- (m4__push_symbol): Allow pushing builtin tokens.
- (composite_peek, composite_read, composite_unget, composite_clean)
- (composite_print): Handle builtin tokens.
- (init_builtin_token): Allow builtin tokens from composite input.
- (m4__next_token): Flatten builtins inside comment or string.
- * m4/macro.c (expand_argument): Strengthen assertion.
- (collect_arguments, m4_arg_equal, m4_arg_print, m4_push_args):
- Handle builtin tokens.
- (arg_symbol): Add parameter, and allow NULL level.
- (m4_arg_symbol, m4__push_arg_quote): Adjust callers.
- (m4_arg_text): Ensure all builtins have been flattened.
- * modules/m4.c (defn, dumpdef, popdef, traceoff, traceon)
- (undefine, m4_dump_symbols): Warn on invalid macro names.
- (ifdef, ifelse, shift): Handle builtin tokens.
- * modules/gnu.c (m4symbols): Likewise.
- * doc/m4.texinfo (Defn, Ifdef, Ifelse): Document and test the new
- behavior.
- (Debuglen): Likewise, and remove xfail.
- * NEWS: Mention the change.
-
- Stage 19b: invert sense of bit for handling builtin tokens.
- Pass builtin tokens by default, rather than as the exception, so
- that the logic can consistently refer to flattening arguments.
- Memory impact: none.
- Speed impact: none.
- * m4/m4module.h (M4BUILTIN_ENTRY): New convenience macro.
- (M4_BUILTIN_GROKS_MACRO): Rename...
- (M4_BUILTIN_FLATTEN_ARGS): ...and invert sense.
- (m4_symbol_value_groks_macro, m4_symbol_groks_macro): Likewise...
- (m4_symbol_value_flatten_args, m4_symbol_flatten_args): ...to
- this.
- * m4/m4private.h (VALUE_MACRO_ARGS_BIT)
- (m4_symbol_value_groks_macro): Likewise...
- (VALUE_FLATTEN_ARGS_BIT, m4_symbol_value_flatten_args): ...to
- this.
- * m4/symtab.c (m4_symbol_value_groks_macro): Likewise...
- (m4_symbol_value_flatten_args): ...to this.
- * m4/macro.c (collect_arguments): Accomodate changed sense.
- * m4/module.c (m4__module_open): Require arguments if flattening
- is requested.
- * m4/input.c (m4_push_string_finish): For now, flatten all
- builtins pushed as back-references.
- * modules/gnu.c (m4_builtin_table, builtin): Adjust all clients.
- * modules/import.c (m4_builtin_table): Likewise.
- * modules/load.c (m4_builtin_table): Likewise.
- * modules/modtest.c (m4_builtin_table): Likewise.
- * modules/mpeval.c (m4_builtin_table): Likewise.
- * modules/perl.c (m4_builtin_table): Likewise.
- * modules/shadow.c (m4_builtin_table): Likewise.
- * modules/stdlib.c (m4_builtin_table): Likewise.
- * modules/time.c (m4_builtin_table): Likewise.
- * modules/m4.c (m4_builtin_table): Likewise.
- (mkstemp): Undo #undef hack from 2006-10-23, now that macro names
- are stringized without preprocessor expansion.
- * doc/m4.texinfo (Defn): Update comments to match reality.
- (Debuglen): Update test now that user macros pass builtin tokens.
-
- Stage 19a: sort and cache builtins loaded by a module.
- Rather than repeatedly using dlsym to browse the builtin table,
- copy off the table at module load time. Then, the input engine
- merely refers to the copy instead of duplicating information.
- Memory impact: slight penalty, due to more memory per module, but
- offset by less memory in input engine.
- Speed impact: slight improvement, due to faster builtin lookups.
- * m4/m4module.h (m4_set_symbol_value_builtin): Delete. Use
- m4_builtin_find_by_* instead.
- (m4_builtin_find_by_func): Change return type.
- * m4/m4private.h (m4__builtin): New struct.
- (m4_module): Add sorted list of loaded builtins.
- (struct m4_symbol_value): Change type of builtin value.
- (m4__set_symbol_value_builtin): New prototype and fast accessor.
- (m4_get_symbol_value_func, m4_get_symbol_value_builtin): Adjust to
- new field type.
- * m4/symtab.c (m4_set_symbol_value_builtin): Rename...
- (m4__set_symbol_value_builtin): ...and populate additional fields,
- based on new type.
- (m4_get_symbol_value_func, m4_get_symbol_value_builtin): Adjust to
- new field type.
- * m4/module.c (install_builtin_table): Use cached table.
- (compare_builtin_CB): New helper function.
- (m4__module_open): Populate table.
- (module_remove): Free table.
- * m4/builtin.c (compare_builtin_name_CB): New helper function.
- (m4_builtin_find_by_name): Rewrite to use sorted table.
- (m4_builtin_find_by_func): Change return type.
- * m4/input.c (struct m4_input_block): Simplify u_b, since most
- fields can be determined from builtin.
- (builtin_peek, builtin_read, builtin_unget, init_builtin_token)
- (m4__next_token): Alter parsing so that only init_builtin_token
- consumes a builtin.
- (builtin_print, m4_push_builtin): Adjust all users.
- * tests/macros.at (Arity, defn, and freeze): Fix typo.
-
- Consistently cast malloc results, for C++ compilation.
- * m4/builtin.c (m4_builtin_find_by_name): Add cast.
- * m4/hash.c (m4_hash_new, m4_get_hash_iterator_next, node_new)
- (m4_hash_resize, maybe_grow): Likewise.
- * m4/m4.c (m4_create): Likewise.
- * m4/macro.c (expand_macro): Likewise.
- * m4/output.c (m4_tmpname): Likewise.
- * m4/path.c (search_path_add): Likewise.
- * m4/symtab.c (m4_symtab_create, m4_symbol_value_create)
- (symtab_fetch): Likewise.
- * m4/syntax.c (m4_syntax_create): Likewise.
- * modules/gnu.c (regexp_compile): Likewise.
- * src/main.c (main): Likewise.
- * src/freeze.c (reload_frozen_state): Likewise.
-
-2008-03-06 Eric Blake
-
- Fix nested builtin(`shift',$@) regression from 2008-02-23.
- * m4/macro.c (make_argv_ref): Don't output expansion text when
- making wrapper for builtin or indir.
- * tests/builtins.at (builtin): New test.
- * NEWS: Document the fix.
- Reported by Andreas Schwab.
-
-2008-03-04 Eric Blake
-
- The gnulib module free was deprecated.
- * ltdl/m4/gnulib-cache.m4: Remove free module.
-
-2008-02-29 Eric Blake
-
- Import news from 1.4.10b.
- * NEWS: Update from branch.
-
-2008-02-23 Eric Blake
-
- Stage 18: try harder to reuse argv in recursion.
- When pushing arguments that contain an existing $@ ref, reuse the
- ref rather than creating another layer of wrappers.
- Memory impact: noticeable improvement, due to better $@ reuse.
- Speed impact: noticeable improvement, due to O(n^2) to O(n)
- reduction in unboxed recursion.
- * m4/macro.c (make_argv_ref): Avoid wrapping $@ when possible.
- (m4_push_args): Let make_argv_ref take care of pending data.
- * doc/m4.texinfo (Improved foreach): Tweak wording to match new
- performance capability.
- * tests/others.at (recursion): Add tests to avoid performance
- regression.
-
-2008-02-22 Eric Blake
-
- Update NEWS.
- * NEWS: Document change to __gnu__ on 2008-02-11.
-
- Stage 17: pass argv through quoted strings.
- Allow the concatenation of $@ references with other text input
- inside quoted contexts, which requires distinguishing between a
- wrapper around many arguments vs. a reference serving as part of a
- single argument. Also optimize based on whether argv contains
- builtin tokens that might need flattening to the empty string.
- Memory impact: noticeable improvement, due to O(n^2) to O(n)
- reduction from total reuse of $@ references.
- Speed impact: noticeable improvement, due to O(n^2) to O(n)
- reduction in boxed recursion.
- * m4/m4module.h (m4_arg_equal, m4_arg_len): Add parameter.
- (M4ARGLEN): Adjust definition.
- * m4/m4private.h (struct m4__symbol_chain): Add has_func member.
- (struct m4_symbol_value): Add wrapper and has_func members.
- (struct m4_macro_args): Add flatten and has_func members.
- * m4/input.c (append_quote_token): Return argv refs inside quoted
- strings.
- (init_argv_symbol): Populate new fields.
- * m4/macro.c (expand_argument, collect_arguments, make_argv_ref)
- (m4_make_argv_ref): Likewise.
- (arg_symbol, arg_mark, m4_is_arg_text, m4_is_arg_func): Use new
- fields.
- (m4_arg_equal, m4_arg_len): Handle quoted argv references, and add
- new parameter.
- * modules/m4.c (ifelse): Adjust caller.
-
-2008-02-22 Gary V. Vaughan
-
- Fix regression in argument collection, from 2008-01-21.
- * m4/input.c (m4__next_token): When DEBUG_INPUT is defined,
- undo argument collection optimisation for strings, so that
- m4_print_token doesn't abort when it otherwise receives an
- unprintable M4_SYMBOL_VOID type token.
-
-2008-02-20 Eric Blake
-
- Stage 16: cache quotes and improve m4_arg_print.
- Cache rather than always copying quotes when pushing $@ refs; in
- particular, reconstruct single-byte quotes on the fly. Allow NUL
- through m4wrap. Improve sharing of code that prints arguments.
- Memory impact: slight improvement, due to cached quotes.
- Speed impact: slight improvement, due to less copying.
- * m4/m4module.h (m4_symbol_value_print, m4_symbol_print)
- (m4_arg_print): Adjust prototypes.
- (m4_dump_args): Delete.
- (m4_push_wrapup): Split...
- (m4_push_wrapup_init, m4_push_wrapup_finish): ...into these
- prototypes.
- * m4/m4private.h (struct m4_syntax_table): Add cached_quote
- member.
- (m4__quote_cache, m4__quote_uncache): New prototypes.
- * m4/syntax.c (m4_syntax_create): Initialize the cache.
- (m4__quote_cache): New function.
- (m4_set_syntax): Update caller.
- * m4/symtab.c (m4_symbol_value_print): Add parameter.
- (m4_symbol_print, dump_symbol_CB): Adjust all callers.
- * m4/utility.c (m4_dump_args): Delete; callers should use
- m4_arg_print instead.
- * m4/input.c (m4_push_wrapup_init, m4_push_wrapup_finish): Split
- implementation, and allow embedded NUL.
- (m4_print_token, pop_input, composite_print, composite_peek):
- (composite_read, append_quote_token): Adjust all callers.
- * m4/macro.c (trace_prepre, m4_arg_text, make_argv_ref):
- Likewise.
- (m4_arg_print): Add parameters.
- (trace_pre): Rewrite in terms of m4_arg_print.
- * modules/m4.c (errprint): Likewise.
- (m4wrap): Rewrite to allow embedded NUL.
- (dumpdef): Adjust caller.
- * doc/m4.texinfo (Debuglen): Enhance debuglen test.
- * tests/null.m4: Test for NUL in m4wrap.
- * tests/null.out: Update expected output.
-
- Fix out-of-bounds read for sanitized macro names, from 2008-02-06.
- * m4/utility.c (m4_verror_at_line): Properly terminate the string.
- Reported by Ralf Wildenhues.
-
- * doc/m4.texinfo (Debuglen, Changesyntax): Fix typos.
-
-2008-02-19 Eric Blake
-
- Clean up example on filtering defined symbols.
- * doc/m4.texinfo (Foreach, Improved foreach): Document another
- shortcoming in foreach.m4, and improve filter example by using
- foreach2.m4.
-
- * src/main.c (usage): Fix typo.
-
-2008-02-18 Eric Blake
-
- Avoid some magic numbers.
- * m4/m4private.h (CHAR_EOF, CHAR_BUILTIN, CHAR_QUOTE, CHAR_ARGV)
- (CHAR_RETRY): Define in terms of UCHAR_MAX.
- * m4/syntax.c (m4_syntax_create, set_syntax_set)
- (reset_syntax_set, check_is_single_quotes)
- (check_is_single_comments, check_is_macro_escaped)
- (m4_set_quotes, m4_set_comment): Likewise.
- * modules/gnu.c (regexp_compile): Likewise.
- * modules/m4.c (translit): Likewise.
- * src/freeze.c (produce_syntax_dump): Likewise.
- Reported by Ralf Wildenhues.
-
-2008-02-16 Eric Blake
-
- Add regression test for multi-character quote recursion.
- * examples/foreach2.m4: Use $0 rather than spelling out name.
- * examples/foreachq2.m4: Likewise.
- * examples/forloop2.m4: Likewise.
- * examples/hanoi.m4: Likewise.
- * examples/trace.m4: Likewise.
- * doc/m4.texinfo (Improved forloop): Document advantage of $0.
- (Improved foreach): Adjust dump from file.
-
- Stage 15: return argv refs back to collect_arguments.
- Collect an entire $@ reference at once rather than one argument at
- a time, outside of quotes (but inside quotes, $@ is still
- flattened for now). The skip_last field allows concatenation of
- $@ with other text when collecting arguments.
- Memory impact: noticeable improvement, due to better reuse of $@.
- Speed impact: noticeable improvement, due to less parsing.
- * m4/m4private.h (CHAR_ARGV): New input engine sentinel.
- (enum m4__token_type): Add M4_TOKEN_ARGV.
- (struct m4__symbol_chain): Add skip_last member to argv link.
- (m4__next_token): Add parameter.
- * m4/input.c (peek_char, file_peek, builtin_peek, string_peek)
- (composite_peek, m4__next_token): Add new parameter.
- (composite_read, append_quote_token): Support argv in quotes.
- (init_argv_symbol): New function.
- (m4__push_symbol, match_input, consume_syntax)
- (m4__next_token_is_open, m4_print_token): Adjust callers.
- * m4/macro.c (m4_macro_expand_input, m4__arg_adjust_refcount)
- (arg_mark, m4_arg_text, make_argv_ref): Likewise.
- (expand_argument, collect_arguments): Handle new token.
- (arg_symbol): Drill through $@ reference.
- * m4/syntax.c (set_quote_age): Detect disabled comments.
- * m4/symtab.c (dump_symbol_CB) [DEBUG_SYM]: Fix debug code.
-
-2008-02-15 Eric Blake
-
- * modules/gnu.c (regexp_compile): Use a fastmap for regex speed.
-
-2008-02-13 Eric Blake
-
- Fix texinfo grammar.
- * doc/m4.texinfo (Eval, Incompatibilities): Use @. after capital.
- (History): Use @: after abbreviations.
- (M4exit): Use correct Latin abbreviation.
- (Dumpdef, Debugmode, Frozen file format 2): Use correct spacing
- between sentences.
-
-2008-02-11 Eric Blake
-
- Allow builtin text macros to specify number of arguments.
- * m4/m4module.h (struct m4_macro): Add argument limits to builtin
- text macros.
- * m4/module.c (install_macro_table): Allow text macros to warn on
- extra arguments.
- * modules/gnu.c (m4_macro_table): Update all clients.
- * modules/load.c (m4_macro_table): Likewise.
- * modules/mpeval.c (m4_macro_table): Likewise.
- * modules/perl.c (m4_macro_table): Likewise.
- * modules/shadow.c (m4_macro_table): Likewise.
- * modules/traditional.c (m4_macro_table): Likewise.
- * modules/modtest.c (m4_macro_table): Likewise. Also add text
- macros, for testing this.
- * doc/m4.texinfo (Standard Modules): Update text, and enhance
- test.
- * tests/modules.at (modules: text): New test.
-
- Fix regression in command line -D option, from 2006-08-25.
- * m4/m4private.h (m4_symbol_value_create): Delete fast accessor.
- * m4/m4module.h: Fix typo.
- * m4/symtab.c (m4_symbol_value_create): Prime the maximum number
- of arguments.
- * tests/macros.at (Command line define): Enhance test.
- * tests/others.at (nul character): Enhance test.
- * tests/null.m4: Likewise.
- * tests/null.out: Likewise.
-
- Use gnulib's git-merge-changelog driver when available.
- * .gitattributes: Add merge attributes for ChangeLog.
- * bootstrap: Install driver, if not already present.
-
-2008-02-06 Eric Blake
-
- Fix security hole introduced 2007-11-23.
- * m4/utility.c (m4_verror_at_line): Properly escape macro names.
- * src/main.c (main): Manage quoteargs defaults.
- * doc/m4.texinfo (Indir): Document and test this.
-
- Using raw strtod is not portable.
- * ltdl/m4/gnulib-cache.m4: Import the strtod module.
-
-2008-02-02 Eric Blake
-
- Consistently use size_t for number of arguments.
- * m4/m4module.h (m4_builtin_func): Alter prototype.
- (struct m4_builtin): Adjust type of min_args, max_args.
- (M4BUILTIN, M4BUILTIN_HANDLER): Adjust all builtins.
- (m4_bad_argc, m4_dump_args, m4_macro_call, m4_arg_argc)
- (m4_arg_symbol, m4_is_arg_text, m4_is_arg_func, m4_arg_text)
- (m4_arg_equal, m4_arg_empty, m4_arg_len, m4_arg_func)
- (m4_arg_print, m4_push_arg): Adjust all clients.
- * m4/m4private.h (struct m4__symbol_chain, m4_symbol_value)
- (m4_macro_args): Adjust type of various fields.
- (m4__push_arg_quote): Adjust all clients.
- * m4/input.c (m4_pop_wrapup): Likewise.
- * m4/macro.c (m4_macro_call, trace_pre, make_argv_ref)
- (arg_symbol, m4_arg_symbol, m4_is_arg_text, m4_is_arg_func)
- (m4_arg_text, m4_arg_equal, m4_arg_empty, m4_arg_len)
- (m4_arg_func, m4_arg_print, m4_make_argv_ref, m4_push_arg)
- (m4__push_arg_quote, m4_push_args, m4_arg_argc): Likewise.
- * m4/utility.c (m4_bad_argc, m4_dump_args): Likewise.
- * modules/evalparse.c (m4_evaluate): Likewise.
- * modules/gnu.c (changesyntax): Likewise.
- * modules/m4.c (m4_dump_symbols, undefine, popdef, ifelse, defn)
- (undivert, traceon, traceoff): Likewise.
- * modules/m4.h (m4_dump_symbols_func): Likewise.
- * modules/perl.c (perleval): Likewise.
-
- Stage 14b: allow pushing argv references.
- Push a $@ reference to the input engine in one go, rather than
- pushing each element. For now, argument collection still gets one
- argument of a $@ at a time; but the penalties of this patch make
- it easier to manage $@ efficiently in future patches.
- Memory impact: noticeable penalty, due to larger struct and O(n)
- to O(n^2) on unboxed recursion.
- Speed impact: noticeable penalty, due to more bookkeeping.
- * m4/m4private.h (struct m4__symbol_chain): Add comma and quotes
- fields.
- (struct m4_macro_args): Add level field.
- (m4__arg_adjust_refcount, m4__push_arg_quote): New prototypes.
- * m4/input.c (m4__push_symbol, composite_peek, composite_read)
- (composite_unget, composite_clean, composite_print): Support $@
- refs.
- * m4/macro.c (collect_arguments): Populate new field.
- (expand_macro): Move argv cleanup...
- (m4__arg_adjust_refcount): ...to this new function.
- (m4_arg_symbol, m4_make_argv_ref, m4_push_arg): Factor...
- (arg_symbol, make_argv_ref, m4__push_arg_quote): ...to these new
- helper functions, to add parameters.
- (m4_push_args): Adjust caller.
- * m4/symtab.c (m4_symbol_value_print): Likewise.
-
- Stage 14a: allow printing argv references.
- Refactor symbol-value printing code for better sharing, and to
- allow printing a contiguous text representation of a $@ ref.
- Memory impact: none.
- Speed impact: none.
- * m4/m4module.h (m4_arg_print): New prototype.
- (m4_symbol_value_print): Alter prototype.
- * m4/input.c (struct input_funcs): Add parameter to peek_func.
- (file_peek, builtin_peek, string_peek): Ignore new parameter.
- (composite_peek): Ignore new parameter, for now.
- (composite_clean, pop_input): Rework to minimize indirection, and
- to avoid infinite recursion in next patch.
- * m4/macro.c (trace_prepre, trace_pre): Adjust callers.
- (m4_arg_print): New function.
- * m4/symtab.c (m4_symbol_value_print): Update signature.
- (m4_symbol_print): Update caller.
- * m4/output.c (m4_shipout_string_trunc): Update comments.
- * m4/syntax.c (set_quote_age): Require comma as argument separator
- when dealing with $@ as a unit.
- * tests/builtins.at (ifelse): Augment test.
- * doc/m4.texinfo (Changesyntax): Document changesyntax deficiency.
-
-2008-01-31 Eric Blake
-
- Kill hack for M4 1.4.4.
- * configure.ac (AM_GNU_GETTEXT_INTL_SUBDIR): Delete, now that
- we require new enough autoconf which in turn requires M4 1.4.5.
-
-2008-01-31 Gary V. Vaughan
- and Eric Blake
-
- Depend on new libtool to use non-recursive build.
- * configure.ac (LT_PREREQ): Bump to alpha release version.
- (LTDL_INIT): Choose nonrecursive mode. Perform sanity check that
- installed libtool has correct symbols.
- * Makefile.am (SUBDIRS): Drop ltdl, now that it is built from the
- top level.
- (AM_CPPFLAGS): Drop directories covered by libtool.
- (AM_LDFLAGS): Drop -no-undefined, covered by libtool.
- (include_HEADERS, noinst_LTLIBRARIES, EXTRA_LTLIBRARIES): New
- macros, used by libtool.
- (lib_LTLIBRARIES): Also used by libtool.
- (ltdl/libltdlc.la): Delete, now that libtool does this.
- * bootstrap: Mention new requirements.
- (LIBTOOLIZE): Provide default program, and run libtoolize prior to
- autoreconf.
- (autoreconf): Also neutralize libtoolize, since it is run early.
- * HACKING: Mention updated prerequisites.
-
-2008-01-28 Ralf Wildenhues
-
- Fix build failure if installed libltdl is used.
- * Makefile.am (m4_libm4_la_DEPENDENCIES): Use $(LTDLDEPS).
-
-2008-01-28 Eric Blake
-
- Depend on newer autoconf, for testsuite -C dir.
- * Makefile.am (CD_TESTDIR): Delete, no longer required.
- (check-local, installcheck-local, clean-local-tests): Use new -C
- option from autotest.
- * configure.ac (AC_PREREQ): Bump to 2.61a.347.
- * bootstrap: Mention new dependency.
- * HACKING: Likewise.
-
-2008-01-27 Eric Blake
-
- Stage 13: push composite text tokens.
- Support pushing composite tokens, allowing back-references to be
- reused through multiple macro expansions. Add hueristic that
- avoids creating new reference when pushing existing references.
- Memory impact: noticeable improvement due to better reference
- reuse, except for O(n) to O(n^2) copying in boxed recursion.
- Speed impact: slight penalty, due to more bookkeeping.
- * m4/m4private.h (m4__push_symbol): Adjust prototype.
- * m4/input.c (m4__push_symbol): Add parameter, and support
- composite tokens.
- (append_quote_token): Add parameter, and support inlining of short
- text.
- (m4__next_token): Adjust caller.
- * m4/macro.c (m4_push_arg, m4_push_args): Likewise.
-
-2008-01-26 Eric Blake
-
- Stage 12c: add macro for m4_arg_len.
- Make a common action easier to type.
- Memory impact: none.
- Speed impact: none.
- * m4/m4module.h (M4ARGLEN): New macro.
- * m4/macro.c (process_macro): Adjust all callers.
- * m4/utility.c (m4_dump_args): Likewise.
- * modules/m4.c (divert, maketemp, mkstemp, m4wrap, len, index)
- (substr): Likewise.
- * modules/gnu.c (builtin, indir, mkdtemp, patsubst, regexp)
- (renamesyms): Likewise.
- * modules/stdlib.c (setenv): Likewise.
-
- Stage 12b: add m4_string_pair.
- Make passing quote delimiters around more efficient.
- Memory impact: none.
- Speed impact: slight penalty, due to more bookkeeping.
- * m4/m4module.h (m4_string_pair): New type.
- (m4_get_syntax_quotes, m4_get_syntax_comments): New prototypes.
- (m4_symbol_value_print, m4_symbol_print, m4_shipout_string_trunc):
- Alter signature.
- * m4/m4private.h (struct m4_string): Delete.
- (struct m4_syntax_table): Combine quote and comment members.
- (m4_get_syntax_lquote, m4_get_syntax_rquote, m4_get_syntax_bcomm)
- (m4_get_syntax_ecomm): Adjust accessors.
- (m4_get_syntax_quotes, m4_get_syntax_comments): New fast
- accessors.
- * m4/symtab.c (m4_symbol_value_print, m4_symbol_print):
- Alter signatures.
- * m4/input.c (string_print, composite_print, m4_input_print):
- All callers updated.
- * m4/syntax.c (m4_syntax_delete, m4_set_syntax)
- (check_is_single_quotes, m4_set_quotes, set_quote_age)
- (m4_get_syntax_lquote, m4_get_syntax_rquote)
- (m4_get_syntax_quotes, check_is_single_comments, m4_set_comment)
- (m4_get_syntax_bcomm, m4_get_syntax_ecomm)
- (m4_get_syntax_comments): Likewise.
- * m4/macro.c (trace_prepre, trace_pre, m4_push_args): Likewise.
- * m4/output.c (m4_shipout_string, m4_shipout_string_trunc):
- Likewise.
- * modules/m4.c (dumpdef, m4_make_temp): Likewise.
- * src/freeze.c (produce_frozen_state): Likewise.
- * tests/freeze.at (reloading unknown builtin): Update test.
-
- Stage 12a: make m4_symbol_chain a union.
- Shrink size of symbol chains by using a union.
- Memory impact: slight improvement, due to smaller struct.
- Speed impact: slight improvement, due to less bookkeeping.
- * m4/m4private.h (enum m4__symbol_chain_type): New enum.
- (struct m4_symbol_chain): Rename...
- (struct m4__symbol_chain): ...to this, since it is internal.
- * m4/symtab.c (m4_symbol_value_copy, m4_symbol_value_print): All
- callers updated.
- * m4/input.c (struct m4_input_block, m4__push_symbol)
- (composite_peek, composite_read, composite_unget)
- (composite_clean, composite_print, m4__make_text_link)
- (append_quote_token): Likewise.
- * m4/macro.c (expand_macro, arg_mark, m4_arg_symbol, m4_arg_text)
- (m4_arg_equal, m4_arg_len, m4_make_argv_ref, m4_push_arg)
- (m4_push_args): Likewise.
-
-2008-01-23 Eric Blake
-
- Adjust to recent libtool interface change.
- * configure.ac (LT_PREREQ): Require bleeding-edge libtool.
- (LT_WITH_LTDL): Delete, now that it is obsolete.
- (LTDL_INIT): Use new libtool macro.
-
-2008-01-22 Ralf Wildenhues
- and Eric Blake
-
- Rely on newer automake.
- * configure.ac (AM_INIT_AUTOMAKE): Require 1.10.1, and add lzma
- distribution.
- * bootstrap: Update automake requirement.
- (func_version): Fix --version output, broken since 2007-08-06.
- * HACKING: Likewise. Add lzma requirement.
- * Makefile.am (clean-local-src): Not needed any more with newest
- Automake.
- (clean-local): Adjust.
- * TODO: Remove completed item.
-
-2008-01-22 Eric Blake
-
- Doc tweak.
- * doc/m4.texinfo (Renamesyms): Avoid underfull hbox, and improve
- example.
-
-2008-01-21 Eric Blake
-
- Stage 11: full circle for single argument references.
- Pass quoted strings through to argument collection in a single
- action, so that an argument can be reused throughout macro
- recursion if it remains unchanged.
- Memory impact: noticeable improvement, due to more reuse in
- argument collection stacks; O(n^2) to O(n) on boxed recursion.
- Speed impact: noticeable improvement, due to less copying.
- * m4/m4module.h (m4_arg_text): Add parameter.
- (M4ARG): Adjust.
- * m4/m4private.h (CHAR_QUOTE): New input engine sentinel.
- (m4__make_text_link): New prototype.
- (struct m4_symbol_chain): Add quote_age member.
- (struct m4_symbol_value): Add end member to chained symbol.
- (struct m4_macro_args): Add wrapper member.
- * m4/symtab.c (m4_symbol_value_print): Print composite tokens.
- (m4_symbol_value_copy, m4_symbol_value_delete): Recognize
- composite tokens.
- * m4/input.c (make_text_link): Rename...
- (m4__make_text_link): ...to this, and export.
- (m4_push_string_finish): Adjust caller.
- (make_text_link, m4__push_symbol): Update new field.
- (file_read, builtin_read, string_read, composite_read, next_char):
- Add parameter.
- (m4_skip_line, match_input, consume_syntax): Adjust callers.
- (append_quote_token): New function.
- (m4__next_token): Pass quoted strings onto argument collection.
- (m4_print_token) [DEBUG_INPUT]: Update.
- * m4/macro.c (expand_argument): Collect composite arguments.
- (collect_arguments): Update new field.
- (expand_macro): Reduce ref-count of back-references after use.
- (arg_mark, m4_arg_symbol, m4_make_argv_ref): Adjust to new member
- names.
- (m4_is_arg_text): Also recognize composite symbols as text.
- (m4_arg_text, m4_arg_len): Merge composite symbols as needed.
- (m4_arg_equal): Compare composite symbols.
- (m4_push_arg, m4_push_args): Handle composite symbols.
- (m4_arg_symbol): Relax assertion.
- (process_macro): Use single-argument references.
- * m4/output.c (m4_shipout_string_trunc): Update comment.
- * tests/macros.at (Rescanning macros): Augment test.
-
-2008-01-16 Eric Blake
-
- Stage 10: avoid extra copying of strings and comments.
- When collecting tokens that are immune to further expansion, avoid
- copying data from one obstack to another by outputting it into the
- destination obstack to begin with. Also reduce copying done in
- format builtin.
- Memory impact: slight improvement, due to better obstack usage.
- Speed impact: noticeable improvement, due less data copying.
- * ltdl/m4/gnulib-cache.m4: Import intprops and vasnprintf-posix
- modules.
- * m4/m4private.h (m4__token_type): Adjust prototype.
- * m4/input.c (m4__next_token): Support new parameter.
- * m4/macro.c (m4_macro_expand_input, expand_token)
- (expand_argument, collect_arguments): Adjust callers.
- * modules/m4.c (ntoa): Tighten buffer size.
- * m4/output.c (m4_tmpname): Guarantee no buffer overflow.
- * modules/format.c (arg_int, arg_long, arg_double): New helper
- functions, to detect overflow or unparsed characters.
- (ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE): Adjust to check for
- missing or excess arguments.
- (format): Likewise, and also output directly into obstack if there
- is room.
- * doc/m4.texinfo (History): Update for new year.
- (Format): Test for new warnings.
-
-2008-01-15 Eric Blake
-
- * TODO: Update with some newer URLs.
-
- Verify linear `index'.
- * tests/builtins.at (index): New test.
- (translit): Make test take longer, to make quadratic algorithms
- more apparent.
-
-2007-12-20 Eric Blake
-
- Stage 9: share rather than copy single-arg refs.
- Use hooks of previous patch to create back-references to arguments
- in the input engine, and inline short text rather than always
- creating a FIFO link. Also start testing embedded NUL behavior.
- Until the argument collection engine also shares references, the
- memory usage increases.
- Memory impact: noticeable penalty, due to longer life of argv
- changing O(n) to O(n^2) on boxed recursion.
- Speed impact: slight improvement, due less data copying.
- * ltdl/m4/gnulib-cache.m4: Import memmem and quote modules.
- * m4/m4module.h (m4_arg_scratch): New prototype.
- * m4/m4private.h (m4__push_symbol): Add parameter.
- (m4_arg_scratch): Add fast accessor.
- (struct m4): Add expansion_level member, taken...
- * m4/macro.c (expansion_level): ...from here. Adjust all users.
- (expand_argument): Minor cleanup.
- (expand_macro): Track scratch space per macro call.
- (m4_arg_scratch): New function.
- (m4_make_argv_ref): Call new function.
- (m4_push_arg): Push reference to $0.
- (m4_push_args): Rework separator usage, since separators will
- usually be inlined.
- (process_macro): Allow embedded NUL.
- * m4/input.c (INPUT_INLINE_THRESHOLD): New define.
- (m4__push_symbol): Add parameter. Inline short strings, and save
- references through rescanning.
- * m4/symtab.c (m4_set_symbol_value_text): Weaken assertion.
- * modules/m4.c (errprint, index): Handle NUL transparently.
- (dumpdef, translit): Use scratch space, rather than expansion
- stack.
- * modules/gnu.c (renamesyms, m4symbols): Likewise.
- * tests/others.at (nul character): New test.
- (iso8859): Quote absolute file name, remove XFAIL.
- * tests/iso8859.m4: Avoid raw NUL in output.
- * tests/null.m4: New file.
- * tests/null.out: Likewise.
- * tests/null.err: Likewise.
- * Makefile.am (OTHER_FILES): Distribute new files.
- * .gitattributes: Treat new files as text.
-
-2007-12-17 Eric Blake
-
- Stage 8: extend life of references into argv.
- Add hooks to lengthen the lifetime of arguments reused in a macro
- expansion, rather than always discarding arguments at the end of
- expand_macro. Rework the expand_macro obstacks to handle longer
- lifetimes. For now, the hooks remain unused.
- Memory impact: slight penalty, due to larger structs.
- Speed impact: slight penalty, due to more bookkeeping.
- * m4/system_.h (obstack_regrow): Delete.
- * m4/m4private.h (struct m4_symbol_chain): Add level field.
- (m4__push_symbol): Adjust prototype.
- (m4__adjust_refcount): New prototype.
- (DEBUG_MACRO) [DEBUG]: New debug control.
- (struct m4__macro_arg_stacks): New structure.
- (struct m4): Add arg_stacks, stacks_count fields.
- * m4/m4module.h (m4_make_argv_ref): Add parameter.
- * m4/macro.c (argc_stack, argv_stack): Delete, replaced by
- context->arg_stacks.
- (m4_macro_expand_input) [DEBUG_MACRO]: Add debug hooks,
- conditional on M4_DEBUG_MACRO envvar.
- (collect_arguments): Adjust signature.
- (expand_macro): Rework obstack handling.
- (m4__adjust_refcount, arg_mark): New functions.
- (m4_make_argv_ref): Populate new field.
- (m4_push_arg, m4_push_args): Track inuse.
- (process_macro): One less cast.
- * m4/m4.c (m4_delete): Clean up arg_stacks.
- * m4/input.c (make_text_link): Use new field.
- (m4__push_symbol, file_clean): Update signature.
- (composite_read): Bump refcount when done with reference.
- (composite_clean): New function.
- (pop_input): Adjust caller.
- * m4/debug.c (m4_debug_message): Make assertion match comment.
- * modules/gnu.c (builtin, indir): Adjust callers.
- * tests/builtins.at (ifelse): New test.
- (exp): Move and rename...
- * tests/others.at (countdown): ...to this.
- * doc/m4.texinfo (Improved foreach): Fix tracing usage in
- example.
-
-2007-12-13 Eric Blake
-
- Yet more rewording.
- * doc/m4.texinfo (Inhibiting Invocation): Missed one instance in
- the previous patch.
-
- * THANKS: Update.
-
-2007-12-13 Paolo Bonzini (tiny change)
-
- * doc/m4.texinfo (Inhibiting Invocation): Fix quoting of a quoting
- example.
- Reported by Giovanni Toffetti.
-
-2007-12-11 Eric Blake
-
- Stage 7: use chained input support in input parser.
- Allow the LIFO input engine to rescan a macro expansion composed
- of smaller chunks of FIFO data, rather than the old approach of a
- monolithic string. For now, all chunks are still copied.
- Memory impact: slight penalty, due to FIFO chain overhead.
- Speed impact: slight penalty, due to extra bookkeeping.
- * m4/m4private.h (m4__push_symbol): New prototype.
- (struct m4_symbol_chain): Add const-safety.
- * m4/symtab.c (m4_symbol_value_print): Simplify.
- (dump_symbol_CB): Update caller.
- * m4/input.c (struct m4_input_block): Alter u_c member, first
- introduced 2006-10-25, but unused until now.
- (composite_peek, composite_read, composite_unget)
- (composite_print, init_builtin_token): Rewrite accordingly.
- (m4_push_wrapup): No longer need trailing NUL.
- (m4__push_symbol, make_text_link): New functions.
- (m4_push_string_finish): Use them.
- * m4/macro.c (m4_push_arg, m4_push_args): Likewise.
- (expand_macro): Simplify logic of nesting_limit.
- * src/main.c (main): Likewise.
- * doc/m4.texinfo (Dumpdef): Augment test.
-
-2007-12-08 Eric Blake
-
- Stage 6: convert builtins to push arg at a time.
- Add new methods to factor all builtins whose expansion includes an
- argument, making back-reference creation easier in future patches.
- Factor out length-limited printing to obstacks, and use -1 rather
- than 0 for unlimited length.
- Memory impact: none.
- Speed impact: slight improvement, due to better code sharing.
- * m4/m4module.h (m4_shipout_text): Rename...
- (m4_divert_text): ...to this, to avoid confusion with m4_shipout_*
- that does not worry about sync lines.
- (m4_shipout_string_trunc): New prototype.
- * m4/output.c (m4_shipout_text): Rename...
- (m4_divert_text): ...to this.
- (m4_shipout_string): Move guts...
- (m4_shipout_string_trunc): ...to this new function.
- * m4/macro.c (m4_push_arg, m4_push_args): New functions.
- (expand_token, process_macro): Update callers.
- * m4/input.c (string_print): Likewise.
- * modules/m4.c (ifdef, ifelse, shift, substr, translit, divert):
- Likewise.
- * modules/gnu.c (patsubst): Likewise.
- (debuglen): Use SIZE_MAX for unlimited debug length.
- * src/main.c (main): Likewise.
- * m4/m4.c (m4_create): Default max_debug_length to SIZE_MAX, not
- zero.
-
-2007-12-07 Eric Blake
-
- Minor security fix: Quote output of mkstemp.
- * modules/m4.c (m4_make_temp): Produce quoted output.
- * doc/m4.texinfo (Mkstemp, Mkdtemp): Update the documentation and
- tests.
-
- Stage 5: add notion of quote age.
- Cache the quoting rules that were in effect when a string was
- parsed, to avoid reparsing that string if no changequote or other
- quote age change took place in the meantime. A quote_age of 0 is
- always safe, but does not benefit from caching.
- Memory impact: slight improvement, due to smaller struct in input
- engine.
- Speed impact: slight penalty, due to more bookkeeping.
- * m4/m4module.h (m4_get_symbol_value_quote_age): New prototype.
- (m4_set_symbol_value_text): Adjust prototype.
- (m4_has_syntax): Factor out the unsigned char cast.
- * m4/m4private.h (struct m4_syntax_table): Add syntax_age and
- quote_age members.
- (m4__quote_age, m4__safe_quotes): New accessor macros, no need for
- functions at this point.
- (struct m4_symbol_value, struct m4_macro_args): Add quote_age
- member.
- (m4_set_symbol_value_text): Adjust fast accessor.
- (m4_get_symbol_value_quote_age): New fast accessor.
- * m4/symtab.c (m4_set_symbol_value_text): Add parameter.
- (m4_get_symbol_value_quote_age): New function.
- (m4_symbol_value_copy): Adjust callers.
- * m4/macro.c (expand_token): Add parameter, and track quote age.
- (expand_argument, collect_arguments): Track quote age.
- (m4_macro_expand_input, process_macro, m4_make_argv_ref)
- (m4_macro_expand_input): Update callers.
- (m4_arg_text, m4_arg_len, m4_arg_func): Abort on type mismatch.
- * m4/input.c: Comment cleanups.
- (struct m4_input_block): Reduce size.
- (m4__next_token): Report quote age.
- (m4_push_builtin, init_builtin_token): Update callers.
- * m4/utility.c (skip_space): Adjust callers.
- * m4/module.c (install_macro_table): Likewise.
- * m4/syntax.c (m4_set_syntax): Initialize and update quote age.
- (m4_set_quotes, m4_set_comment): Detect no-op changes, and update
- quote age.
- (set_quote_age): New helper function.
- (check_is_single_quotes, check_is_single_comments): Adjust
- callers.
- * src/freeze.c (reload_frozen_state): Likewise.
- * src/main.c (main): Likewise.
- * modules/m4.c (define, pushdef): No need to set macro text.
- * tests/builtins.at (changequote, defn): New tests.
- * examples/wrapfifo.m4: New file.
- * examples/wraplifo.m4: New file.
- * Makefile.am (dist_pkgdata_DATA): Distribute new examples.
-
-2007-12-04 Eric Blake
-
- Fix builds with OpenBSD make.
- * Makefile.am (HELP2MAN): New macro.
- (dist_man_MANS, doc/m4.1): Fix rules for building m4.1 into
- srcdir.
- * README: Update copyright.
- * HACKING: Mention help2man and makeinfo dependencies.
-
-2007-11-29 Eric Blake
-
- Stage 4: route indir, builtin through ref; make argv opaque.
- Finish making struct opaque to all but the input engine, by
- reworking obstack usage in expand_macro to better support creation
- of a $@ reference. Canonicalize the empty argument, to allow
- pointer comparison optimizations.
- Memory impact: slight penalty, due to larger struct.
- Speed impact: slight improvement, due to fewer function calls.
- * m4/system_.h (obstack_regrow): Fix precedence.
- * m4/m4module.h (m4_arg_equal, m4_arg_empty, m4_make_argv_ref):
- New prototypes.
- (struct m4_macro_args): Move...
- * m4/m4private.h (struct m4_macro_args): ...here, making it opaque
- to modules. Add has_ref member.
- (bool_bitfield): New helper typedef.
- (struct m4_symbol_chain): Add flatten and len members.
- * m4/macro.c (empty_symbol): New placeholder, for optimizing
- comparison with empty string.
- (m4_macro_expand_input): Initialize it.
- (collect_arguments): Alter signature, and populate new fields.
- (trace_pre, trace_post): Remove redundant parameter.
- (expand_macro): Alter handling of obstacks.
- (m4_arg_symbol): Account for wrapped argv.
- (m4_arg_equal, m4_arg_empty, m4_make_argv_ref): New methods.
- (m4_arg_text, m4_arg_len, m4_arg_func): Use new methods.
- * modules/m4.c (ifelse, syscmd): Likewise.
- * modules/evalparse.c (m4_evaluate): Likewise.
- (undefine, popdef, m4_dump_symbols): Optimize.
- * modules/gnu.c (builtin, indir, esyscmd, debugfile): Use new
- methods.
- (changesyntax, regexp): Optimize.
- * m4/output.c (diversion_storage): Use typedef.
-
- Stage 3b: cache length, rather than computing it, in modules.
- Use cached token length in builtins and output engine.
- Memory impact: none.
- Speed impact: noticeable improvement, due to fewer function calls.
- * m4/hash.c (m4_hash_remove): Avoid double free on remove
- failure.
- * m4/output.c (m4_shipout_string): Change semantics of len param.
- (m4_shipout_int): Use cached length.
- * m4/input.c (m4_push_string_finish): Likewise.
- * modules/m4.h (m4_make_temp_func): Add parameter.
- * m4/macro.c (expand_token, m4_arg_len): Use cached length.
- (collect_arguments, expand_macro): Alter signature.
- (trace_format): Don't use out-of-scope buffer.
- (process_macro): All callers changed.
- * m4/utility.c (m4_dump_args): Likewise.
- * m4/symtab.c (m4_symbol_value_print): Likewise.
- * modules/gnu.c (__file__, __program__, builtin, indir)
- (m4symbols, mkdtemp, regexp_compile, regexp_substitute,
- renamesyms, patsubst, regexp, regexp_compile): Likewise.
- * modules/load.c (m4modules): Likewise.
- * modules/m4.c (defn, m4wrap, maketemp, m4_make_temp)
- (numb_obstack, ifdef, ifelse, divert, len, substr): Likewise.
- * modules/perl.c (perleval): Likewise.
- * modules/stdlib.c (getcwd, getenv, getlogin, getpwnam, getpwuid)
- (hostname, uname, setenv): Likewise.
- * modules/mpeval.c (numb_obstack): Likewise.
- * src/freeze.c (dump_symbol_CB): Likewise.
- * doc/m4.texinfo (Renamesyms, Dumpdef, Changesyntax): Adjust test.
- * tests/builtins.at (mkstemp): Likewise.
- * tests/others.at (iso8859): XFAIL this test, now that
- length-based handling allows NUL through part but not all of M4.
-
-2007-11-28 Eric Blake
-
- Stage 3a: cache length, rather than computing it, in libm4.
- Cache the length of a token in the input engine and symbol table,
- to avoid repeating lots of strlen calls. Additionally, by using
- obstack length rather than strlen, the input engine can now
- support embedded NUL.
- Memory impact: slight penalty, due to larger struct.
- Speed impact: slight improvement, due to fewer function calls.
- * m4/m4module.h (struct m4_macro_args): Cache length.
- (m4_get_symbol_len, m4_get_symbol_value_len): New accessors.
- (m4_set_symbol_value_text): Change signature.
- * m4/m4private.h (struct m4_symbol_value): Store string length.
- (m4_get_symbol_value_text, m4_get_symbol_value_placeholder)
- (m4_set_symbol_value_placeholder): Update accordingly.
- (m4_set_symbol_value_text): Change signature.
- (m4_get_symbol_value_len): New accessor.
- * m4/input.c (struct m4_input_block, string_peek, string_read)
- (string_unget, string_print, m4_push_string_finish)
- (m4_push_wrapup): Track length of string input.
- (m4__next_token): Adjust all users of symbol text to track length,
- too.
- * m4/macro.c (expand_argument, collect_arguments): Likewise.
- * m4/module.c (install_macro_table): Likewise.
- * modules/gnu.c (builtin, indir): Likewise.
- * modules/m4.c (define, pushdef): Likewise.
- * src/main.c (main): Likewise.
- * src/freeze.c (reload_frozen_state): Likewise.
- * m4/symtab.c (m4_symbol_value_copy): Likewise.
- (m4_get_symbol_value_len): New function.
- (m4_get_symbol_value_text, m4_get_symbol_value_placeholder)
- (m4_set_symbol_value_text, m4_set_symbol_value_placeholder):
- Adjust implementation.
-
-2007-11-27 Eric Blake
-
- Stage 2: use accessors, not direct reference, into argv.
- Outside of macro.c, use accessor methods rather than direct access
- into the argv struct.
- Memory impact: none.
- Speed impact: slight penalty, due to increased function calls.
- * m4/m4private.h (m4_arg_argc): New fast accessor.
- * m4/m4module.h (m4_arg_argc, m4_arg_symbol, m4_is_arg_text)
- (m4_is_arg_func, m4_arg_text, m4_arg_len, m4_arg_func): New
- prototypes.
- (m4_builtin_func, M4BUILTIN, M4BUILTIN_HANDLER, m4_dump_args)
- (m4_macro_call): Make argc unsigned.
- (M4ARG): Use new accessors.
- * modules/m4.c (define, pushdef): Likewise.
- (undefine, popdef, ifelse, m4_dump_symbols, defn, undivert)
- (traceon, traceoff): Make argc unsigned.
- * modules/m4.h (m4_dump_symbols_func): Likewise.
- * modules/evalparse.c (m4_evaluate): Likewise.
- * modules/gnu.c (builtin, indir): Use new accessors.
- (changesyntax): Make argc unsigned.
- * modules/perl.c (perleval): Likewise.
- * m4/utility.c (m4_dump_args): Use new accessors.
- * m4/macro.c (trace_pre): Likewise.
- (m4_arg_symbol, m4_arg_argc, m4_is_arg_text, m4_is_arg_func)
- (m4_arg_text, m4_arg_len, m4_arg_func): New functions.
- (expand_macro, trace_pre, trace_post, m4_macro_call): Update argc
- usage.
-
-2007-11-24 Eric Blake
-
- Stage 1: convert m4_symbol_value** into new object.
- Pass a variable-size wrapper structure instead of an array to
- builtins, so that subsequent optimizations in the structure need
- not impact every builtin client.
- Memory impact: slight penalty, since struct is larger than array.
- Speed impact: slight penalty, due to increased bookkeeping.
- * ltdl/m4/gnulib-cache.m4: Import flexmember module.
- * m4/m4module.h (m4_macro_args): New type, will be opaque to
- modules later.
- (m4_builtin_func, M4BUILTIN, M4BUILTIN_HANDLER, m4_dump_args)
- (m4_macro_call): Alter signature to use m4_macro_args object.
- (M4ARG): Redefine to access new struct.
- * m4/m4private.h (M4_SYMBOL_COMP): New enumerator.
- (struct m4_symbol_chain): New type.
- (struct m4_symbol_value): Add chain alternative.
- * m4/macro.c (collect_arguments): Build new struct.
- (expand_macro, m4_macro_call, process_macro, trace_pre)
- (trace_post): Adjust implementation to use it.
- * m4/utility.c (m4_dump_args): Likewise.
- * modules/gnu.c (builtin, indir): Likewise.
- * modules/format.c (format): Likewise.
- * modules/m4.h (m4_dump_symbols_func): Likewise.
- * modules/m4.c (m4_dump_symbols, define, pushdef, defn, ifelse)
- (shift, include, errprint, m4wrap): Likewise.
- * modules/evalparse.c (m4_evaluate): Likewise.
-
- Pass only macro name to utility functions.
- * m4/m4module.h (m4_bad_argc, m4_numeric_arg): Adjust signature.
- * m4/utility.c (m4_bad_argc, m4_numeric_arg): Adjust
- implementation.
- * m4/macro.c (m4_macro_call): Adjust callers.
- * modules/gnu.c (builtin, debuglen): Likewise.
- * modules/m4.c (ifelse, incr, decr, divert, undivert, m4exit)
- (substr): Likewise.
- * modules/evalparse.c (m4_evaluate): Likewise.
- * modules/stdlib.c (setenv, getpwuid, srand): Likewise.
- * modules/time.c (ctime, gmtime, localtime, mktime, strftime):
- Likewise.
-
-2007-11-23 Eric Blake
-
- Add macro name to debugfile messages.
- * m4/m4module.h (m4_debug_set_output): Add parameter.
- * m4/debug.c (m4_debug_set_output, set_debug_file): Pass macro
- name through.
- * modules/gnu.c (debugfile): Adjust caller.
- * modules/m4.c (m4exit): Likewise.
- * src/main.c (main): Likewise.
-
- Factor out handling of macro name in error messages.
- * m4/m4module.h (m4_error, m4_error_at_line, m4_warn)
- (m4_warn_at_line): Add new parameter.
- * m4/utility.c (m4_verror_at_line): New helper method.
- (m4_error, m4_error_at_line, m4_warn, m4_warn_at_line): Add new
- parameter.
- (m4_bad_argc, m4_numeric_arg, m4_parse_truth_arg): All callers
- changed.
- * m4/debug.c: Likewise.
- * m4/input.c: Likewise.
- * m4/macro.c: Likewise.
- * m4/module.c: Likewise.
- * m4/output.c: Likewise.
- * m4/path.c: Likewise.
- * modules/evalparse.c: Likewise.
- * modules/format.c: Likewise.
- * modules/gnu.c: Likewise.
- * modules/load.c: Likewise.
- * modules/m4.c: Likewise.
- * modules/mpeval.c: Likewise.
- * src/freeze.c: Likewise.
- * src/main.c: Likewise.
-
-2007-11-14 Eric Blake
-
- Handle some defn corner cases differently.
- * doc/m4.texinfo (Defn): Update documentation; although this still
- doesn't match the branch, since it may be changed before 2.0.
- * m4/macro.c (expand_argument): Consistently ignore builtins in
- concatenation contexts.
- * m4/m4private.h (m4__symbol_type): Fix C89 compliance bug.
-
-2007-11-13 Eric Blake
-
- Note: Patches titled Stage 0 through N form a series of patches
- which decreases the algorithmic complexity of tail recursion in
- macro expansions from O(n^2) to O(n) in both time and memory, then
- performs cleanups, such as handling of embedded NUL, made easier
- by the code refactoring.
-
- Stage 0: Fix memory leak in tail recursion.
- Free expansion text in the input engine as soon as it is parsed,
- rather than when the recursive expansion completes.
- Memory impact: noticeable improvement, due to reduction from
- O(n^2) to O(n) on recursion.
- Speed impact: minor improvement, due to better memory usage.
- * m4/input.c (pop_input): Add flag parameter and return type.
- (next_char): Adjust caller.
- (m4_push_string_init): Let go of memory earlier.
-
-2007-11-07 Eric Blake
-
- * tests/macros.at (Rescanning macros): Test more corner cases.
-
-2007-11-06 Eric Blake
-
- * build-aux/mkstamp: Rename from ltdl/config/mkstamp.
-
- * Makefile.am (tests/package.m4): Work around bash bug.
- Reported by Ralf Wildenhues.
-
-2007-11-05 Eric Blake
-
- For consistency with other GNU projects, use build-aux directory.
- * configure.ac (AC_CONFIG_AUX_DIR): Change ltdl/config to
- build-aux.
- * bootstrap (config_aux_dir): Likewise.
- * Makefile.am (config_aux_dir): Likewise.
- * ltdl/m4/gnulib-cache.m4: Use --aux-dir option.
-
-2007-11-02 Eric Blake
-
- Update some documentation about version control.
- * NEWS: M4 is now stored in git.
- * HACKING: Likewise.
- * README: Likewise.
- * bootstrap: Likewise.
- * commit: Delete, now that CVS commits are no longer necessary.
- * ltdl/config/mailnotify: No longer necessary; git's patch
- generation and mail capability is more powerful.
-
- Update to recent gnulib changes.
- * ltdl/m4/gnulib-cache.m4: Replace fprintf-posix, vasprintf-posix,
- xprintf, and xvasprintf with xprintf-posix and xvasprintf-posix.
-
-2007-11-01 Eric Blake
-
- Improve error message when early end of file occurs.
- * doc/m4.texinfo (Macro Arguments, Changequote, Changecom)
- (M4wrap): Adjust to new messages.
- (Improved capitalize): Enhance test.
- * m4/m4private.h (m4__next_token): Adjust prototype.
- * m4/input.c (m4__next_token): Add new parameter, and improve
- error message.
- * m4/macro.c (m4_macro_expand_input, collect_arguments): Adjust
- callers.
- (expand_argument): Likewise, and add parameter.
-
-2007-10-31 Eric Blake
-
- Test more corner cases.
- * tests/macros.at (Rescanning macros): Beef up test.
- * doc/m4.texinfo (Changecom): Beef up test.
- (Improved foreach): Document alternate foreachq style.
- * examples/foreachq3.m4: New file.
- * examples/loop.m4: New file.
- * Makefile.am (dist_pkgdata_DATA): Distribute them.
-
-2007-10-28 Eric Blake
-
- More test coverage for autoconf usage patterns.
- * doc/m4.texinfo (Shift): Document cond macro, and add new test.
- * tests/macros.at (Rescanning macros): New test.
- * tests/builtins.at (include): Augment test.
-
-2007-10-28 Ralf Wildenhues
-
- * Makefile.am: Adjust getopt handling to latest gnulib layout.
-
-2007-10-27 Eric Blake
-
- Document one use of changequote(`(',`)').
- * doc/m4.texinfo (Changequote): Add new test, based on recent
- autoconf addition of m4_expand.
-
-2007-10-24 Ralf Wildenhues
-
- * Makefile.am (dist_pkgdata_DATA): Add examples/capitalize2.m4.
-
-2007-10-22 Eric Blake
-
- Never let printf failures go undetected.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- xprintf'.
- * m4/system_.h: Include xprintf.h.
- * m4/debug.c (m4_debug_message_prefix, m4_debug_message): Wrap all
- use of printf, xprintf.
- * m4/input.c [DEBUG_INPUT]: Likewise.
- * m4/module.c [DEBUG_MODULES]: Likewise.
- * m4/output.c (m4_shipout_text, m4_shipout_int)
- (m4_freeze_diversions): Likewise.
- * m4/path.c [DEBUG_INCL]: Likewise.
- * m4/symtab.c [DEBUG_SYM]: Likewise.
- * m4/syntax.c [DEBUG_SYNTAX]: Likewise.
- * modules/modtest.c (export_test): Likewise.
- * src/freeze.c (produce_resyntax_dump, produce_syntax_dump)
- (produce_module_dump, dump_symbol_CB, produce_frozen_state):
- Likewise.
- * src/main.c (usage): Likewise.
- * po/POTFILES.in: Adjust to new file.
- * po/Makevars (XGETTEXT_OPTIONS): Likewise.
-
-2007-10-18 Eric Blake
-
- Fix 'm4 -F file -t undefined'.
- * src/freeze.c (produce_symbol_dump): Skip trace placeholders.
- * src/freeze.c (dump_symbol_CB): Also skip void symbols.
- * tests/freeze.at (reloading unknown builtin): Test for this bug.
- * m4/m4module.h (m4_symtab_apply): Add parameter.
- * m4/symtab.c (m4_symtab_apply): Ignore trace placeholders when
- requested.
- (m4_symtab_delete, symtab_dump): Adjust callers.
- * modules/m4.c (m4_dump_symbols): Likewise.
-
-2007-10-09 Eric Blake
-
- Fix regexp regression of 2007-09-29.
- * modules/gnu.c (substitute): Allow NULL buf when no
- subexpressions were present.
- (regexp): Handle \ escapes even with empty regex.
- * doc/m4.texinfo (Regexp, Patsubst): Catch this bug.
-
- Cache regex compilation for another autoconf speedup.
- * modules/gnu.c (gnu_buf): Replace...
- (REGEX_CACHE_SIZE, regex_cache): ...with new declarations.
- (m4_pattern_buffer): Add fields.
- (m4_regexp_compile): Rename...
- (regexp_compile): ...to this, and drop no_sub parameter.
- Implement caching.
- (M4FINISH_HANDLER): Clean up entire cache.
- (m4_regexp_search): Rename...
- (regex_search): ...to this, adjust to new struct contents, and add
- no_sub parameter.
- (m4_regexp_substitute): Rename...
- (regexp_substitute): ...to this.
- (substitute, patsubst, regexp, renamesyms): Adjust callers.
-
-2007-10-02 Eric Blake
-
- Document quoting pitfalls in capitalize.
- * doc/m4.texinfo (Patsubst): Use the examples directory. Also
- document shortfall.
- (Improved capitalize): New node.
- * examples/capitalize.m4: Update to match manual.
- * examples/capitalize2.m4: New file.
-
-2007-10-01 Eric Blake
-
- Another Autoconf usage pattern optimization.
- * modules/m4.c (m4_index): Optimize search for one byte.
- * doc/m4.texinfo (Index macro, Regexp, Patsubst): Test the new
- code paths.
-
-2007-09-29 Eric Blake
-
- Optimize for Autoconf usage pattern.
- * modules/gnu.c (regexp, patsubst): Handle empty regex faster.
-
- * tests/testsuite.at (AT_CHECK_M4): Slight optimization.
-
-2007-09-24 Eric Blake
-
- Create .gitignore alongside .cvsignore.
- * bootstrap (version control): Update to reflect git usage.
-
-2007-09-13 Eric Blake
-
- * AUTHORS: Fix typo.
-
-2007-09-12 Gary V. Vaughan
-
- Be consistent about using 'module' for m4_module types and
- 'handle' for lt_dlhandle types:
-
- * m4/m4private.h (m4_symbol_value): Rename handle element to
- method. Changed all references.
- (VALUE_MODULE, SYMBOL_MODULE): Renamed from VALUE_HANDLE and
- SYMBOL_HANDLE respectively. Changed all references.
- * m4/m4module.h (M4INIT_HANDLER, M4FINISH_HANDLER): Ditto.
- * m4/builtin.c (m4_builtin_find_by_name)
- (m4_builtin_find_by_func): Use module as the parameter name for
- pointers of type 'm4_module'.
- * m4/module.c (module_remove, m4_get_module_name)
- (install_builtin_table, install_macro_table)
- (m4_module_make_resident, m4__module_next, m4_module_refcount):
- Ditto.
- * src/freeze.c (produce_module_dump): Ditto.
- * m4/input.c (m4_input_block): Rename handle element to method.
- Changed all references.
- * m4/symtab.c (m4__symtab_remove_module_references): Ditto.
- * modules/load.c: Use module as the variable name for pointers
- of type 'm4_module'.
- * modules/m4.c: Ditto.
- * modules/perl.c: Ditto.
- * modules/shadow.c: Ditto.
-
-2007-09-07 Eric Blake
-
- Add refcount builtin.
- * modules/load.c (refcount): New builtin.
- (m4modules): Use correct type.
- * doc/m4.texinfo (Refcount): New section.
- * m4/m4private.h (struct m4_module): Add refcount member.
- (m4_module_refcount) [NDEBUG]: Add faster accessor macro.
- * m4/module.c (m4_module_load): Add symbols to table on first
- load by m4, regardless of other libltdl loads of same module.
- (m4_module_refcount): Use new struct member, rather than relying
- on libltdl count which might be inflated by unrelated loads.
- (m4__module_interface): Optimize.
- (m4__module_next, m4__module_find): Avoid assertions that could
- trigger with unrelated libltdl loads.
- (m4__module_open): Track m4 load count.
- (m4__module_exit): Only unload what m4 loaded.
- (module_remove): Track m4 unloads.
- * NEWS: Document new builtin.
-
- More conversion to m4_module*.
- * src/freeze.c (produce_module_dump, dump_symbol_CB)
- (reload_frozen_state): Use correct type.
- * m4/input.c (struct m4_input_block): Likewise.
- * m4/symtab.c (dump_symbol_CB): Likewise.
-
- * AUTHORS: Simplify, to match libtool and autoconf layout.
- * THANKS: Sync with branch.
-
-2007-09-06 Eric Blake
-
- Wrap lt_dlhandle in struct m4_module.
- * m4/m4module.h (includes): No longer require clients to know
- about lt_dlhandle.
- (m4_module): New opaque declaration.
- (m4_export): Delete unused type.
- (M4INIT_HANDLER, M4FINISH_HANDLER, m4_module_init_func)
- (m4_module_finish_func, m4_module_load, m4_get_module_name)
- (m4_builtin_find_by_name, m4_builtin_find_by_func): Use new
- wrapper.
- (m4_module_makeresident, m4_module_refcount): New declarations.
- * m4/m4private.h (includes): Move here.
- (m4_module): New declaration. Simple for now, but intended for
- growth.
- (m4__module_open, m4__module_next, m4__module_find)
- (m4__symtab_remove_module_references): Use new wrapper.
- * m4/builtin.c (m4_builtin_find_by_name, m4_builtin_find_by_func):
- Likewise.
- * m4/module.c (m4_get_module_name, m4_module_import)
- (m4_module_load): Likewise.
- (install_builtin_table, install_macro_table): Likewise. Also,
- change return type since these always returned NULL and no one
- used the result.
- (m4_module_makeresident, m4_module_refcount): New functions.
- (m4_module_unload, m4__module_next, m4__module_find): Use new
- wrapper.
- (m4__module_open): Populate new wrapper, and associate it with the
- lt_dlhandle.
- (m4__module_exit): Use new wrapper.
- (module_remove): Likewise. Reclaim storage on last use.
- (module_close): Delete, and inline into module_remove.
- * m4/symtab.c (m4__symtab_remove_module_references): Use new
- wrapper.
- * modules/load.c (load_init): Use new API.
- * modules/m4.c (m4_export_table): Kill unused declaration.
- (m4_init): Use new API.
- * modules/shadow.c (shadow_init): Use new API.
- * src/main.c (main): Adjust callers.
- * src/freeze.c (reload_frozen_state): Likewise.
- * tests/modules.at (unload load module): New test.
-
-2007-09-03 Gary V. Vaughan
-
- * bootstrap (ltdl/m4/.cvsignore): Add xstrtol module macros.
- * src/m4/.cvsignore: Add xstrtol module sources.
-
-2007-09-03 Gary V. Vaughan
-
- Work around a bug in darwin's awk:
-
- * bootstrap (func_get_translations): Use $AWK instead of raw
- `awk' so that the user can use an alternative implementation
- if the first awk in PATH doesn't behave as expected.
- (func_get_translations): The first awk script mangles the last
- entry passed to it for at least the awk implementation shipped
- with Darwin 8.10.1. Capture $3 into a variable too to work-
- around that problem.
-
-2007-08-29 Gary V. Vaughan
-
- As gnulib xstrtol is only used by main, and unconditionally pulls
- in a copy of getopt, undo bootstrap change from 2007-08-11 below,
- and copy the xstrtol code into src/ so that main() can use it
- without pushing the extra code into libm4:
-
- * bootstrap (src_modules): Add getopt and xstrtol modules.
- * Makefile.am (src_m4_SOURCES): Add xstrtol sources.
- * po/POTFILES.in: Move gnu/xstrtol-error.c to src/xstrtol-error.c.
-
-2007-08-11 Eric Blake
-
- Another upstream xstrtol change.
- * po/POTFILES.in: Track changes in files containing messages.
- * bootstrap (src_modules): getopt is now pulled into libgnu.a, no
- need to grab it separately.
- * src/main.c (OPT_STR, LONG_OPT_STR, short_opt_str, OPT_STR_INIT):
- No longer needed.
- (size_opt): Adjust to latest xstrtol interface.
-
-2007-08-10 Eric Blake
-
- Documentation improvements.
- * doc/m4.texinfo (Defn): Resync with branch.
- (Compatibility, Extensions): Sync with branch.
-
-2007-08-07 Eric Blake
-
- Adjust to gnulib xstrtol changes.
- * src/main.c (size_opt): Adjust signature, so that error strings
- are easier to translate.
- (OPT_STR, LONG_OPT_STR, short_opt_str, OPT_STR_INIT): New macros
- for tracking long options.
- (main): Track which long option was used.
- * tests/options.at (--debuglen, --nesting-limit): Adjust to change
- in error message.
- (deprecated options): Test that --arglength spelling shows up in
- error message.
-
-2007-08-06 Eric Blake
-
- Normalize all GPL license notices.
- * m4/COPYING.LIB: Delete - libm4 is not distributed under LGPLv2
- at this time.
- * Makefile.am: Update license wording.
- * bootstrap: Likewise.
- * commit: Likewise.
- * configure.ac: Likewise.
- * ltdl/config/mailnotify: Likewise.
- * ltdl/config/mkstamp: Likewise.
- * ltdl/m4/debug.m4: Likewise.
- * ltdl/m4/gmp.m4: Likewise.
- * ltdl/m4/m4-error.m4: Likewise.
- * ltdl/m4/m4-getopt.m4: Likewise.
- * ltdl/m4/m4-gettext.m4: Likewise.
- * ltdl/m4/m4-obstack.m4: Likewise.
- * ltdl/m4/m4-regex.m4: Likewise.
- * ltdl/m4/stackovf.m4: Likewise.
- * m4/builtin.c: Likewise.
- * m4/debug.c: Likewise.
- * m4/hash.c: Likewise.
- * m4/hash.h: Likewise.
- * m4/input.c: Likewise.
- * m4/m4.c: Likewise.
- * m4/m4module.h: Likewise.
- * m4/m4private.h: Likewise.
- * m4/macro.c: Likewise.
- * m4/module.c: Likewise.
- * m4/output.c: Likewise.
- * m4/path.c: Likewise.
- * m4/resyntax.c: Likewise.
- * m4/symtab.c: Likewise.
- * m4/syntax.c: Likewise.
- * m4/system_.h: Likewise.
- * m4/utility.c: Likewise.
- * modules/evalparse.c: Likewise.
- * modules/format.c: Likewise.
- * modules/gnu.c: Likewise.
- * modules/import.c: Likewise.
- * modules/load.c: Likewise.
- * modules/m4.c: Likewise.
- * modules/m4.h: Likewise.
- * modules/modtest.c: Likewise.
- * modules/mpeval.c: Likewise.
- * modules/perl.c: Likewise.
- * modules/shadow.c: Likewise.
- * modules/stdlib.c: Likewise.
- * modules/time.c: Likewise.
- * modules/traditional.c: Likewise.
- * po/Makevars: Likewise.
- * src/freeze.c: Likewise.
- * src/m4.h: Likewise.
- * src/main.c: Likewise.
- * src/stackovf.c: Likewise.
- * tests/builtins.at: Likewise.
- * tests/freeze.at: Likewise.
- * tests/generate.awk: Likewise.
- * tests/m4.in: Likewise.
- * tests/macros.at: Likewise.
- * tests/modules.at: Likewise.
- * tests/options.at: Likewise.
- * tests/others.at: Likewise.
- * tests/stackovf.test: Likewise.
- * tests/testsuite.at: Likewise.
-
-2007-07-22 Eric Blake
-
- Fix diversions on NetBSD, when fopen(name,"a+") seeks to end.
- * m4/output.c (m4_tmpopen): Explicitly seek to beginning.
- * tests/builtins.at (divert): Enhance test to cover this.
- * THANKS: Update.
- Reported by Thomas Klausner.
-
-2007-07-20 Eric Blake
-
- Fix 'make distcheck' issues.
- * bootstrap: Add more files that might be more up-to-date in
- gnulib.
- * Makefile.am (EXTRA_DIST): No longer distribute removed diff.
- * config/m4/gnulib-cache.m4: Update to latest gnulib.
-
-2007-07-16 Eric Blake
-
- * po/POTFILES.in: Track recent translation additions from gnulib
- updates.
-
-2007-07-14 Eric Blake
-
- Reflect upstream license .texi changes.
- * doc/m4.texinfo (Copying): Rename node...
- (GNU General Public License): ...to this.
- (GNU Free Documentation License): Adjust node location.
- * local/doc/gpl-3.0.texi.diff: Remove file.
-
-2007-07-10 Eric Blake
-
- Upgrade to GPLv3, and document 1.4.10.
- * bootstrap: Adjust to GPLv3.
- (func_update): Port from branch.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool
- --local-dir=local --import gpl-3.0'.
- * doc/m4.texinfo (History): Mention 1.4.11.
- (Copying This Package): New appendix.
- * NEWS: Document 1.4.10.
- * local/doc/gpl-3.0.texi.diff: New file.
- * Makefile.am: Update license.
- (doc_m4_TEXINFOS, EXTRA_DIST): Distribute additions.
- * commit: Update license.
- * configure.ac: Likewise.
- * ltdl/config/mailnotify: Likewise.
- * ltdl/config/mkstamp: Likewise.
- * ltdl/m4/debug.m4: Likewise.
- * ltdl/m4/gmp.m4: Likewise.
- * ltdl/m4/m4-error.m4: Likewise.
- * ltdl/m4/m4-getopt.m4: Likewise.
- * ltdl/m4/m4-gettext.m4: Likewise.
- * ltdl/m4/m4-obstack.m4: Likewise.
- * ltdl/m4/m4-regex.m4: Likewise.
- * ltdl/m4/stackovf.m4: Likewise.
- * m4/builtin.c: Likewise.
- * m4/debug.c: Likewise.
- * m4/hash.c: Likewise.
- * m4/hash.h: Likewise.
- * m4/input.c: Likewise.
- * m4/m4.c: Likewise.
- * m4/m4module.h: Likewise.
- * m4/m4private.h: Likewise.
- * m4/macro.c: Likewise.
- * m4/module.c: Likewise.
- * m4/output.c: Likewise.
- * m4/path.c: Likewise.
- * m4/resyntax.c: Likewise.
- * m4/symtab.c: Likewise.
- * m4/syntax.c: Likewise.
- * m4/system_.h: Likewise.
- * m4/utility.c: Likewise.
- * modules/evalparse.c: Likewise.
- * modules/format.c: Likewise.
- * modules/gnu.c: Likewise.
- * modules/import.c: Likewise.
- * modules/load.c: Likewise.
- * modules/m4.c: Likewise.
- * modules/m4.h: Likewise.
- * modules/modtest.c: Likewise.
- * modules/mpeval.c: Likewise.
- * modules/perl.c: Likewise.
- * modules/shadow.c: Likewise.
- * modules/stdlib.c: Likewise.
- * modules/time.c: Likewise.
- * modules/traditional.c: Likewise.
- * po/Makevars: Likewise.
- * src/freeze.c: Likewise.
- * src/m4.h: Likewise.
- * src/main.c: Likewise.
- * src/stackovf.c: Likewise.
- * tests/builtins.at: Likewise.
- * tests/freeze.at: Likewise.
- * tests/generate.awk: Likewise.
- * tests/m4.in: Likewise.
- * tests/macros.at: Likewise.
- * tests/modules.at: Likewise.
- * tests/options.at: Likewise.
- * tests/others.at: Likewise.
- * tests/stackovf.test: Likewise.
- * tests/testsuite.at: Likewise.
-
-2007-07-09 Eric Blake
-
- * modules/format.c (format): Avoid undefined behavior with %c.
-
-2007-07-01 Gary V. Vaughan
-
- The translation project has moved.
- * bootstrap (func_get_translations): Use the new translation
- project url.
- (TP_URL): Removed.
-
-2007-06-26 Karl Berry (tiny change)
-
- Match Free Software Directory categories.
- * doc/m4.texinfo (dircategory): Update.
-
-2007-05-31 Eric Blake
-
- Add extension to divert builtin.
- * modules/m4.c (builtin_divert): Immediately divert second
- argument.
- * m4/output.c (m4_output_text): Allow 0 length. Fixes regression
- from two days ago.
- (m4_shipout_text): Short-circuit on zero length.
- * tests/freeze.at (loading format 2): Expand test to catch
- regression. Also check out-of-range version.
- * tests/builtins.at (divert): Expand test to check corner cases
- of extension.
- * doc/m4.texinfo (Divert): Document the extension.
- * NEWS: Likewise.
- Reported by Daniel Richard G.
-
-2007-05-30 Eric Blake
-
- Port format improvements from branch.
- * doc/m4.texinfo (History): Mention upcoming 1.4.10 release.
- (Format): Enhance section.
- * modules/format.c (format): Accept %'hhd, and issue warnings on
- unrecognized specifiers.
- * modules/gnu.c (builtin_format): Adjust how format is called.
-
-2007-05-28 Eric Blake
-
- * tests/options.at (--syncoutput): Add xfailed test.
-
- Fix sync line interaction with multiline comments.
- * doc/m4.texinfo (Preprocessor features): Improve documentation.
- (Syncoutput): Improve testsuite.
- (Incompatibilities): Add testcase, and document bug.
- * src/freeze.c (reload_frozen_state): Don't interfere with
- synclines when reloading state.
- * m4/input.c (m4__next_token): Report line where multiline tokens
- start.
- * m4/m4private.h (m4__token_type): Add parameter.
- * m4/m4module.h (m4_output_text): Export.
- (m4_shipout_text): Add parameter.
- * src/macro.c (m4_macro_expand_input, expand_token)
- (expand_argument): Adjust callers so that line is passed from
- input to output.
- * m4/output.c (output_text): Rename...
- (m4_output_text): ...to this, and export.
- (m4_insert_file, insert_diversion_helper): Update callers.
- (m4_shipout_text): Take new parameter for start line of token.
- Output at most one syncline per token.
- Reported by Sergey Poznyakoff.
-
- Fix large diversion corner cases.
- * tests/freeze.at (large diversion): New test.
- * m4/output.c (m4_tmpfile, m4_tmpopen): Simplify use of errno.
- (make_room_for): Use NULL, not 0, for pointers.
- (m4_freeze_diversions): Allow freezing large diversions.
- (insert_diversion_helper): Avoid using rewind.
-
- Also run gnulib unit tests during make check.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool
- --tests-base=tests/gnu --with-tests'.
- * configure.ac (AC_CONFIG_FILES): Build tests/gnu testdir.
- * Makefile.am (SUBDIRS): Run gnulib tests before ours.
-
-2007-05-25 Eric Blake
-
- * m4/system_.h: Include , for intmax_t.
- * THANKS: Update.
- Reported by Daniel Richard G.
-
-2007-05-24 Eric Blake
-
- Provide consistent shift semantics regardless of hardware.
- * modules/m4.c (numb_lshift, numb_rshift, numb_urshift): Mask
- before shifting.
- (number, unumber): Always use [u]intmax_t.
- Reported by Gary V. Vaughan.
-
- Support POSIX flush semantics on all platforms.
- * modules/m4.c (m4_sysval_flush): Rely on gnulib.
- * ltdl/m4/gnulib-cache.m4: Fix typo in previous commit.
-
- Work around cygwin and mingw fseeko bugs.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- fseeko'.
- * modules/m4.c (m4_sysval_flush): Prefer fseeko over fseek.
-
-2007-04-25 Eric Blake
-
- Test that regression in 1.4.9's eval doesn't recur.
- * doc/m4.texinfo (Eval): Check negative division.
- * THANKS: Update.
-
-2007-04-12 Eric Blake
-
- Allow for running test in sticky or setgid directory.
- * tests/builtins.at (mkdtemp): Adjust test.
-
- Don't test for broken sed too soon.
- * tests/others.at (stdin seekable): Rearrange subtests.
-
- Work around 'stdin seekable' shortcoming on glibc.
- * ltdl/m4/gnulib-cache.m4: Use closein instead of closeout.
- * tests/others.at (stdin closed): Adjust to new output.
- * src/main.c (process_file): No need to return anything.
- (main): Use close_stdin instead of close_stdout.
- Reported by Ralf Wildenhues.
-
- Enable autobuild usage.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- autobuild'.
- * configure.ac (AB_INIT): Output autobuild information.
-
-2007-04-11 Eric Blake
-
- Address testsuite shortcoming in 'stdout full' on glibc.
- * tests/others.at (stdout full): Adjust expected output when more
- than 1k text is printed to /dev/full.
- Reported by Ralf Wildenhues.
-
-2007-04-10 Eric Blake
-
- * tests/macros.at (Arity and defn): Fix quoting.
-
-2007-04-09 Eric Blake
-
- Address failure of 'seekable stdin' on Mac OS X.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- fflush'.
-
-2007-04-07 Eric Blake
-
- Include first in all C files, and not in headers.
- Fixes regression for --disable-assert builds from 2007-04-02.
- * src/m4.h (includes): Don't include config.h here.
- * m4/m4private.h (includes): Likewise.
- * m4/builtin.c: Include config.h before anything else.
- * m4/debug.c: Likewise.
- * m4/hash.c: Likewise.
- * m4/input.c: Likewise.
- * m4/m4.c: Likewise.
- * m4/macro.c: Likewise.
- * m4/module.c: Likewise.
- * m4/symtab.c: Likewise.
- * m4/syntax.c: Likewise.
- * m4/utility.c: Likewise.
- * src/freeze.c: Likewise.
- * src/stackovf.c: Likewise.
-
-2007-04-03 Eric Blake
-
- * modules/m4.c (numb_ratio, numb_divide, numb_modulo): Avoid
- SIGFPE on x86 architectures.
- Reported by Ralf Wildenhues.
-
-2007-04-02 Eric Blake
-
- Fix warnings from last commit.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- fprintf-posix sprintf-posix'.
- * m4/macro.c (expand_macro, trace_format): Use correct specifier
- for size_t.
- (process_macro): Avoid negative array index.
- * src/freeze.c (produce_resyntax_dump, produce_module_dump)
- (dump_symbol_CB, produce_frozen_state): Use correct specifier for
- size_t.
-
-2007-04-02 Gary V. Vaughan
-
- Get rid of the last 'differs in signedness' compiler warnings:
-
- * m4/macro.c (process_macro): m4_get_symbol_value_text() returns
- a regular 'char *', so variables to store the return address,
- and iterate through it should be regular 'char *' too.
- * m4/input.c (m4_input_block): The start and current members of
- the string part of this union store regular 'char *' types, so
- they should be regular 'char *' types too.
-
-2007-04-02 Gary V. Vaughan
-
- M4 was designed to have a small number of header files defining
- the interfaces to several source files each. Keeping this in
- mind allows us to tidy things up considerably. Having done this,
- it becomes clear that some of the installed headers reference
- other headers which are not installed (but that's another patch):
-
- * m4/m4private.h (stdio--.h, stdlib--.h, unistd--.h): Moved from
- here...
- * m4/system_.h (gnu/stdio--.h, gnu/stdlib--.h, gnu/unistd--.h):
- ...to here, so client modules can benefit too.
- (assert.h, errno.h, limits.h, sys/stat.h): Include one here at the
- lowest level to save doing it multiple times elsewhere.
- * m4/debug.c (stdio.h): Removed. The portable
- is already included via m4private.h.
- * modules/time.c (stdio.h): Ditto.
- * modules/gnu.c (stdlib.h): Ditto resp .
- * modules/stdlib.c (stdlib.h, unistd.h): Ditto resp
- and ,
- * m4/m4private.h (m4module.h): Use angle brackets for an installed
- file.
- * m4/hash.h (system.h): Ditto.
- * modules/gnu.c (progname.h): Removed.
- * src/freeze.c (m4/system.h, m4private.h): Already included vi m4.h.
- * m4/m4private.h (assert.h, errno.h): Already included via
- m4/m4module.h.
- * m4/input.c (ctype.h): Ditto.
- * m4/module.c (ltdl.h): Ditto.
- * m4/output.c (errno.h, limits.h, stdio.h, sys/types.h, sys/stat.h)
- (unistd.h): Ditto.
- * m4/path.c (config.h, stdlib.h): Ditto.
- * m4/utility.c (config.h): Ditto.
- * modules/evalparse.c (assert.h, ctype.h): Ditto.
- * modules/gnu.c (assert.h, ctype.h, errno.h): Ditto.
- * modules/import.c (assert.h): Ditto.
- * modules/m4.c (assert.h, errno.h): Ditto.
- * modules/modtest.c (assert.h): Ditto.
- * modules/stdlib.c (sys/types.h): DittAo.
- * src/m4.h (ctype.h, errno.h, string.h, sys/types.h, ltdl.h):
- Ditto.
- * src/stackovf.c (assert.h): Ditto.
- * modules/gnu.c (m4/m4module.h, m4private.h): Build using the faster
- private interfaces when NDEBUG is defined.
- * modules/import.c (m4/m4module.h, m4private.h): Ditto.
- * modules/load.c (m4/m4module.h, m4private.h): Ditto.
- * modules/m4.c (m4/m4module.h, m4private.h): Ditto.
- * modules/modtest.c (m4/m4module.h, m4private.h): Ditto.
- * modules/mpeval.c (m4/m4module.h, m4private.h): Ditto.
- * modules/perl.c (m4/m4module.h, m4private.h): Ditto.
- * modules/shadow.c (m4/m4module.h, m4private.h): Ditto.
- * modules/time.c (m4/m4module.h, m4private.h): Ditto.
- * modules/traditional.c (m4/m4module.h, m4private.h): Ditto.
- * src/m4.h (locale.h): Moved from here...
- * src/main.h: ...to here.
- (m4private.h): Already included via m4.h.
- * src/stackovf.c (m4private.h): Ditto.
-
-2007-03-28 Gary V. Vaughan
-
- * Makefile.am (stamp-vcl): Removed.
- (CONFIG_STATUS_DEPENDENCIES): Depend directly on ChangeLog.
-
-2007-03-28 Eric Blake
-
- * src/main.c (usage): Improve note to TRANSLATORS.
- * m4/system_.h (EXIT_FAILURE): Reflect gnulib changes.
-
- * tests/builtins.at (__m4_version__): Fix bug when TIMESTAMP is
- empty.
-
-2007-03-24 Eric Blake
-
- * m4/output.c (m4_output_init): Update to latest gnulib.
- * bootstrap (ltdl/m4/.cvsignore): No longer track generated
- .cvsignore in CVS.
- * NEWS: Reflect release of 1.4.9.
- * THANKS: Update.
-
-2007-03-07 Eric Blake
-
- * AUTHORS: Update
-
- Exercise gnulib's new POSIX *printf modules.
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- vasprintf-posix'.
- * modules/format.c (format): Support %a and %A.
- * doc/m4.texinfo (Format): Test this addition.
- * NEWS: Document this addition.
-
-2007-03-03 Eric Blake
-
- * m4/input.c (m4__next_token): Fix synclines when in batch mode.
- * doc/m4.texinfo (M4exit): Synch another section.
- (Syncoutput): Make similar to other sections.
-
-2007-03-01 Eric Blake
-
- * doc/m4.texinfo: Improve the indices.
- (Concept index): Rearrange to be last.
- (Sysval): Merge from branch.
-
- * doc/m4.texinfo (Syscmd, Esyscmd): Merge more doc sections.
-
-2007-02-28 Eric Blake
-
- POSIX XCU ERN 137 was approved.
- * modules/mpeval.c (numb_extension): Delete.
- * modules/m4.c (numb_extension): Likewise.
- * modules/evalparse.c (comma_term, condition_term): Always
- implement ?: and , operators.
- * m4/symtab.c: Update comment to match reality.
- * src/freeze.c (produce_frozen_state, reload_frozen_state): Avoid
- dereferencing context directly when accessor exists.
- * src/main.c (usage): Prefer GNU_M4 over EMACS.
- (struct macro_definition): Rename...
- (struct deferred): ...to match usage. All uses changed.
- * doc/m4.texinfo (Eval): Document this change.
- (Operation modes, Changeresyntax): Fix wording to prefer GNU_M4
- over emacs.
- (Preprocessor features, Changesyntax): Fix inaccuracies.
- * NEWS: Import branch NEWS items for 1.4.x series. Document
- change in eval.
-
- POSIX XCU ERN 118 was approved.
- * modules/m4.c (define): Kill posixly_correct distinction in
- define behavior, since POSIX says GNU behavior complies.
- * tests/builtins.at (define): Restore original semantics.
- * doc/m4.texinfo (Pushdef): Document portability issues with
- define.
- (Incompatibilities): Clean up wording of what POSIX requires.
- * NEWS: Document this.
-
-2007-02-26 Eric Blake
-
- Re-enable clean bootstrap on cygwin.
- * Makefile.am (AM_LDFLAGS): For now, export all symbols from
- modules, since otherwise we run afoul of current libtool
- limitations on cygwin and mingw.
-
-2007-02-25 M. Levinson (tiny change)
-
- * src/freeze.c (reload_frozen_state): Avoid dereferencing freed
- memory. Fixes regression introduced 2007-01-20.
-
-2007-02-25 Eric Blake
-
- * tests/freeze.at (loading format 2): Augment test to catch
- regression introduced on 2007-01-20.
- * THANKS: Update.
- Reported by M. Levinson.
-
- * m4/system_.h (includes, EXIT_SUCCESS, EXIT_FAILURE): Adjust to
- latest gnulib.
-
-2007-02-05 Eric Blake
-
- * tests/options.at (--fatal-warnings): New test.
- * tests/others.at (stdin seekable): Exit on error.
- * m4/m4private.h (M4_OPT_WARN_EXIT_BIT): New bit.
- (m4_get_warnings_exit_opt): Access it.
- * m4/m4module.h (m4_context_opt_bit_table): Access it.
- * m4/utility.c (m4_error, m4_error_at_line): Only force an exit
- on -EE.
- (m4_warn, m4_warn_at_line): Change exit status on -E, and force
- exit on -EE.
- * src/m4.c (usage): Document new -E behavior.
- (main): Make -E an additive option.
- * doc/m4.texinfo (Operation modes): Document the change.
- Reported by Ralf Wildenhues.
-
- * tests/others.at (stdin seekable): Fix bug in test.
- * ltdl/m4/gnulib-cache.m4: Gnulib module strstr no longer exists.
-
- * m4/input.c (struct m4_input_block): Remove unused field traced.
-
-2007-02-03 Eric Blake
- and Bruno Haible (tiny change)
-
- * doc/m4.texinfo (Input processing, Quoting Arguments): Beef up
- the examples.
- Reported by Bruno Haible.
-
-2007-01-31 Eric Blake
-
- * m4/resyntax.c (m4_regexp_syntax_encode): Detect allocation
- failure.
-
-2007-01-26 Eric Blake
-
- * m4/symtab.c (includes): Adjust to latest gnulib.
- * modules/m4.c (includes): Likewise.
-
-2007-01-23 Eric Blake
-
- * m4/m4module.h (M4_SYNTAX_ASSIGN): Delete this unused
- extension to make enough room.
- (M4_SYNTAX_IGNORE): Change value to zero, since the (commented)
- code in input.c special cases this category.
- (M4_SYNTAX_LBRACE, M4_SYNTAX_RBRACE): New values in preparation
- for define(eleventh,${11}) extension.
- * m4/syntax.c: Update comments accordingly.
- (m4_syntax_create, m4_syntax_code): Handle { and }.
- * m4/input.c (m4__next_token): Likewise.
- * src/freeze.c (produce_frozen_state): Support new categories.
- (reload_frozen_state): When loading version 1, disable syntax
- features not present in 1.4.x.
- * tests/freeze.at: Sort and rename existing tests.
- (loading format 1): Ensure we don't break v1 frozen files that
- used raw ${.
- (loading format 2, reloading changecom, reloading changesyntax):
- New tests.
- * doc/m4.texinfo (Changesyntax, Frozen file format 1): Document
- the new syntax categories.
- (Arguments): Update the FIXME comment.
- (M4wrap): Merge examples from branch, before worrying about fixing
- m4wrap to obey POSIX.
- (Using frozen files): Start merging from branch.
- * NEWS: Update.
-
-2007-01-20 Eric Blake
-
- * src/freeze.c (produce_char_dump): Delete. Replace with...
- (produce_mem_dump): ...this new function, to encode more strings.
- Also make the coding easier to read and slightly more compact.
- (produce_syntax_dump): Only dump non-default syntax codes.
- (produce_module_dump, dump_symbol_CB, produce_frozen_state):
- Encode non-ASCII characters in user-supplied strings.
- (GET_STRING): Accept escape sequences in version 2.
- * NEWS: Document this change.
- * TODO: Update.
-
-2007-01-16 Eric Blake
-
- Port patch from branch for stack overflow detection on BSD/OS.
- * ltdl/m4/stackovf.m4 (M4_SYS_STACKOVF): Check for stack_t.ss_sp.
- * src/stackovf.c (setup_stackovf_trap) [HAVE_SIGALTSTACK &&
- ! HAVE_STACK_T_SS_SP]: Use this check.
- Reported by Chris McGuire.
-
-2007-01-15 Eric Blake
-
- * tests/builtins.at (__m4_version__): New test.
- * modules/traditional.c (m4_macro_table): Provide windows and os2
- macros, as appropriate. Add __traditional__ macro.
- * modules/mpeval.c (m4_macro_table): Name the macro __mpeval__,
- not __gmp__, to match module name.
- * modules/load.c (m4_macro_table): Name the macro __load__, not
- __modules__, to match module name.
- * doc/m4.texinfo (History, Shell commands, Platform macros): Merge
- from the branch.
- (Standard Modules): Improve wording.
- (Incompatibilities): Move platform macros into their own node.
- (Load, Unload): Use actual examples.
- * NEWS: Document this change.
- * THANKS: Update.
-
-2007-01-13 Eric Blake
-
- * doc/m4.texinfo (Mpeval): Add tests.
- * tests/testsuite.at (AT_CHECK_GMP): New filter, factored from...
- * tests/builtins.at (gmp): ...here. Rename test to...
- (mpeval): ...this.
- * tests/generate.awk (new_test): Filter out mpeval tests when gmp
- is not available.
- * m4/m4module.h (m4_get_no_gnu_extensions_opt): Merge
- no_gnu_extensions with posixly_correct_opt, since they were set in
- sync.
- * m4/m4private.h (struct m4): Remove no_gnu_extensions.
- * src/main.c (main): Update caller.
- * src/freeze.c (reload_frozen_state): Likewise.
- * modules/m4.c (m4wrap): Likewise.
-
-2007-01-12 Eric Blake
-
- * m4/syntax.c (m4_set_comment): XCU ERN 131 was approved by
- POSIX, so update the comment.
- * doc/m4.texinfo (Inhibiting Invocation): XCU ERN 130 was
- approved by POSIX, so we can always have blind macros, even when
- POSIXLY_CORRECT.
- (Ifelse): Mention the term `blind builtin'.
-
-2007-01-08 Ralf Wildenhues
-
- * doc/m4.texinfo: Fix a couple of typos.
-
-2007-01-08 Eric Blake
-
- * ltdl/m4/gnulib-cache.m4: Update for new year.
- * ltdl/m4/gmp.m4 (_M4_LIB_GMP): Cover all error cases.
- Reported by Ralf Wildenhues.
-
-2007-01-06 Eric Blake
-
- * m4/m4private.h (to_uchar): Move...
- * m4/m4module.h: here, so modules can use it.
- * src/main.c (usage, long_options): Support --posix as a synonym
- for --traditional.
- * modules/m4.c (numb_invert): Detect unsupported x**-y.
- (numb_incr, numb_urshift, numb_extension): New macros.
- (numb_obstack): Port patch from branch to support radix 1 output.
- * modules/mpeval.c (numb_obstack): Use \ for ratios.
- (numb_incr, numb_urshift, numb_extension): New macros.
- (mpq2mpz): Warn rather than error.
- * modules/evalparse.c (URSHIFT, NEGATIVE_EXPONENT): New
- enumerators.
- (eval_error): Rearrange, so that all ignorable errors are less
- than SYNTAX_ERROR.
- (eval_text, last_text): Obey C++ type safety rules.
- (numb_pow): Change return type.
- (exp_term): Adjust caller.
- (m4_evaluate): Fail on bad exponent.
- (logical_or_term, logical_and_term): Ignore failed ** in short
- circuit.
- (eval_lex): Fix typos when detecting <<= and >>=. Use \ instead
- of : for ratio. Support >>>, ,, and ?:. Port patch from branch
- to parse radix 1 numbers.
- (condition_term, comma_term): New parse functions.
- (shift_term): Support >>>.
- (m4_evaluate): Port patch from branch to output radix 1 numbers.
- Warn instead of error for most parse problems.
- * doc/m4.texinfo (Limits control, Eval): Document these changes.
- * NEWS: Document new operators and new command line option.
-
-2007-01-04 Eric Blake
-
- * configure.ac (AC_SYS_LARGEFILE): Guarantee large file support.
-
-2007-01-03 Eric Blake
-
- * doc/m4.texinfo (Format, Incr): More merges.
- (Eval): Ensure C precedence rules are met.
- * modules/evalparse.c (BADOP, INVALID_OPERATOR): New enumerators.
- (not_term, logical_not_term): Delete; these are same precedence
- as other unary operators.
- (equality_term): New; these are lower precedence than relational
- operators.
- (eval_lex, simple_term, m4_evaluate): Recognize forbidden C
- operators for better error messages.
- (logical_or_term, logical_and_term): Short-circuit out the error
- of division by zero.
- (unary_term): Allow consecutive unary operators.
- * modules/m4.c (int2numb, numb2int): Delete; these potentially
- truncate bits.
- (numb_not, numb_eor, numb_ior, numb_and): Update callers.
- * modules/mpeval.c (reduce1, reduce2): Protect macros better.
- * NEWS: Document this change.
-
-2006-12-27 Eric Blake
-
- * doc/m4.texinfo (Substr, Patsubst): Merge more sections from the
- branch.
- * modules/m4.c (substr): Merge from branch.
-
-2006-12-26 Eric Blake
-
- * doc/m4.texinfo (Changesyntax): Check for regressions with
- changesyntax(W=...).
-
-2006-12-22 Eric Blake
-
- * m4/m4module.h (m4_set_syntax): Change signature.
- * modules/gnu.c (m4_resyntax_encode_safe): Reduce error to
- warning.
- (changesyntax): Likewise, and update caller.
- * m4/m4private.h (m4_syntax_table): Add orig member.
- * m4/syntax.c (m4_set_quotes, m4_set_comment): Merge from branch.
- Don't set is_single_quotes and is_single_comments when the begin
- character is shadowed by another syntax type.
- (m4_syntax_create): Populate default syntax table.
- (add_syntax_attribute): Don't lose quote assignment.
- (remove_syntax_attribute): Only allow removing rquote or ecomm.
- (add_syntax_set, subtract_syntax_set, set_syntax_set)
- (reset_syntax_set): New helper routines.
- (m4_set_syntax): Alter semantics - NUL key reverts entire syntax
- to default, and empty chars reverts that key to default.
- (check_is_single_quotes, check_is_single_comments): New helper
- routines.
- * modules/m4.c (changecom): Merge from branch.
- * m4/input.c (m4__next_token): Rearrange token recognition order
- to macro, quote, comment, in order to match traditional
- implementations.
- * src/freeze.c (reload_frozen_state): Update caller.
- * doc/m4.texinfo (Changequote, Changecom): Merge from branch, with
- modifications.
- (Changeresyntax): Revise to match style of surrounding sections
- and add more examples.
- (Changesyntax): Likewise, and update to new semantics.
- * NEWS: Document this change.
-
- * doc/m4.texinfo (Operation modes): Avoid underfull hbox.
- (M4wrap, Eval, Errprint): Fix typos.
- (Divnum): Not necessary to redivert in example.
-
-2006-12-21 Eric Blake
-
- * doc/m4.texinfo (Len, Index macro, Regexp): More section merging
- from branch.
-
-2006-12-19 Eric Blake
-
- * modules/m4.h (m4_sysval_flush_func): Adjust prototype.
- * modules/m4.c (m4_sysval_flush): Add parameter, so that m4exit
- can track write errors without all other callers warning multiple
- times.
- (sysval_flush_helper): New function.
- (dumpdef, syscmd, errprint, m4exit): Adjust callers.
- * modules/gnu.c (esyscmd): Likewise.
- * tests/others.at (stdout closed, stdout full): Error message
- update.
-
-2006-12-16 Eric Blake
-
- * src/main.c: Fix missing include.
-
- * src/main.c (main): Check for errors when closing stdin.
- * modules/m4.c (m4exit): Missed part of previous patch: flush
- stdin before a successful exit.
- Reported by Ralf Wildenhues.
-
-2006-12-14 Eric Blake
-
- * modules/m4.c (m4_sysval_flush): Flush stdin before exiting, as
- required by POSIX.
- * tests/others.at (stdin seekable): New test.
-
-2006-12-09 Ralf Wildenhues
-
- * doc/m4.texinfo: Fix some typos.
-
-2006-12-04 Eric Blake
-
- * doc/m4.texinfo (Undivert, Divnum, Cleardivert): Merge more doc
- sections.
- (Modules): Make style consistent.
-
-2006-11-16 Eric Blake
-
- * bootstrap: Relax m4 requirement, thanks to...
- * configure.ac (Gettext support): ...this workaround to the 1.4.4
- bug. Undoes restriction added on 2006-11-09.
-
- * tests/builtins.at (esyscmd, syscmd): Redo, since spilled
- diversions are now closed when not active.
- (divert): Remove check now in the manual.
- * tests/others.at (stderr closed): Likewise.
- (stdout closed): Add a check.
- * doc/m4.texinfo (Include, Search Path, Diversions, Divert): Sync
- more docs with branch.
-
-2006-11-14 Eric Blake
-
- Remerge sparse diversion handling from branch.
- * ltdl/m4/gnulib-cache.m4: Replace avltree-list with
- avltree-oset.
- * m4/output.c (diversion_table): Change type to gl_oset_t.
- (m4_output_init, m4_output_exit, cleanup_tmpfile, make_room_for)
- (m4_make_diversion, insert_diversion_helper, m4_insert_diversion)
- (m4_undivert_all, m4_freeze_diversions): Adjust all callers.
- (div0, diversion_storage): New variables.
- (diversions, equal_diversion_CB): Deleted.
- (threshold_diversion_CB): New callback.
- (m4_tmpname, m4_tmpopen, m4_tmpclose, m4_tmpremove): New
- functions.
- (m4_tmpfile): Move cloexec action here.
-
- * m4/resyntax.c (m4_regexp_syntax_encode): Avoid bug with signed
- char.
-
-2006-11-13 Eric Blake
-
- Add several new command line options.
- * src/main.c (usage): Update.
- (OPTSTRING, long_options): Add --pushdef, --popdef, --gnu,
- --traceon, --traceoff, --syncoutput, --warnings, --unload-module.
- Make --regexp-syntax argument optional.
- (main): Support new options. Fix regression in interactive
- behavior from Nov 8.
- * m4/m4private.h (M4_OPT_SYNCOUTPUT_BIT): Rename from
- M4_OPT_SYNC_OUTPUT_BIT.
- * m4/m4module.h (m4_context_opt_bit_table): Rename sync_output to
- syncoutput, to match option.
- (m4_parse_truth_arg): New prototype.
- * m4/utility.c (m4_parse_truth_arg): Implement it.
- * m4/output.c (m4_shipout_text): Adjust sync_output caller.
- * modules/gnu.c (syncoutput): Adjust sync_output caller, and use
- m4_parse_truth_arg.
- * doc/m4.texinfo (Operation modes, Dynamic loading features)
- (Preprocessor features, Limits control, Debugging options)
- (Command line files): Update documentation.
- * tests/builtins.at (mkstemp): Simplify.
- * tests/macros.at (Command line pushdef): New test.
- (Command line define): Improve.
- * tests/options.at (--traceon and --traceoff, --syncoutput): New
- tests.
- (POSIXLY_CORRECT): Likewise.
- (deprecated options): Augment.
- (--regexp-syntax): Update, now that -r takes optional arg.
- * NEWS: Reformat. Document new options.
-
-2006-11-11 Eric Blake
-
- One step closer to allowing C++ compilation - don't blindly
- convert between char* and unsigned char*.
- * m4/m4module.h (m4_set_syntax): Change signature.
- * m4/m4private.h (m4_string): Use signed char.
- (m4_get_syntax_lquote, m4_get_syntax_rquote, m4_get_syntax_bcomm)
- (m4_get_syntax_ecomm): No longer a need to cast.
- * m4/syntax.c (m4_set_syntax, m4_syntax_create, m4_set_quotes):
- Reflect this change.
- * m4/macro.c (expand_argument): Simplify.
- (expand_token): Use proper type.
- * src/freeze.c (reload_frozen_state): Likewise.
- * m4/input.c (MATCH, match_input): Likewise.
- * modules/m4.c (translit): Likewise.
- * modules/gnu.c (substitute): Simplify.
-
- * m4/macro.c (trace_format): Use canonical type name.
- * m4/output.c (m4_freeze_diversions): Likewise.
- * src/freeze.c (produce_module_dump, dump_symbol_CB)
- (produce_frozen_state): Likewise.
- * m4/m4private.h (to_uchar): Grab from branch.
- * m4/input.c (string_peek, string_read): Use it.
- * m4/utility.c (skip_space): Likewise.
- * src/main.c (main): Likewise.
- * doc/m4.texinfo (Translit): Remerge from branch.
- * tests/builtins.at (translit): Test 8-bit range.
- * modules/m4.c (m4_expand_ranges): Merge from branch.
-
-2006-11-09 Eric Blake
-
- * bootstrap: Validate that installed M4 is powerful enough.
- Reported by Gary V. Vaughan, analyzed by Stepan Kasal.
-
-2006-11-08 Eric Blake
-
- Merge deferred handling of -D option from branch.
- * doc/m4.texinfo (Debugging options, Preprocessor features)
- (Dynamic loading features, Operation modes, Invoking m4):
- Document this change.
- * src/main.c (OPTSTRING): Specify in-order processing.
- (process_file): New function.
- (main): Use it to interleave files and deferred options.
- * tests/macros.at (Command line define): New test.
- * tests/generate.awk: Allow '@comment file' as first example
- within a node.
- * tests/options.at (option grouping): Update to reflect actual
- POSIX semantics.
- (file names): New test.
-
-2006-11-07 Eric Blake
-
- * m4/output.c (cleanup_tmpfile, m4_insert_diversion_helper): Check
- for failure.
-
- * tests/builtins.at (m4exit): New test; failed on cygwin before
- this patch.
- * m4/output.c (cleanup_tmpfile): Close files before removing
- directory.
- (make_room_for, m4_output_exit): Ensure that atexit handler
- invoked from m4_error sees consistent state.
-
- * doc/m4.texinfo (Errprint): Merge another doc node.
- * tests/builtins.at (dumpdef, errprint): New tests.
- * modules/m4.c (errprint): Merge from branch: flush before
- printing to stderr.
-
-2006-11-02 Eric Blake
-
- * bootstrap: Update bootstrap requirement wording.
- Reported by Bruno Haible.
-
-2006-10-31 Eric Blake
-
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- strstr'.
- * doc/m4.texinfo (Translit): Merge from branch.
- * modules/m4.c (divert, substr): Ignore excess arguments.
- (index, translit): Merge from branch.
- * tests/builtins.at (translit): Add a test.
-
-2006-10-30 Eric Blake
-
- * m4/m4private.h (m4_get_symbol_value_module): Delete accidental
- checkin.
- * m4/symtab.c (m4_get_symbol_value_module): Likewise.
-
- * modules/m4.c (m4_make_temp): Make safe across libtool.
- * m4/symtab.c (dump_symbol_CB) [DEBUG_SYM]: Avoid warnings.
- * configure.ac (--with-modules): Accomodate changed module
- location when doing './configure --enable-debug'.
-
-2006-10-28 Eric Blake
-
- * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
- config-h.'
-
-2006-10-27 Eric Blake