diff -ruNp m4-1.4.3/COPYING m4-1.4.4/COPYING --- m4-1.4.3/COPYING 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/COPYING 2005-05-01 12:48:59.000000000 +0100 @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -279,7 +279,7 @@ POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - Appendix: How to Apply These Terms to Your New Programs + 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 @@ -291,7 +291,7 @@ convey the exclusion of warranty; and ea the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + 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 @@ -305,14 +305,15 @@ the "copyright" line and a pointer to wh You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision 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. diff -ruNp m4-1.4.3/ChangeLog m4-1.4.4/ChangeLog --- m4-1.4.3/ChangeLog 2005-03-31 12:50:38.000000000 +0100 +++ m4-1.4.4/ChangeLog 2005-10-20 11:00:58.000000000 +0100 @@ -1,13 +1,79 @@ +2005-03-31 Gary V. Vaughan + + Release 1.4.4: + + * configure.ac (AC_INIT): Bump to 1.4.4. + * NEWS: Describe 1.4.4's changes. + * INSTALL, install-sh, doc/texinfo.tex: Updated from upstream. + +2005-10-17 John Gatewood Ham (tiny change) + + * src/m4.c: fix return code when non-existent files are processed + +2005-10-17 John Gatewood Ham (tiny change) + + * README: update email address for bug reports. + +2005-10-17 Gary V. Vaughan + + * doc/m4.info: Generated files are not kept in the repository. + +2005-05-01 Gary V. Vaughan + + The FSF are moving offices today. Changed their contact address + in all files from `59 Temple Place, Suite 330, MA 02111-1307' to + `51 Franklin Street, Fifth Floor, MA 02110-1301'. + + Also, some of the files here were never updated from the previous + '675 Mass Ave, Cambridge, MA 02139', so changed those to the + '51 Franklin Street, Fifth Floor, MA 02110-1301' address too. + +2005-03-31 Mike Frysinger + + * Makefile.in (bindir, infodir): Substitute from configure rather + than hardcode. + * doc/Makefile.in (infodir): Ditto. + * src/Makefile.in (bindir): Ditto. + * NEWS: Updated. + +2005-03-31 Gary V. Vaughan + + Changes needed to automate the release process for 1.4.3: + + * Makefile.in (dist): Make .tar.bz2 tarball too. + * Makefile.maint (TSDEPS_DIST): Remove m4/libtool.m4. + (cvs-news): Look 1 line further down for NEWS release number. + (cvs-dist): We don't use automake, so make dist is fine. + Remove double . before suffixes. + (cvs-release): Don't mention manual.html. + (fetch): Get latest gendocs files. + (web-manual): Rewritten to use gendoc for multiformat manuals. + * doc/gendocs.sh: Don't save an old version in m4 CVS! + * doc/m4.texinfo (Index): HFS+ (the file system on my Mac) is case + preserving, but case insensitive, so generating html docs per node + clashes between Index.html, the node file, and index.html, the + top-level of the document tree... + (Index macro): ...so renamed to this. Changed all references. + 2005-03-31 Gary V. Vaughan (tiny change) - * configure.in (VERSION): Bump to 1.4.3. - * News: Describe 1.4.3's changes. + * configure.ac (AC_INIT): Bump to 1.4.3a. + +2005-03-31 Gary V. Vaughan (tiny change) + + Release 1.4.3: + + * configure.in (AC_INIT): Bump to 1.4.3. + * NEWS: Describe 1.4.3's changes. + +2005-03-31 Gary V. Vaughan + * Makefile.maint: New file with release rules, from CVS libtool. * Makefile.in (DISTFILES): Add Makefile.maint. * INSTALL, install-sh, doc/texinfo.tex: Updated to latest canonical versions. -2005-03-31 Erik Blake (tiny change) +2005-03-31 Eric Blake (tiny change) * doc/m4.texinfo (Patsubst): Re-add trailing space required by checks/47.patsubst, with a redundant @comment to prevent emacs @@ -15,7 +81,7 @@ * checks/get-them: Allow for trailing spaces tucked behind @comment marks. -2005-03-31 Erik Blake (tiny change) +2005-03-31 Eric Blake (tiny change) * doc/Makefile.in (install, uninstall): Accomodate DESTDIR. * src/Makefile.in (install, uninstall): Likewise. @@ -1704,4 +1770,4 @@ Mon Jan 22 21:08:52 1990 Rene' Seindal * Initial beta release. Release 0.50, manual 0.05. - $Revision: 1.1.1.1.2.20 $ $Date: 2005/03/31 11:50:38 $ + $Revision: 1.1.1.1.2.29 $ $Date: 2005/10/20 10:00:58 $ diff -ruNp m4-1.4.3/INSTALL m4-1.4.4/INSTALL --- m4-1.4.3/INSTALL 2005-03-31 12:41:03.000000000 +0100 +++ m4-1.4.4/INSTALL 2005-10-20 10:51:03.000000000 +0100 @@ -102,16 +102,16 @@ for another architecture. Installation Names ================== -By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PREFIX'. +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PREFIX', the package will -use PREFIX as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular @@ -159,7 +159,7 @@ where SYSTEM can have one of these forms need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will +use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a diff -ruNp m4-1.4.3/Makefile.in m4-1.4.4/Makefile.in --- m4-1.4.3/Makefile.in 2005-03-31 12:56:34.000000000 +0100 +++ m4-1.4.4/Makefile.in 2005-05-01 12:32:33.000000000 +0100 @@ -1,19 +1,21 @@ -# Main Makefile for GNU m4. -# Copyright (C) 1992, 1993, 1994, 2005 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## Makefile.in -- Main Makefile for GNU m4. +## +## Copyright (C) 1992, 1993, 1994, 2005 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 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; See the file COPYING. if not, write to +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ @@ -40,8 +42,8 @@ LIBS = @LIBS@ prefix = @prefix@ exec_prefix = @exec_prefix@ -bindir = $(exec_prefix)/bin -infodir = $(prefix)/info +bindir = @bindir@ +infodir = @infodir@ MDEFINES = CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' LIBS='$(LIBS)' \ prefix='$(prefix)' exec_prefix='$(exec_prefix)' \ diff -ruNp m4-1.4.3/Makefile.maint m4-1.4.4/Makefile.maint --- m4-1.4.3/Makefile.maint 2005-03-31 13:00:04.000000000 +0100 +++ m4-1.4.4/Makefile.maint 2005-05-01 12:25:36.000000000 +0100 @@ -1,4 +1,4 @@ -## Makefile.maint -- Makefile rules for libtool maintainers -*-Makefile-*- +## Makefile.maint -- Makefile rules for m4 maintainers -*-Makefile-*- ## ## Copyright (C) 2004, 2005 Free Software Foundation ## @@ -14,8 +14,8 @@ ## ## You should have received a copy of the GNU General Public License ## along with this program; see the file COPYING. If not, write to -## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -## Boston, MA 02111-1307, USA. +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. # Need various variables defined by configure, a lot easier to just # include the Makefile than figure out a way to put them in here too @@ -42,7 +42,6 @@ cvs-release: version-check prev-tarball echo " *** $$xdeltaname, $$xdeltaname.sig and";\ echo " *** $$xdeltaname.directive.asc to either" echo " *** /incoming/alpha or /incoming/ftp on ftp-upload.gnu.org." - echo " *** You might need to upload manual.html to webcvs/libtool." .PHONY: version-check version-check: @@ -65,7 +64,7 @@ prev-tarball: # TSDEPS will be defined to TSDEPS_DIST at `make dist' time TSDEPS = -TSDEPS_DIST = ChangeLog m4/libtool.m4 +TSDEPS_DIST = ChangeLog CVS = cvs # set it to `:' to avoid CVS operations .PHONY: timestamps update-timestamps @@ -106,7 +105,9 @@ fetch: (cd Fetchdir && \ $(WGETSGO)/autoconf/autoconf/INSTALL; \ $(WGETSGO)/automake/automake/lib/install-sh; \ - $(WGETSGO)/texinfo/texinfo/doc/texinfo.tex ) + $(WGETSGO)/texinfo/texinfo/doc/texinfo.tex; \ + $(WGETSGO)/texinfo/texinfo/util/gendocs.sh; \ + $(WGETSGO)/texinfo/texinfo/util/gendocs_template; ) ## Don't exit after test because we want to give as many errors as ## possible. @stat=0; for file in $(FETCHFILES); do \ @@ -139,7 +140,7 @@ cvs-dist: cvs-news timestamps && $(CVS) -q tag `echo "release-$(VERSION)" | sed 's/\./_/g'` ## Generate signatures and directives for FSF ftp-upload: for suffix in .gz .bz2; do \ - ofile="$(PACKAGE)-$(VERSION).tar.$$suffix"; \ + ofile="$(PACKAGE)-$(VERSION).tar$$suffix"; \ $(GPG) --detach-sign $$ofile \ && echo "directory: $(PACKAGE)" > $$ofile.directive \ && $(GPG) --clearsign $$ofile.directive \ @@ -209,7 +210,12 @@ delta-xdelta: prev-tarball new-tarball g .PHONY: web-manual web-manual: - @$(LN_S) $(top_srcdir)/doc/libtool.texi doc/manual.texi - $(TEXI2HTML) -I doc -monolithic -number -verbose doc/manual.texi - @mv doc/manual.html manual.html - @rm -f doc/manual.texi + @ln -s `cd $(srcdir) && pwd`/doc/$(PACKAGE).texinfo doc/$(PACKAGE).texi + @ln -s `cd $(srcdir) && pwd`/doc/version.texi doc/version.texi + @ln -s `pwd`/Fetchdir/gendocs.sh doc/gendocs.sh + @ln -s `pwd`/Fetchdir/gendocs_template doc/gendocs_template + @cd doc; \ + $(SHELL) ./gendocs.sh $(PACKAGE) "GNU $(PACKAGE) - GNU macro processor" + @rm -rf doc/$(PACKAGE).texi doc/version.texi doc/gendocs* manual + @mv -f doc/manual . + @echo " *** Upload the manual directory to web-cvs." diff -ruNp m4-1.4.3/NEWS m4-1.4.4/NEWS --- m4-1.4.3/NEWS 2005-03-31 12:30:56.000000000 +0100 +++ m4-1.4.4/NEWS 2005-10-20 10:49:18.000000000 +0100 @@ -1,6 +1,11 @@ GNU m4 NEWS - User visible changes. Copyright (C) 1992, 1993, 1994, 2004, 2005 Free Software Foundation, Inc. +Version 1.4.4 - October 2005, by Gary V. Vaughan + +* ./configure --infodir=/usr/share/info now works correctly. +* When any file named on the command line is missing exit with status 1. + Version 1.4.3 - March 2005, by Gary V. Vaughan * DESTDIR installs now work correctly. diff -ruNp m4-1.4.3/README m4-1.4.4/README --- m4-1.4.3/README 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/README 2005-10-18 12:19:41.000000000 +0100 @@ -25,7 +25,7 @@ By using `./configure --enable-changewor feature which allows for changing the syntax of what is a "word" in `m4'. This might go away, so don't count on it yet. -Send bug reports to `bug-gnu-utils@prep.ai.mit.edu'. A bug report is -an adequate description of the problem: your input, what you expected, -what you got, and why this is wrong. Diffs are welcome, but they only -describe a solution, from which the problem might be uneasy to infer. +Send bug reports to `bug-m4@gnu.org'. A bug report is an adequate +description of the problem: your input, what you expected, what you got, +and why this is wrong. Diffs are welcome, but they only describe a +solution, from which the problem might be uneasy to infer. diff -ruNp m4-1.4.3/checks/42.index m4-1.4.4/checks/42.index --- m4-1.4.3/checks/42.index 2005-03-31 12:17:04.000000000 +0100 +++ m4-1.4.4/checks/42.index 1970-01-01 01:00:00.000000000 +0100 @@ -1,5 +0,0 @@ -dnl ../doc/m4.texinfo:2445: Origin of test -index(`gnus, gnats, and armadillos', `nat') -dnl @result{}7 -index(`gnus, gnats, and armadillos', `dag') -dnl @result{}-1 diff -ruNp m4-1.4.3/checks/42.index_macro m4-1.4.4/checks/42.index_macro --- m4-1.4.3/checks/42.index_macro 1970-01-01 01:00:00.000000000 +0100 +++ m4-1.4.4/checks/42.index_macro 2005-05-01 12:25:36.000000000 +0100 @@ -0,0 +1,5 @@ +dnl ../doc/m4.texinfo:2445: Origin of test +index(`gnus, gnats, and armadillos', `nat') +dnl @result{}7 +index(`gnus, gnats, and armadillos', `dag') +dnl @result{}-1 diff -ruNp m4-1.4.3/checks/Makefile.in m4-1.4.4/checks/Makefile.in --- m4-1.4.3/checks/Makefile.in 2005-02-09 20:48:32.000000000 +0000 +++ m4-1.4.4/checks/Makefile.in 2005-05-01 12:31:53.000000000 +0100 @@ -1,19 +1,20 @@ -# Makefile for GNU m4 checks directory. -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## +## Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 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; See the file COPYING. if not, write to +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ diff -ruNp m4-1.4.3/configure m4-1.4.4/configure --- m4-1.4.3/configure 2005-03-31 12:31:41.000000000 +0100 +++ m4-1.4.4/configure 2005-10-20 10:54:58.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for GNU M4 1.4.3. +# Generated by GNU Autoconf 2.59 for GNU M4 1.4.4. # # Report bugs to . # @@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='GNU M4' PACKAGE_TARNAME='m4' -PACKAGE_VERSION='1.4.3' -PACKAGE_STRING='GNU M4 1.4.3' +PACKAGE_VERSION='1.4.4' +PACKAGE_STRING='GNU M4 1.4.4' PACKAGE_BUGREPORT='bug-m4@gnu.org' ac_unique_file="src/m4.h" @@ -780,7 +780,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU M4 1.4.3 to adapt to many kinds of systems. +\`configure' configures GNU M4 1.4.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -842,7 +842,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU M4 1.4.3:";; + short | recursive ) echo "Configuration of GNU M4 1.4.4:";; esac cat <<\_ACEOF @@ -965,7 +965,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -GNU M4 configure 1.4.3 +GNU M4 configure 1.4.4 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -979,7 +979,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU M4 $as_me 1.4.3, which was +It was created by GNU M4 $as_me 1.4.4, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -5321,9 +5321,10 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + # 2. Prepend LIBOBJDIR. When used with automake>1.9.5 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \$(LIBOBJDIR)$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \$(LIBOBJDIR)$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -5601,7 +5602,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by GNU M4 $as_me 1.4.3, which was +This file was extended by GNU M4 $as_me 1.4.4, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5661,7 +5662,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -GNU M4 config.status 1.4.3 +GNU M4 config.status 1.4.4 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff -ruNp m4-1.4.3/configure.ac m4-1.4.4/configure.ac --- m4-1.4.3/configure.ac 2005-03-31 12:26:01.000000000 +0100 +++ m4-1.4.4/configure.ac 2005-10-20 10:54:40.000000000 +0100 @@ -13,11 +13,11 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA -AC_INIT([GNU M4], [1.4.3], [bug-m4@gnu.org]) +AC_INIT([GNU M4], [1.4.4], [bug-m4@gnu.org]) PACKAGE=$PACKAGE_TARNAME; AC_SUBST(PACKAGE) VERSION=$PACKAGE_VERSION; AC_SUBST(VERSION) diff -ruNp m4-1.4.3/doc/Makefile.in m4-1.4.4/doc/Makefile.in --- m4-1.4.3/doc/Makefile.in 2005-03-31 10:44:50.000000000 +0100 +++ m4-1.4.4/doc/Makefile.in 2005-05-01 12:31:08.000000000 +0100 @@ -1,19 +1,21 @@ -# Makefile for GNU m4 documentation. -# Copyright (C) 1994, 2004, 2005 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## Makefile.in -- Makefile for GNU m4 documentation. +## +## Copyright (C) 1994, 2005 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 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; See the file COPYING. if not, write to +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ @@ -28,7 +30,7 @@ MAKEINFO = makeinfo TEXI2DVI = texi2dvi prefix = @prefix@ -infodir = $(prefix)/info +infodir = @infodir@ .SUFFIXES: diff -ruNp m4-1.4.3/doc/m4.info m4-1.4.4/doc/m4.info --- m4-1.4.3/doc/m4.info 2005-03-31 12:32:20.000000000 +0100 +++ m4-1.4.4/doc/m4.info 2005-10-20 11:01:14.000000000 +0100 @@ -1,11 +1,11 @@ -This is m4.info, produced by makeinfo version 4.7 from m4.texinfo. +This is m4.info, produced by makeinfo version 4.8 from m4.texinfo. INFO-DIR-SECTION GNU programming tools START-INFO-DIR-ENTRY * m4: (m4). A powerful macro processor. END-INFO-DIR-ENTRY - This file documents GNU M4 1.4.3. + This file documents GNU M4 1.4.4. Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005 Free Software Foundation, Inc. @@ -42,7 +42,7 @@ changes by Franc,ois Pinard and other vo names and email addresses can be found in the file `THANKS' from the GNU `m4' distribution. - This is release 1.4.3. It is now to be considered stable, future + This is release 1.4.4. It is now to be considered stable, future releases are only meant to fix bugs, increase speed, or improve documentation. However... @@ -152,7 +152,7 @@ Diverting and undiverting output Macros for text handling * Len:: Calculating length of strings -* Index:: Searching for substrings +* Index macro:: Searching for substrings * Regexp:: Searching for regular expressions * Substr:: Extracting substrings * Translit:: Translating characters @@ -2077,7 +2077,7 @@ ways, extracting substrings, searching, * Menu: * Len:: Calculating length of strings -* Index:: Searching for substrings +* Index macro:: Searching for substrings * Regexp:: Searching for regular expressions * Substr:: Extracting substrings * Translit:: Translating characters @@ -2085,7 +2085,7 @@ ways, extracting substrings, searching, * Format:: Formatting strings (printf-like)  -File: m4.info, Node: Len, Next: Index, Prev: Text handling, Up: Text handling +File: m4.info, Node: Len, Next: Index macro, Prev: Text handling, Up: Text handling 10.1 Calculating length of strings ================================== @@ -2104,7 +2104,7 @@ which expands to the length of STRING, a The builtin macro `len' is recognized only when given arguments.  -File: m4.info, Node: Index, Next: Regexp, Prev: Len, Up: Text handling +File: m4.info, Node: Index macro, Next: Regexp, Prev: Len, Up: Text handling 10.2 Searching for substrings ============================= @@ -2125,7 +2125,7 @@ not occur in STRING, `index' expands to The builtin macro `index' is recognized only when given arguments.  -File: m4.info, Node: Regexp, Next: Substr, Prev: Index, Up: Text handling +File: m4.info, Node: Regexp, Next: Substr, Prev: Index macro, Up: Text handling 10.3 Searching for regular expressions ====================================== @@ -3094,7 +3094,7 @@ characters removed in the index. * ifelse: Ifelse. (line 6) * include: Include. (line 6) * incr: Incr. (line 6) -* index: Index. (line 6) +* index: Index macro. (line 6) * indir: Indir. (line 6) * len: Len. (line 6) * line: Errprint. (line 26) @@ -3172,29 +3172,29 @@ Node: Divnum67552 Node: Cleardiv68102 Node: Text handling69143 Node: Len69866 -Node: Index70271 -Node: Regexp70863 -Node: Substr71961 -Node: Translit72588 -Node: Patsubst74038 -Node: Format76138 -Node: Arithmetic77634 -Node: Incr78082 -Node: Eval78593 -Node: UNIX commands81599 -Node: Syscmd82073 -Node: Esyscmd82794 -Node: Sysval83747 -Node: Maketemp84161 -Node: Miscellaneous84911 -Node: Errprint85283 -Node: M4exit86285 -Node: Frozen files87079 -Node: Compatibility92002 -Node: Extensions92623 -Node: Incompatibilities94986 -Node: Other Incompat95435 -Node: Concept index97605 -Node: Macro index107456 +Node: Index macro70277 +Node: Regexp70875 +Node: Substr71979 +Node: Translit72606 +Node: Patsubst74056 +Node: Format76156 +Node: Arithmetic77652 +Node: Incr78100 +Node: Eval78611 +Node: UNIX commands81617 +Node: Syscmd82091 +Node: Esyscmd82812 +Node: Sysval83765 +Node: Maketemp84179 +Node: Miscellaneous84929 +Node: Errprint85301 +Node: M4exit86303 +Node: Frozen files87097 +Node: Compatibility92020 +Node: Extensions92641 +Node: Incompatibilities95004 +Node: Other Incompat95453 +Node: Concept index97623 +Node: Macro index107474  End Tag Table diff -ruNp m4-1.4.3/doc/m4.texinfo m4-1.4.4/doc/m4.texinfo --- m4-1.4.3/doc/m4.texinfo 2005-03-31 12:17:00.000000000 +0100 +++ m4-1.4.4/doc/m4.texinfo 2005-05-01 12:25:36.000000000 +0100 @@ -208,7 +208,7 @@ Diverting and undiverting output Macros for text handling * Len:: Calculating length of strings -* Index:: Searching for substrings +* Index macro:: Searching for substrings * Regexp:: Searching for regular expressions * Substr:: Extracting substrings * Translit:: Translating characters @@ -2392,7 +2392,7 @@ various ways, extracting substrings, sea @menu * Len:: Calculating length of strings -* Index:: Searching for substrings +* Index macro:: Searching for substrings * Regexp:: Searching for regular expressions * Substr:: Extracting substrings * Translit:: Translating characters @@ -2400,7 +2400,7 @@ various ways, extracting substrings, sea * Format:: Formatting strings (printf-like) @end menu -@node Len, Index, Text handling, Text handling +@node Len, Index macro, Text handling, Text handling @section Calculating length of strings @cindex length of strings @@ -2425,7 +2425,7 @@ len(`abcdef') The builtin macro @code{len} is recognized only when given arguments. -@node Index, Regexp, Len, Text handling +@node Index macro, Regexp, Len, Text handling @section Searching for substrings @findex index @@ -2451,7 +2451,7 @@ index(`gnus, gnats, and armadillos', `da The builtin macro @code{index} is recognized only when given arguments. -@node Regexp, Substr, Index, Text handling +@node Regexp, Substr, Index macro, Text handling @section Searching for regular expressions @cindex regular expressions diff -ruNp m4-1.4.3/doc/stamp-vti m4-1.4.4/doc/stamp-vti --- m4-1.4.3/doc/stamp-vti 2005-03-31 12:31:58.000000000 +0100 +++ m4-1.4.4/doc/stamp-vti 2005-10-20 10:55:13.000000000 +0100 @@ -1 +1 @@ -Thu Mar 31 12:31:58 BST 2005 +Thu Oct 20 10:55:13 BST 2005 diff -ruNp m4-1.4.3/doc/texinfo.tex m4-1.4.4/doc/texinfo.tex --- m4-1.4.3/doc/texinfo.tex 2005-03-31 12:41:03.000000000 +0100 +++ m4-1.4.4/doc/texinfo.tex 2005-10-20 10:51:04.000000000 +0100 @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2005-03-21.17} +\def\texinfoversion{2005-10-10.17} % % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software @@ -21,8 +21,8 @@ % % You should have received a copy of the GNU General Public License % along with this texinfo.tex file; see the file COPYING. If not, write -% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -% Boston, MA 02111-1307, USA. +% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +% Boston, MA 02110-1301, USA. % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without @@ -153,27 +153,9 @@ \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi -% In some macros, we cannot use the `\? notation---the left quote is -% in some cases the escape char. -\chardef\backChar = `\\ -\chardef\colonChar = `\: -\chardef\commaChar = `\, -\chardef\dotChar = `\. -\chardef\exclamChar= `\! -\chardef\plusChar = `\+ -\chardef\questChar = `\? -\chardef\semiChar = `\; -\chardef\underChar = `\_ - -\chardef\spaceChar = `\ % +% Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 -\def\spaceisspace{\catcode\spaceChar=\spacecat} - -{% for help with debugging. - % example usage: \expandafter\show\activebackslash - \catcode`\! = 0 \catcode`\\ = \active - !global!def!activebackslash{\} -} +\def\spaceisspace{\catcode`\ =\spacecat} % Ignore a token. % @@ -310,10 +292,7 @@ % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % - \escapechar = `\\ % use backslash in output files. \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi @@ -364,7 +343,7 @@ \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox - }% end of group with \normalturnoffactive + }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } @@ -655,13 +634,13 @@ \let\/=\allowbreak % @. is an end-of-sentence period. -\def\.{.\spacefactor=\endofsentencespacefactor} +\def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. -\def\!{!\spacefactor=\endofsentencespacefactor} +\def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. -\def\?{?\spacefactor=\endofsentencespacefactor} +\def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % @@ -1054,9 +1033,9 @@ where each line of input produces a line % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { - \catcode\underChar = \active + \catcode`\_ = \active \gdef\mathunderscore{% - \catcode\underChar=\active + \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } @@ -1200,21 +1179,20 @@ where each line of input produces a line \fi \fi -% PDF uses PostScript string constants for the names of xref targets, to +% PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html % (and related messages, the final outcome is that it is up to the TeX % user to double the backslashes and otherwise make the string valid, so -% that's we do). +% that's what we do). % double active backslashes. % {\catcode`\@=0 \catcode`\\=\active - @gdef@activebackslash{@catcode`@\=@active @otherbackslash} @gdef@activebackslashdouble{% - @catcode@backChar=@active + @catcode`@\=@active @let\=@doublebackslash} } @@ -1246,13 +1224,8 @@ where each line of input produces a line \def\backslashparens#1{% \xdef#1{#1}% redefine it as its expansion; the definition is simply % \lastnode when called from \setref -> \pdfmkdest. - \HyPsdSubst{(}{\backslashlparen}{#1}% - \HyPsdSubst{)}{\backslashrparen}{#1}% -} - -{\catcode\exclamChar = 0 \catcode\backChar = \other - !gdef!backslashlparen{\(}% - !gdef!backslashrparen{\)}% + \HyPsdSubst{(}{\realbackslash(}{#1}% + \HyPsdSubst{)}{\realbackslash)}{#1}% } \ifpdf @@ -1282,7 +1255,6 @@ where each line of input produces a line % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \atdummies - \turnoffactive \activebackslashdouble \def\pdfdestname{#1}% \backslashparens\pdfdestname @@ -1394,7 +1366,7 @@ where each line of input produces a line % now, I guess we'll just let the pdf reader have its way. \indexnofonts \setupdatafile - \activebackslash + \catcode`\\=\active \otherbackslash \input \jobname.toc \endgroup } @@ -1814,6 +1786,13 @@ where each line of input produces a line % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % +\chardef\colonChar = `\: +\chardef\commaChar = `\, +\chardef\dotChar = `\. +\chardef\exclamChar= `\! +\chardef\questChar = `\? +\chardef\semiChar = `\; +% \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m @@ -1924,14 +1903,14 @@ where each line of input produces a line \def\keywordfalse{false} \parseargdef\allowcodebreaks{% - \def\arg{#1}% - \ifx\arg\keywordtrue + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue \allowcodebreakstrue - \else\ifx\arg\keywordfalse + \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple - \errmessage{Unknown @allowcodebreaks option `\arg'}% + \errmessage{Unknown @allowcodebreaks option `\txiarg'}% \fi\fi } @@ -1942,16 +1921,16 @@ where each line of input produces a line % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% - \def\arg{#1}% - \ifx\arg\worddistinct + \def\txiarg{#1}% + \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\arg\wordexample + \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\arg\wordcode + \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple - \errmessage{Unknown @kbdinputstyle option `\arg'}% + \errmessage{Unknown @kbdinputstyle option `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} @@ -3222,6 +3201,7 @@ where each line of input produces a line % we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% + \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % Need these in case \tex is in effect and \{ is a \delimiter again. @@ -3230,27 +3210,6 @@ where each line of input produces a line \let\{ = \mylbrace \let\} = \myrbrace % - % \definedummyword defines \#1 as \realbackslash #1\space, thus - % effectively preventing its expansion. This is used only for control - % words, not control letters, because the \space would be incorrect - % for control characters, but is needed to separate the control word - % from whatever follows. - % - % For control letters, we have \definedummyletter, which omits the - % space. - % - % These can be used both for control words that take an argument and - % those that do not. If it is followed by {arg} in the input, then - % that will dutifully get written to the index (or wherever). - % - \def\definedummyword##1{% - \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}% - }% - \def\definedummyletter##1{% - \expandafter\def\csname ##1\endcsname{\realbackslash ##1}% - }% - \let\definedummyaccent\definedummyletter - % % Do the redefinitions. \commondummies } @@ -3266,147 +3225,151 @@ where each line of input produces a line \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % - % (See comments in \indexdummies.) - \def\definedummyword##1{% - \expandafter\def\csname ##1\endcsname{@##1\space}% - }% - \def\definedummyletter##1{% - \expandafter\def\csname ##1\endcsname{@##1}% - }% - \let\definedummyaccent\definedummyletter - % % Do the redefinitions. \commondummies + \otherbackslash } -% Called from \indexdummies and \atdummies. \definedummyword and -% \definedummyletter must be defined first. +% Called from \indexdummies and \atdummies. % \def\commondummies{% % - \normalturnoffactive + % \definedummyword defines \#1 as \string\#1\space, thus effectively + % preventing its expansion. This is used only for control% words, + % not control letters, because the \space would be incorrect for + % control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword ##1{\def##1{\string##1\space}}% + \def\definedummyletter##1{\def##1{\string##1}}% + \let\definedummyaccent\definedummyletter % \commondummiesnofonts % - \definedummyletter{_}% + \definedummyletter\_% % % Non-English letters. - \definedummyword{AA}% - \definedummyword{AE}% - \definedummyword{L}% - \definedummyword{OE}% - \definedummyword{O}% - \definedummyword{aa}% - \definedummyword{ae}% - \definedummyword{l}% - \definedummyword{oe}% - \definedummyword{o}% - \definedummyword{ss}% - \definedummyword{exclamdown}% - \definedummyword{questiondown}% - \definedummyword{ordf}% - \definedummyword{ordm}% + \definedummyword\AA + \definedummyword\AE + \definedummyword\L + \definedummyword\OE + \definedummyword\O + \definedummyword\aa + \definedummyword\ae + \definedummyword\l + \definedummyword\oe + \definedummyword\o + \definedummyword\ss + \definedummyword\exclamdown + \definedummyword\questiondown + \definedummyword\ordf + \definedummyword\ordm % % Although these internal commands shouldn't show up, sometimes they do. - \definedummyword{bf}% - \definedummyword{gtr}% - \definedummyword{hat}% - \definedummyword{less}% - \definedummyword{sf}% - \definedummyword{sl}% - \definedummyword{tclose}% - \definedummyword{tt}% + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt % - \definedummyword{LaTeX}% - \definedummyword{TeX}% + \definedummyword\LaTeX + \definedummyword\TeX % % Assorted special characters. - \definedummyword{bullet}% - \definedummyword{comma}% - \definedummyword{copyright}% - \definedummyword{registeredsymbol}% - \definedummyword{dots}% - \definedummyword{enddots}% - \definedummyword{equiv}% - \definedummyword{error}% - \definedummyword{euro}% - \definedummyword{expansion}% - \definedummyword{minus}% - \definedummyword{pounds}% - \definedummyword{point}% - \definedummyword{print}% - \definedummyword{result}% + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\minus + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\result + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + % + \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable - % - % Normal spaces, not active ones. - \unsepspaces - % - % No macro expansion. - \turnoffmacros } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % -% Better have this without active chars. -{ - \catcode`\~=\other - \gdef\commondummiesnofonts{% - % Control letters and accents. - \definedummyletter{!}% - \definedummyaccent{"}% - \definedummyaccent{'}% - \definedummyletter{*}% - \definedummyaccent{,}% - \definedummyletter{.}% - \definedummyletter{/}% - \definedummyletter{:}% - \definedummyaccent{=}% - \definedummyletter{?}% - \definedummyaccent{^}% - \definedummyaccent{`}% - \definedummyaccent{~}% - \definedummyword{u}% - \definedummyword{v}% - \definedummyword{H}% - \definedummyword{dotaccent}% - \definedummyword{ringaccent}% - \definedummyword{tieaccent}% - \definedummyword{ubaraccent}% - \definedummyword{udotaccent}% - \definedummyword{dotless}% - % - % Texinfo font commands. - \definedummyword{b}% - \definedummyword{i}% - \definedummyword{r}% - \definedummyword{sc}% - \definedummyword{t}% - % - % Commands that take arguments. - \definedummyword{acronym}% - \definedummyword{cite}% - \definedummyword{code}% - \definedummyword{command}% - \definedummyword{dfn}% - \definedummyword{emph}% - \definedummyword{env}% - \definedummyword{file}% - \definedummyword{kbd}% - \definedummyword{key}% - \definedummyword{math}% - \definedummyword{option}% - \definedummyword{samp}% - \definedummyword{strong}% - \definedummyword{tie}% - \definedummyword{uref}% - \definedummyword{url}% - \definedummyword{var}% - \definedummyword{verb}% - \definedummyword{w}% - } +\def\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter\!% + \definedummyaccent\"% + \definedummyaccent\'% + \definedummyletter\*% + \definedummyaccent\,% + \definedummyletter\.% + \definedummyletter\/% + \definedummyletter\:% + \definedummyaccent\=% + \definedummyletter\?% + \definedummyaccent\^% + \definedummyaccent\`% + \definedummyaccent\~% + \definedummyword\u + \definedummyword\v + \definedummyword\H + \definedummyword\dotaccent + \definedummyword\ringaccent + \definedummyword\tieaccent + \definedummyword\ubaraccent + \definedummyword\udotaccent + \definedummyword\dotless + % + % Texinfo font commands. + \definedummyword\b + \definedummyword\i + \definedummyword\r + \definedummyword\sc + \definedummyword\t + % + % Commands that take arguments. + \definedummyword\acronym + \definedummyword\cite + \definedummyword\code + \definedummyword\command + \definedummyword\dfn + \definedummyword\emph + \definedummyword\env + \definedummyword\file + \definedummyword\kbd + \definedummyword\key + \definedummyword\math + \definedummyword\option + \definedummyword\pxref + \definedummyword\ref + \definedummyword\samp + \definedummyword\strong + \definedummyword\tie + \definedummyword\uref + \definedummyword\url + \definedummyword\var + \definedummyword\verb + \definedummyword\w + \definedummyword\xref } % \indexnofonts is used when outputting the strings to sort the index @@ -3416,13 +3379,9 @@ where each line of input produces a line % \def\indexnofonts{% % Accent commands should become @asis. - \def\definedummyaccent##1{% - \expandafter\let\csname ##1\endcsname\asis - }% + \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. - \def\definedummyletter##1{% - \expandafter\def\csname ##1\endcsname{}% - }% + \def\definedummyletter##1{\let##1\empty}% % Hopefully, all control words can become @asis. \let\definedummyword\definedummyaccent % @@ -3476,8 +3435,17 @@ where each line of input produces a line \def\print{-|}% \def\result{=>}% % - % Don't write macro names. - \emptyusermacros + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist } \let\indexbackslash=0 %overridden during \printindex. @@ -3524,7 +3492,6 @@ where each line of input produces a line % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage - \escapechar=`\\ \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % @@ -4584,7 +4551,7 @@ where each line of input produces a line \fi % \iflinks - {\atdummies \turnoffactive + {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp @@ -4934,7 +4901,8 @@ where each line of input produces a line \let\afterenvbreak = \aboveenvbreak -% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around @@ -4971,7 +4939,7 @@ where each line of input produces a line % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment + \let\nonarrowing = t% \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop @@ -5011,11 +4979,11 @@ where each line of input produces a line \parskip = 0pt \parindent = 0pt \emergencystretch = 0pt % don't try to avoid overfull boxes - % @cartouche defines \nonarrowing to inhibit narrowing - % at next level down. \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } @@ -5115,6 +5083,7 @@ where each line of input produces a line \advance\leftskip by \lispnarrowing \advance\rightskip by \lispnarrowing \exdentamount = \lispnarrowing + \else \let\nonarrowing = \relax \fi \parsearg\quotationlabel @@ -5207,8 +5176,8 @@ where each line of input produces a line } \endgroup \def\setupverbatim{% + \let\nonarrowing = t% \nonfillstart - \advance\leftskip by -\defbodyindent % Easiest (and conventionally used) font for verbatim \tt \def\par{\leavevmode\egroup\box0\endgraf}% @@ -5678,8 +5647,19 @@ where each line of input produces a line \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? -\def\macrolist{} % List of all defined macros in the form - % \do\macro1\do\macro2... + +% List of all defined macros in the form +% \definedummyword\macro1\definedummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\definedummyword#1}% + \xdef\macrolist{\the\toks0}% +} % Utility routines. % This does \let #1 = #2, with \csnames; that is, @@ -5777,10 +5757,7 @@ where each line of input produces a line \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% - % Add the macroname to \macrolist - \toks0 = \expandafter{\macrolist\do}% - \xdef\macrolist{\the\toks0 - \expandafter\noexpand\csname\the\macname\endcsname}% + \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody @@ -5794,7 +5771,7 @@ where each line of input produces a line % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax - \let\do\unmacrodo + \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else @@ -5806,10 +5783,10 @@ where each line of input produces a line % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% - \ifx#1\relax + \ifx #1\relax % remove this \else - \noexpand\do \noexpand #1% + \noexpand\definedummyword \noexpand#1% \fi } @@ -5928,25 +5905,6 @@ where each line of input produces a line \expandafter\parsearg \fi \next} -% We want to disable all macros during \shipout so that they are not -% expanded by \write. -\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% - \edef\next{\macrolist}\expandafter\endgroup\next} - -% For \indexnofonts, we need to get rid of all macros, leaving only the -% arguments (if present). Of course this is not nearly correct, but it -% is the best we can do for now. makeinfo does not expand macros in the -% argument to @deffn, which ends up writing an index entry, and texindex -% isn't prepared for an index sort entry that starts with \. -% -% Since macro invocations are followed by braces, we can just redefine them -% to take a single TeX argument. The case of a macro invocation that -% goes to end-of-line is not handled. -% -\def\emptyusermacros{\begingroup - \def\do##1{\let\noexpand##1=\noexpand\asis}% - \edef\next{\macrolist}\expandafter\endgroup\next} - % @alias. % We need some trickery to remove the optional spaces around the equal @@ -5956,6 +5914,7 @@ where each line of input produces a line \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next @@ -6025,7 +5984,6 @@ where each line of input produces a line \iflinks {% \atdummies % preserve commands, but don't expand them - \turnoffactive \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef @@ -6110,7 +6068,7 @@ where each line of input produces a line % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd0 = 0pt - \refx{#1-snt}% + \refx{#1-snt}{}% \else \printedrefname \fi @@ -6693,7 +6651,8 @@ where each line of input produces a line % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% - \atdummies \turnoffactive + \atdummies + % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. @@ -6714,8 +6673,9 @@ where each line of input produces a line % % place the captured inserts % - % BEWARE: when the floats start float, we have to issue warning whenever an - % insert appears inside a float which could possibly float. --kasal, 26may04 + % BEWARE: when the floats start floating, we have to issue warning + % whenever an insert appears inside a float which could possibly + % float. --kasal, 26may04 % \checkinserts } @@ -6883,9 +6843,9 @@ should work if nowhere else does.} \fi } -% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; -% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8) -% physical page width. +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. @@ -6932,7 +6892,7 @@ should work if nowhere else does.} {11in}{8.5in}% }} -% Use @smallbook to reset parameters for 7x9.5 (or so) format. +% Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt @@ -6949,6 +6909,24 @@ should work if nowhere else does.} \defbodyindent = .5cm }} +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt @@ -7124,6 +7102,29 @@ should work if nowhere else does.} % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} +% Same as @turnoffactive below, but backslash retains it's normal definition. +% (Before 2005-08-15, this macro explicitly assigned @let\=@normalbackslash, +% but it doesn't seem to be necessary. --kasal) +\def\normalturnoffactive{% + \let"=\normaldoublequote + \let~=\normaltilde + \let^=\normalcaret + \let_=\normalunderscore + \let|=\normalverticalbar + \let<=\normalless + \let>=\normalgreater + \let+=\normalplus + \let$=\normaldollar %$ font-lock fix + \unsepspaces +} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, @@ -7131,44 +7132,22 @@ should work if nowhere else does.} \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work -% \rawbackslash defines an active \ to do \backslashcurfont. -% \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. -{\catcode`\\=\active - @gdef@rawbackslash{@let\=@backslashcurfont} - @gdef@otherbackslash{@let\=@realbackslash} -} - % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} -% \normalbackslash outputs one backslash in fixed width font. -\def\normalbackslash{{\tt\backslashcurfont}} - +% In texinfo, backslash is an active character; it prints the backslash +% in fixed width font. \catcode`\\=\active +@def@normalbackslash{{@tt@backslashcurfont}} +% On startup, @fixbackslash assigns: +% @let \ = @normalbackslash -% Used sometimes to turn off (effectively) the active characters -% even after parsing them. -@def@turnoffactive{% - @let"=@normaldoublequote - @let\=@realbackslash - @let~=@normaltilde - @let^=@normalcaret - @let_=@normalunderscore - @let|=@normalverticalbar - @let<=@normalless - @let>=@normalgreater - @let+=@normalplus - @let$=@normaldollar %$ font-lock fix - @unsepspaces -} - -% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'. (Thus, \ is not expandable when this is in -% effect.) -% -@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash} +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @@ -7182,7 +7161,7 @@ should work if nowhere else does.} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then -% the first `\{ in the file would cause an error. This macro tries to fix +% the first `\' in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. diff -ruNp m4-1.4.3/doc/version.texi m4-1.4.4/doc/version.texi --- m4-1.4.3/doc/version.texi 2005-03-31 12:31:58.000000000 +0100 +++ m4-1.4.4/doc/version.texi 2005-10-20 10:55:13.000000000 +0100 @@ -1,3 +1,3 @@ -@set EDITION 1.4.3 -@set UPDATED March 2005 -@set VERSION 1.4.3 +@set EDITION 1.4.4 +@set UPDATED October 2005 +@set VERSION 1.4.4 diff -ruNp m4-1.4.3/examples/Makefile.in m4-1.4.4/examples/Makefile.in --- m4-1.4.3/examples/Makefile.in 2005-02-09 20:48:33.000000000 +0000 +++ m4-1.4.4/examples/Makefile.in 2005-05-01 12:30:43.000000000 +0100 @@ -1,19 +1,21 @@ -# Makefile for GNU m4 examples. -# Copyright (C) 1994, 2005 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## Makefile.in -- Makefile for GNU m4 examples. +## +## Copyright (C) 1994, 2005 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 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; See the file COPYING. if not, write to +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ diff -ruNp m4-1.4.3/install-sh m4-1.4.4/install-sh --- m4-1.4.3/install-sh 2005-03-31 12:41:03.000000000 +0100 +++ m4-1.4.4/install-sh 2005-10-20 10:51:03.000000000 +0100 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2005-02-02.21 +scriptversion=2005-09-13.16 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -58,7 +58,21 @@ stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" -chmodcmd="$chmodprog 0755" +posix_glob= +posix_mkdir= + +# Symbolic mode for testing mkdir with directories. +# It is the same as 755, but also tests that "u+" works. +test_mode=u=rwx,g=rx,o=rx,u+wx + +# Desired mode of installed file. +mode=0755 + +# Desired mode of newly created intermediate directories. +# It is empty if not known yet. +intermediate_mode= + +chmodcmd=$chmodprog chowncmd= chgrpcmd= stripcmd= @@ -111,7 +125,7 @@ while test -n "$1"; do --help) echo "$usage"; exit $?;; - -m) chmodcmd="$chmodprog $2" + -m) mode=$2 shift shift continue;; @@ -164,6 +178,8 @@ if test -z "$1"; then exit 0 fi +test -n "$dir_arg" || trap '(exit $?); exit' 1 2 13 15 + for src do # Protect names starting with `-'. @@ -173,15 +189,11 @@ do if test -n "$dir_arg"; then dst=$src - src= - - if test -d "$dst"; then - mkdircmd=: - chmodcmd= - else - mkdircmd=$mkdirprog - fi + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. @@ -208,53 +220,122 @@ do echo "$0: $dstarg: Is a directory" >&2 exit 1 fi - dst=$dst/`basename "$src"` + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? fi fi - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + obsolete_mkdir_used=false - # Make sure that the destination directory exists. + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + posix_mkdir=false + if $mkdirprog -m $test_mode -p -- / >/dev/null 2>&1; then + posix_mkdir=true + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./-m "$test_mode" ./-p ./-- 2>/dev/null + fi ;; + esac - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - shift - IFS=$oIFS + if + $posix_mkdir && { - pathcomp= + # With -d, create the new directory with the user-specified mode. + # Otherwise, create it using the same intermediate mode that + # mkdir -p would use when creating intermediate directories. + # POSIX says that this mode is "$(umask -S),u+wx", so use that + # if umask -S works. + + if test -n "$dir_arg"; then + mkdir_mode=$mode + else + case $intermediate_mode in + '') + if umask_S=`(umask -S) 2>/dev/null`; then + intermediate_mode=$umask_S,u+wx + else + intermediate_mode=$test_mode + fi ;; + esac + mkdir_mode=$intermediate_mode + fi + + $mkdirprog -m "$mkdir_mode" -p -- "$dstdir" + } + then : + else - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 + # mkdir does not conform to POSIX, or it failed possibly due to + # a race condition. Create the directory the slow way, step by + # step, checking for races as we go. + + case $dstdir in + /*) pathcomp=/ ;; + -*) pathcomp=./ ;; + *) pathcomp= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test -d "$pathcomp" || exit - fi - pathcomp=$pathcomp/ - done + $posix_glob && set +f + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # Don't fail if two instances are running concurrently. + test -d "$pathcomp" || exit 1 + fi + pathcomp=$pathcomp/ + done + obsolete_mkdir_used=true + fi fi if test -n "$dir_arg"; then - $doit $mkdircmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dst"; } || exit 1 else - dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ @@ -262,7 +343,6 @@ do # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && @@ -276,10 +356,10 @@ do { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + && { test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dsttmp"; } && # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not @@ -291,11 +371,12 @@ do # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } else @@ -304,16 +385,13 @@ do } && # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + $doit $mvcmd "$dsttmp" "$dst" } - } - fi || { (exit 1); exit 1; } -done + } || exit 1 -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit 0 -} + trap - 0 + fi +done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff -ruNp m4-1.4.3/lib/COPYING.LIB m4-1.4.4/lib/COPYING.LIB --- m4-1.4.3/lib/COPYING.LIB 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/COPYING.LIB 2005-05-01 12:49:21.000000000 +0100 @@ -1,112 +1,128 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - Copyright (C) 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, 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 -this service 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. + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +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 this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. +^L + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. +^L + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs @@ -123,7 +139,8 @@ included without limitation in the term "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation +interface definition files, plus the scripts used to control +compilation and installation of the library. Activities other than copying, distribution and modification are not @@ -203,7 +220,7 @@ instead of to this License. (If a newer ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - +^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -254,8 +271,8 @@ Library will still fall under Section 6. distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or +^L + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit @@ -282,23 +299,31 @@ of these things: Library will not necessarily be able to recompile the application to use the modified definitions.) - b) Accompany the work with a written offer, valid for at + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - c) If distribution of the work is made by offering access to copy + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - d) Verify that the user has already received a copy of these + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. @@ -308,7 +333,7 @@ restrictions of other proprietary librar accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - +^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -347,9 +372,9 @@ Library), the recipient automatically re original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to +You are not responsible for enforcing compliance by third parties with this License. - +^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -363,9 +388,10 @@ all those who receive copies directly or the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any @@ -383,14 +409,14 @@ be a consequence of the rest of this Lic 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. +versions of the Lesser 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. @@ -401,7 +427,7 @@ conditions either of that version or of the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - +^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -411,7 +437,7 @@ decision will be guided by the two goals of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. @@ -434,48 +460,56 @@ FAILURE OF THE LIBRARY TO OPERATE WITH A SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries + END OF TERMS AND CONDITIONS +^L + How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey 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 library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Also add information on how to contact you by electronic and paper mail. +Also add information on how to contact you by electronic and paper +mail. -You should also get your employer (if you work as a programmer) or your +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. + library `Frob' (a library for tweaking knobs) written by James +Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! + + diff -ruNp m4-1.4.3/lib/Makefile.in m4-1.4.4/lib/Makefile.in --- m4-1.4.3/lib/Makefile.in 2005-02-09 20:48:35.000000000 +0000 +++ m4-1.4.4/lib/Makefile.in 2005-05-01 12:34:09.000000000 +0100 @@ -1,19 +1,21 @@ -# Makefile for GNU m4 library. -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## Makefile.in -- Makefile for GNU m4 library. +## +## Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 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; See the file COPYING. if not, write to +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ diff -ruNp m4-1.4.3/lib/TAGS m4-1.4.4/lib/TAGS --- m4-1.4.3/lib/TAGS 2005-03-31 12:43:27.000000000 +0100 +++ m4-1.4.4/lib/TAGS 2005-10-20 10:45:24.000000000 +0100 @@ -1,447 +1,447 @@ getopt.h,154 -#define _GETOPT_H 19,797 -struct optionoption77,2872 -#define no_argument 93,3221 -#define required_argument 94,3244 -#define optional_argument 95,3272 - -obstack.h,2572 -#define __OBSTACK_H__104,4711 -#define __PTR_TO_INT(__PTR_TO_INT111,4940 -#define __INT_TO_PTR(__INT_TO_PTR115,5011 -#define __need_ptrdiff_t128,5562 -#define PTR_INT_TYPE 136,5665 -#define PTR_INT_TYPE 138,5702 -struct _obstack_chunk _obstack_chunk141,5736 -struct obstack obstack148,5964 -#define obstack_base(obstack_base231,9354 -#define obstack_chunk_size(obstack_chunk_size235,9467 -#define obstack_next_free(obstack_next_free239,9581 -#define obstack_alignment_mask(obstack_alignment_mask243,9731 -#define obstack_init(obstack_init245,9788 -#define obstack_begin(obstack_begin249,9920 -#define obstack_specify_allocation(obstack_specify_allocation253,10064 -#define obstack_specify_allocation_with_arg(obstack_specify_allocation_with_arg257,10245 -#define obstack_chunkfun(obstack_chunkfun261,10449 -#define obstack_freefun(obstack_freefun264,10560 -#define obstack_1grow_fast(obstack_1grow_fast267,10649 -#define obstack_blank_fast(obstack_blank_fast269,10716 -#define __extension__276,11029 -#define obstack_object_size(obstack_object_size284,11261 -#define obstack_room(obstack_room290,11466 -#define obstack_grow(obstack_grow295,11629 -#define obstack_grow0(obstack_grow0308,12048 -#define obstack_1grow(obstack_1grow322,12521 -#define obstack_ptr_grow(obstack_ptr_grow335,12987 -#define obstack_int_grow(obstack_int_grow344,13321 -#define obstack_ptr_grow_fast(obstack_ptr_grow_fast353,13645 -#define obstack_int_grow_fast(obstack_int_grow_fast354,13729 -#define obstack_blank(obstack_blank356,13809 -#define obstack_alloc(obstack_alloc366,14135 -#define obstack_copy(obstack_copy372,14313 -#define obstack_copy0(obstack_copy0378,14502 -#define obstack_finish(obstack_finish386,14791 -#define obstack_free(obstack_free407,15522 -#define obstack_object_size(obstack_object_size417,15871 -#define obstack_room(obstack_room420,15977 -#define obstack_grow(obstack_grow429,16313 -#define obstack_grow0(obstack_grow0437,16626 -#define obstack_1grow(obstack_1grow446,16982 -#define obstack_ptr_grow(obstack_ptr_grow452,17186 -#define obstack_int_grow(obstack_int_grow458,17467 -#define obstack_ptr_grow_fast(obstack_ptr_grow_fast464,17733 -#define obstack_int_grow_fast(obstack_int_grow_fast465,17817 -#define obstack_blank(obstack_blank467,17897 -#define obstack_alloc(obstack_alloc474,18147 -#define obstack_copy(obstack_copy477,18242 -#define obstack_copy0(obstack_copy0480,18349 -#define obstack_finish(obstack_finish483,18458 -#define obstack_free(obstack_free499,19081 -#define obstack_free(obstack_free506,19418 - -regex.h,2324 -#define __REGEXP_LIBRARY_H__21,890 -typedef unsigned reg_syntax_t;reg_syntax_t38,1495 -#define RE_BACKSLASH_ESCAPE_IN_LISTS 42,1662 -#define RE_BK_PLUS_QM 47,1863 -#define RE_CHAR_CLASSES 53,2192 -#define RE_CONTEXT_INDEP_ANCHORS 67,2928 -#define RE_CONTEXT_INDEP_OPS 75,3355 -#define RE_CONTEXT_INVALID_OPS 79,3555 -#define RE_DOT_NEWLINE 83,3698 -#define RE_DOT_NOT_NULL 87,3834 -#define RE_HAT_LISTS_NOT_NEWLINE 91,3979 -#define RE_INTERVALS 96,4190 -#define RE_LIMITED_OPS 100,4339 -#define RE_NEWLINE_ALT 104,4481 -#define RE_NO_BK_BRACES 109,4671 -#define RE_NO_BK_PARENS 113,4862 -#define RE_NO_BK_REFS 117,5018 -#define RE_NO_BK_VBAR 121,5215 -#define RE_NO_EMPTY_RANGES 127,5509 -#define RE_UNMATCHED_RIGHT_PAREN_ORD 131,5665 -#define RE_SYNTAX_EMACS 143,6207 -#define RE_SYNTAX_AWK 145,6234 -#define RE_SYNTAX_POSIX_AWK 151,6465 -#define RE_SYNTAX_GREP 154,6562 -#define RE_SYNTAX_EGREP 159,6718 -#define RE_SYNTAX_POSIX_EGREP 165,6934 -#define RE_SYNTAX_ED 169,7079 -#define RE_SYNTAX_SED 171,7123 -#define _RE_SYNTAX_POSIX_COMMON 174,7241 -#define RE_SYNTAX_POSIX_BASIC 178,7384 -#define RE_SYNTAX_POSIX_MINIMAL_BASIC 184,7677 -#define RE_SYNTAX_POSIX_EXTENDED 187,7767 -#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 195,8129 -#define RE_DUP_MAX 208,8641 -#define REG_EXTENDED 215,8871 -#define REG_ICASE 219,8995 -#define REG_NEWLINE 224,9180 -#define REG_NOSUB 228,9358 -#define REG_NOTBOL 238,9724 -#define REG_NOTEOL 241,9798 - REG_NOERROR 248,9948 - REG_NOMATCH,249,9983 - REG_BADPAT,253,10130 - REG_ECOLLATE,254,10169 - REG_ECTYPE,255,10210 - REG_EESCAPE,256,10262 - REG_ESUBREG,257,10305 - REG_EBRACK,258,10352 - REG_EPAREN,259,10398 - REG_EBRACE,260,10444 - REG_BADBR,261,10480 - REG_ERANGE,262,10527 - REG_ESPACE,263,10568 - REG_BADRPT,264,10609 - REG_EEND,267,10701 - REG_ESIZE,268,10736 - REG_ERPAREN 269,10798 -} reg_errcode_t;reg_errcode_t270,10866 -struct re_pattern_bufferre_pattern_buffer278,11202 -#define REGS_UNALLOCATED 320,12813 -#define REGS_REALLOCATE 321,12840 -#define REGS_FIXED 322,12866 -typedef struct re_pattern_buffer regex_t;regex_t346,13548 -typedef int regoff_t;regoff_t349,13662 -struct re_registersre_registers354,13818 -#define RE_NREGS 366,14108 -} regmatch_t;regmatch_t377,14482 -#define _RE_ARGS(_RE_ARGS389,14829 -#define _RE_ARGS(_RE_ARGS393,14884 - -regex.c,8725 -#define _GNU_SOURCE27,1040 -#define bcmp(bcmp63,1782 -#define bcopy(bcopy66,1852 -#define bzero(bzero69,1919 -#define Sword 81,2169 -#define CHAR_SET_SIZE 91,2324 -static char re_syntax_table[93,2351 -init_syntax_once 96,2408 -#define SYNTAX(SYNTAX122,2833 -#define ISASCII(ISASCII144,3665 -#define ISASCII(ISASCII146,3692 -#define ISBLANK(ISBLANK150,3745 -#define ISBLANK(ISBLANK152,3799 -#define ISGRAPH(ISGRAPH155,3868 -#define ISGRAPH(ISGRAPH157,3922 -#define ISPRINT(ISPRINT160,3994 -#define ISDIGIT(ISDIGIT161,4042 -#define ISALNUM(ISALNUM162,4090 -#define ISALPHA(ISALPHA163,4138 -#define ISCNTRL(ISCNTRL164,4186 -#define ISLOWER(ISLOWER165,4234 -#define ISPUNCT(ISPUNCT166,4282 -#define ISSPACE(ISSPACE167,4330 -#define ISUPPER(ISUPPER168,4378 -#define ISXDIGIT(ISXDIGIT169,4426 -#define NULL 172,4490 -#define SIGN_EXTEND_CHAR(SIGN_EXTEND_CHAR181,4792 -#define SIGN_EXTEND_CHAR(SIGN_EXTEND_CHAR184,4900 -#define REGEX_ALLOCATE 199,5528 -#define REGEX_REALLOCATE(REGEX_REALLOCATE200,5558 -#define alloca 209,5788 -#define REGEX_ALLOCATE 222,6100 -#define REGEX_REALLOCATE(REGEX_REALLOCATE225,6178 -#define FIRST_STRING_P(FIRST_STRING_P236,6531 -#define TALLOC(TALLOC240,6686 -#define RETALLOC(RETALLOC241,6741 -#define RETALLOC_IF(RETALLOC_IF242,6820 -#define REGEX_TALLOC(REGEX_TALLOC244,6922 -#define BYTEWIDTH 246,6992 -#define STREQ(STREQ248,7029 -#define MAX(MAX252,7099 -#define MIN(MIN253,7141 -typedef char boolean;boolean255,7184 -#define false 256,7206 -#define true 257,7222 - no_op 268,7562 - exactn,271,7647 - anychar,274,7711 - charset,282,8119 - charset_not,286,8245 - start_memory,295,8711 - stop_memory,304,9220 - duplicate,308,9358 - begline,311,9421 - endline,314,9476 - begbuf,318,9610 - endbuf,321,9675 - jump,324,9758 - jump_past_alt,327,9827 - on_failure_jump,331,9951 - on_failure_keep_string_jump,335,10099 - pop_failure_jump,339,10245 - maybe_pop_jump,348,10734 - dummy_failure_jump,355,11093 - push_dummy_failure,359,11203 - succeed_n,363,11371 - jump_n,367,11513 - set_number_at,372,11689 - wordchar,374,11707 - notwordchar,375,11766 - wordbeg,377,11838 - wordend,378,11887 - wordbound,380,11931 - notwordbound 381,11983 - ,before_dot,384,12055 - at_dot,385,12103 - after_dot,386,12142 - syntaxspec,390,12319 - notsyntaxspec393,12400 -} re_opcode_t;re_opcode_t395,12435 -#define STORE_NUMBER(STORE_NUMBER401,12573 -#define STORE_NUMBER_AND_INCR(STORE_NUMBER_AND_INCR411,12896 -#define EXTRACT_NUMBER(EXTRACT_NUMBER420,13153 -extract_number 428,13368 -#define EXTRACT_NUMBER(EXTRACT_NUMBER439,13614 -#define EXTRACT_NUMBER_AND_INCR(EXTRACT_NUMBER_AND_INCR447,13835 -extract_number_and_incr 455,14024 -#define EXTRACT_NUMBER_AND_INCR(EXTRACT_NUMBER_AND_INCR465,14237 -static int debug 485,14898 -#define DEBUG_STATEMENT(DEBUG_STATEMENT487,14921 -#define DEBUG_PRINT1(DEBUG_PRINT1488,14950 -#define DEBUG_PRINT2(DEBUG_PRINT2489,14996 -#define DEBUG_PRINT3(DEBUG_PRINT3490,15052 -#define DEBUG_PRINT4(DEBUG_PRINT4491,15116 -#define DEBUG_PRINT_COMPILED_PATTERN(DEBUG_PRINT_COMPILED_PATTERN492,15188 -#define DEBUG_PRINT_DOUBLE_STRING(DEBUG_PRINT_DOUBLE_STRING494,15291 -print_fastmap 503,15489 -print_partial_compiled_pattern 535,16129 -print_compiled_pattern 766,20919 -print_double_string 793,21732 -#define assert(assert822,22344 -#define DEBUG_STATEMENT(DEBUG_STATEMENT824,22363 -#define DEBUG_PRINT1(DEBUG_PRINT1825,22390 -#define DEBUG_PRINT2(DEBUG_PRINT2826,22414 -#define DEBUG_PRINT3(DEBUG_PRINT3827,22443 -#define DEBUG_PRINT4(DEBUG_PRINT4828,22476 -#define DEBUG_PRINT_COMPILED_PATTERN(DEBUG_PRINT_COMPILED_PATTERN829,22513 -#define DEBUG_PRINT_DOUBLE_STRING(DEBUG_PRINT_DOUBLE_STRING830,22559 -reg_syntax_t re_syntax_options 837,22849 -re_set_syntax 848,23214 -static const char *re_error_msg[860,23498 -#define MATCH_MAY_ALLOCATE900,25361 -#define INIT_FAILURE_ALLOC 918,26015 -int re_max_failures 925,26294 -typedef unsigned char *fail_stack_elt_t;fail_stack_elt_t927,26323 -} fail_stack_type;fail_stack_type934,26483 -#define FAIL_STACK_EMPTY(FAIL_STACK_EMPTY936,26503 -#define FAIL_STACK_PTR_EMPTY(FAIL_STACK_PTR_EMPTY937,26558 -#define FAIL_STACK_FULL(FAIL_STACK_FULL938,26618 -#define FAIL_STACK_TOP(FAIL_STACK_TOP939,26687 -#define INIT_FAIL_STACK(INIT_FAIL_STACK945,26852 -#define INIT_FAIL_STACK(INIT_FAIL_STACK957,27211 -#define DOUBLE_FAIL_STACK(DOUBLE_FAIL_STACK971,27580 -#define PUSH_PATTERN_OP(PUSH_PATTERN_OP989,28191 -#define PUSH_FAILURE_ITEM(PUSH_FAILURE_ITEM999,28603 -#define POP_FAILURE_ITEM(POP_FAILURE_ITEM1003,28776 -#define DEBUG_PUSH 1007,28927 -#define DEBUG_POP(DEBUG_POP1008,28964 -#define DEBUG_PUSH(DEBUG_PUSH1010,29034 -#define DEBUG_POP(DEBUG_POP1011,29059 -#define PUSH_FAILURE_POINT(PUSH_FAILURE_POINT1024,29398 -#define NUM_REG_ITEMS 1100,32747 -#define NUM_NONREG_ITEMS 1104,32836 -#define NUM_NONREG_ITEMS 1106,32903 -#define MAX_FAILURE_ITEMS 1110,32991 -#define NUM_FAILURE_ITEMS 1113,33111 -#define REMAINING_AVAIL_SLOTS 1118,33314 -#define POP_FAILURE_POINT(POP_FAILURE_POINT1133,33888 -#define MATCH_NULL_UNSET_VALUE 1210,37029 -} register_info_type;register_info_type1216,37215 -#define REG_MATCH_NULL_STRING_P(REG_MATCH_NULL_STRING_P1218,37238 -#define IS_ACTIVE(IS_ACTIVE1219,37305 -#define MATCHED_SOMETHING(MATCHED_SOMETHING1220,37348 -#define EVER_MATCHED_SOMETHING(EVER_MATCHED_SOMETHING1221,37407 -#define SET_REGS_MATCHED(SET_REGS_MATCHED1227,37663 -#define REG_UNSET_VALUE 1242,38086 -#define REG_UNSET(REG_UNSET1243,38124 -static fail_stack_type fail_stack;1251,38356 -static const char ** regstart,1253,38392 -static const char ** regstart, ** regend;1253,38392 -static const char ** old_regstart,1254,38442 -static const char ** old_regstart, ** old_regend;1254,38442 -static const char **best_regstart,1255,38492 -static const char **best_regstart, **best_regend;1255,38492 -static register_info_type *reg_info;1256,38542 -static const char **reg_dummy;1257,38580 -static register_info_type *reg_info_dummy;1258,38611 -#define PATFETCH(PATFETCH1274,39208 -#define PATFETCH_RAW(PATFETCH_RAW1282,39459 -#define PATUNFETCH 1288,39638 -#define TRANSLATE(TRANSLATE1295,39942 -#define INIT_BUF_SIZE 1301,40147 -#define GET_BUFFER_SPACE(GET_BUFFER_SPACE1304,40241 -#define BUF_PUSH(BUF_PUSH1309,40434 -#define BUF_PUSH_2(BUF_PUSH_21317,40647 -#define BUF_PUSH_3(BUF_PUSH_31326,40876 -#define STORE_JUMP(STORE_JUMP1337,41239 -#define STORE_JUMP2(STORE_JUMP21341,41356 -#define INSERT_JUMP(INSERT_JUMP1345,41518 -#define INSERT_JUMP2(INSERT_JUMP21349,41675 -#define MAX_BUF_SIZE 1356,41966 -#define EXTEND_BUFFER(EXTEND_BUFFER1363,42273 -#define MAX_REGNUM 1392,43493 -typedef unsigned regnum_t;regnum_t1396,43611 -typedef int pattern_offset_t;pattern_offset_t1403,43827 -} compile_stack_elt_t;compile_stack_elt_t1412,44041 -} compile_stack_type;compile_stack_type1420,44187 -#define INIT_COMPILE_STACK_SIZE 1423,44211 -#define COMPILE_STACK_EMPTY 1425,44247 -#define COMPILE_STACK_FULL 1426,44303 -#define COMPILE_STACK_TOP 1429,44411 -#define SET_LIST_BIT(SET_LIST_BIT1433,44528 -#define GET_UNSIGNED_NUMBER(GET_UNSIGNED_NUMBER1439,44751 -#define CHAR_CLASS_MAX_LENGTH 1455,45173 -#define IS_CHAR_CLASS(IS_CHAR_CLASS1457,45232 -#define FREE_STACK_RETURN(FREE_STACK_RETURN1484,46385 -regex_compile 1488,46488 -store_op1 2544,84300 -store_op2 2557,84533 -insert_op1 2572,84872 -insert_op2 2591,85240 -at_begline_loc_p 2612,85744 -at_endline_loc_p 2631,86322 -group_in_compile_stack 2653,86939 -compile_range 2681,87762 -re_compile_fastmap 2740,89830 -re_set_registers 3030,97710 -re_search 3057,98337 -re_search_2 3090,99463 -#define POINTER_TO_OFFSET(POINTER_TO_OFFSET3220,103182 -#define MATCHING_IN_FIRST_STRING 3227,103396 -#define PREFETCH(PREFETCH3231,103550 -#define AT_STRINGS_BEG(AT_STRINGS_BEG3245,104010 -#define AT_STRINGS_END(AT_STRINGS_END3246,104083 -#define WORDCHAR_P(WORDCHAR_P3253,104389 -#define AT_WORD_BOUNDARY(AT_WORD_BOUNDARY3260,104636 -#define FREE_VAR(FREE_VAR3268,104846 -#define FREE_VARIABLES(FREE_VARIABLES3269,104900 -#define FREE_VARIABLES(FREE_VARIABLES3284,105408 -#define FREE_VARIABLES(FREE_VARIABLES3287,105483 -#define NO_HIGHEST_ACTIVE_REG 3297,106045 -#define NO_LOWEST_ACTIVE_REG 3298,106092 -re_match 3306,106302 -re_match_2 3334,107196 -re_match_2_internal 3351,107656 -group_match_null_string_p 4652,154762 -alt_match_null_string_p 4761,158534 -common_op_match_null_string_p 4798,159390 -bcmp_translate 4886,161326 -re_compile_pattern 4912,162015 -static struct re_pattern_buffer re_comp_buf;4942,162883 -re_comp 4945,162936 -re_exec 4983,163830 -regcomp 5031,165412 -regexec 5107,167829 -regerror 5172,169646 -regfree 5216,170705 - -getopt.c,559 -#define _NO_PROTO26,1085 -#define const37,1302 -char *optarg 84,3150 -int optind 99,3713 -static char *nextchar;108,4012 -int opterr 113,4126 -int optopt 119,4309 - REQUIRE_ORDER,152,5734 - REQUIRE_ORDER, PERMUTE,152,5734 - REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER152,5734 -} ordering;153,5776 -static char *posixly_correct;156,5843 -#define my_index 164,6120 -my_index 173,6270 -static int first_nonopt;206,7204 -static int last_nonopt;207,7229 -exchange 219,7715 -_getopt_initialize 277,9238 -_getopt_internal 367,12723 -getopt 665,20341 -main 684,20723 +#define _GETOPT_H 23,854 +struct optionoption81,2929 +#define no_argument 97,3278 +#define required_argument 98,3301 +#define optional_argument 99,3329 + +obstack.h,2573 +#define __OBSTACK_H__108,4803 +#define __PTR_TO_INT(__PTR_TO_INT115,5032 +#define __INT_TO_PTR(__INT_TO_PTR119,5103 +#define __need_ptrdiff_t132,5654 +#define PTR_INT_TYPE 140,5757 +#define PTR_INT_TYPE 142,5794 +struct _obstack_chunk _obstack_chunk145,5828 +struct obstack obstack152,6056 +#define obstack_base(obstack_base235,9446 +#define obstack_chunk_size(obstack_chunk_size239,9559 +#define obstack_next_free(obstack_next_free243,9673 +#define obstack_alignment_mask(obstack_alignment_mask247,9823 +#define obstack_init(obstack_init249,9880 +#define obstack_begin(obstack_begin253,10012 +#define obstack_specify_allocation(obstack_specify_allocation257,10156 +#define obstack_specify_allocation_with_arg(obstack_specify_allocation_with_arg261,10337 +#define obstack_chunkfun(obstack_chunkfun265,10541 +#define obstack_freefun(obstack_freefun268,10652 +#define obstack_1grow_fast(obstack_1grow_fast271,10741 +#define obstack_blank_fast(obstack_blank_fast273,10808 +#define __extension__280,11121 +#define obstack_object_size(obstack_object_size288,11353 +#define obstack_room(obstack_room294,11558 +#define obstack_grow(obstack_grow299,11721 +#define obstack_grow0(obstack_grow0312,12140 +#define obstack_1grow(obstack_1grow326,12613 +#define obstack_ptr_grow(obstack_ptr_grow339,13076 +#define obstack_int_grow(obstack_int_grow348,13410 +#define obstack_ptr_grow_fast(obstack_ptr_grow_fast357,13734 +#define obstack_int_grow_fast(obstack_int_grow_fast358,13818 +#define obstack_blank(obstack_blank360,13898 +#define obstack_alloc(obstack_alloc370,14224 +#define obstack_copy(obstack_copy376,14402 +#define obstack_copy0(obstack_copy0382,14591 +#define obstack_finish(obstack_finish390,14880 +#define obstack_free(obstack_free411,15611 +#define obstack_object_size(obstack_object_size421,15960 +#define obstack_room(obstack_room424,16066 +#define obstack_grow(obstack_grow433,16402 +#define obstack_grow0(obstack_grow0441,16715 +#define obstack_1grow(obstack_1grow450,17071 +#define obstack_ptr_grow(obstack_ptr_grow456,17275 +#define obstack_int_grow(obstack_int_grow462,17556 +#define obstack_ptr_grow_fast(obstack_ptr_grow_fast468,17822 +#define obstack_int_grow_fast(obstack_int_grow_fast469,17906 +#define obstack_blank(obstack_blank471,17986 +#define obstack_alloc(obstack_alloc478,18236 +#define obstack_copy(obstack_copy481,18331 +#define obstack_copy0(obstack_copy0484,18438 +#define obstack_finish(obstack_finish487,18547 +#define obstack_free(obstack_free503,19170 +#define obstack_free(obstack_free510,19507 + +regex.h,2325 +#define __REGEXP_LIBRARY_H__24,938 +typedef unsigned reg_syntax_t;reg_syntax_t41,1543 +#define RE_BACKSLASH_ESCAPE_IN_LISTS 45,1710 +#define RE_BK_PLUS_QM 50,1910 +#define RE_CHAR_CLASSES 56,2239 +#define RE_CONTEXT_INDEP_ANCHORS 70,2973 +#define RE_CONTEXT_INDEP_OPS 78,3399 +#define RE_CONTEXT_INVALID_OPS 82,3599 +#define RE_DOT_NEWLINE 86,3742 +#define RE_DOT_NOT_NULL 90,3878 +#define RE_HAT_LISTS_NOT_NEWLINE 94,4023 +#define RE_INTERVALS 99,4233 +#define RE_LIMITED_OPS 103,4382 +#define RE_NEWLINE_ALT 107,4524 +#define RE_NO_BK_BRACES 112,4714 +#define RE_NO_BK_PARENS 116,4905 +#define RE_NO_BK_REFS 120,5061 +#define RE_NO_BK_VBAR 124,5257 +#define RE_NO_EMPTY_RANGES 130,5551 +#define RE_UNMATCHED_RIGHT_PAREN_ORD 134,5707 +#define RE_SYNTAX_EMACS 146,6248 +#define RE_SYNTAX_AWK 148,6275 +#define RE_SYNTAX_POSIX_AWK 154,6506 +#define RE_SYNTAX_GREP 157,6603 +#define RE_SYNTAX_EGREP 162,6759 +#define RE_SYNTAX_POSIX_EGREP 168,6975 +#define RE_SYNTAX_ED 172,7120 +#define RE_SYNTAX_SED 174,7164 +#define _RE_SYNTAX_POSIX_COMMON 177,7282 +#define RE_SYNTAX_POSIX_BASIC 181,7425 +#define RE_SYNTAX_POSIX_MINIMAL_BASIC 187,7718 +#define RE_SYNTAX_POSIX_EXTENDED 190,7808 +#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 198,8170 +#define RE_DUP_MAX 211,8682 +#define REG_EXTENDED 218,8911 +#define REG_ICASE 222,9035 +#define REG_NEWLINE 227,9219 +#define REG_NOSUB 231,9397 +#define REG_NOTBOL 241,9763 +#define REG_NOTEOL 244,9837 + REG_NOERROR 251,9987 + REG_NOMATCH,252,10022 + REG_BADPAT,256,10169 + REG_ECOLLATE,257,10208 + REG_ECTYPE,258,10249 + REG_EESCAPE,259,10301 + REG_ESUBREG,260,10344 + REG_EBRACK,261,10391 + REG_EPAREN,262,10437 + REG_EBRACE,263,10482 + REG_BADBR,264,10518 + REG_ERANGE,265,10565 + REG_ESPACE,266,10606 + REG_BADRPT,267,10647 + REG_EEND,270,10739 + REG_ESIZE,271,10774 + REG_ERPAREN 272,10836 +} reg_errcode_t;reg_errcode_t273,10904 +struct re_pattern_bufferre_pattern_buffer281,11240 +#define REGS_UNALLOCATED 323,12850 +#define REGS_REALLOCATE 324,12877 +#define REGS_FIXED 325,12903 +typedef struct re_pattern_buffer regex_t;regex_t349,13584 +typedef int regoff_t;regoff_t352,13698 +struct re_registersre_registers357,13854 +#define RE_NREGS 369,14144 +} regmatch_t;regmatch_t380,14518 +#define _RE_ARGS(_RE_ARGS392,14865 +#define _RE_ARGS(_RE_ARGS396,14920 + +regex.c,8726 +#define _GNU_SOURCE29,1077 +#define bcmp(bcmp65,1819 +#define bcopy(bcopy68,1889 +#define bzero(bzero71,1956 +#define Sword 83,2205 +#define CHAR_SET_SIZE 93,2360 +static char re_syntax_table[95,2387 +init_syntax_once 98,2444 +#define SYNTAX(SYNTAX124,2869 +#define ISASCII(ISASCII146,3701 +#define ISASCII(ISASCII148,3728 +#define ISBLANK(ISBLANK152,3781 +#define ISBLANK(ISBLANK154,3835 +#define ISGRAPH(ISGRAPH157,3904 +#define ISGRAPH(ISGRAPH159,3958 +#define ISPRINT(ISPRINT162,4030 +#define ISDIGIT(ISDIGIT163,4078 +#define ISALNUM(ISALNUM164,4126 +#define ISALPHA(ISALPHA165,4174 +#define ISCNTRL(ISCNTRL166,4222 +#define ISLOWER(ISLOWER167,4270 +#define ISPUNCT(ISPUNCT168,4318 +#define ISSPACE(ISSPACE169,4366 +#define ISUPPER(ISUPPER170,4414 +#define ISXDIGIT(ISXDIGIT171,4462 +#define NULL 174,4526 +#define SIGN_EXTEND_CHAR(SIGN_EXTEND_CHAR183,4828 +#define SIGN_EXTEND_CHAR(SIGN_EXTEND_CHAR186,4936 +#define REGEX_ALLOCATE 201,5559 +#define REGEX_REALLOCATE(REGEX_REALLOCATE202,5589 +#define alloca 211,5819 +#define REGEX_ALLOCATE 224,6130 +#define REGEX_REALLOCATE(REGEX_REALLOCATE227,6208 +#define FIRST_STRING_P(FIRST_STRING_P238,6561 +#define TALLOC(TALLOC242,6716 +#define RETALLOC(RETALLOC243,6771 +#define RETALLOC_IF(RETALLOC_IF244,6850 +#define REGEX_TALLOC(REGEX_TALLOC246,6952 +#define BYTEWIDTH 248,7022 +#define STREQ(STREQ250,7059 +#define MAX(MAX254,7129 +#define MIN(MIN255,7171 +typedef char boolean;boolean257,7214 +#define false 258,7236 +#define true 259,7252 + no_op 270,7592 + exactn,273,7677 + anychar,276,7741 + charset,284,8149 + charset_not,288,8275 + start_memory,297,8741 + stop_memory,306,9250 + duplicate,310,9388 + begline,313,9451 + endline,316,9506 + begbuf,320,9640 + endbuf,323,9705 + jump,326,9787 + jump_past_alt,329,9855 + on_failure_jump,333,9979 + on_failure_keep_string_jump,337,10126 + pop_failure_jump,341,10270 + maybe_pop_jump,350,10759 + dummy_failure_jump,357,11118 + push_dummy_failure,361,11228 + succeed_n,365,11396 + jump_n,369,11538 + set_number_at,374,11714 + wordchar,376,11732 + notwordchar,377,11791 + wordbeg,379,11863 + wordend,380,11912 + wordbound,382,11956 + notwordbound 383,12008 + ,before_dot,386,12080 + at_dot,387,12128 + after_dot,388,12167 + syntaxspec,392,12344 + notsyntaxspec395,12425 +} re_opcode_t;re_opcode_t397,12460 +#define STORE_NUMBER(STORE_NUMBER403,12598 +#define STORE_NUMBER_AND_INCR(STORE_NUMBER_AND_INCR413,12921 +#define EXTRACT_NUMBER(EXTRACT_NUMBER422,13178 +extract_number 430,13393 +#define EXTRACT_NUMBER(EXTRACT_NUMBER441,13638 +#define EXTRACT_NUMBER_AND_INCR(EXTRACT_NUMBER_AND_INCR449,13859 +extract_number_and_incr 457,14048 +#define EXTRACT_NUMBER_AND_INCR(EXTRACT_NUMBER_AND_INCR467,14260 +static int debug 487,14921 +#define DEBUG_STATEMENT(DEBUG_STATEMENT489,14944 +#define DEBUG_PRINT1(DEBUG_PRINT1490,14973 +#define DEBUG_PRINT2(DEBUG_PRINT2491,15019 +#define DEBUG_PRINT3(DEBUG_PRINT3492,15075 +#define DEBUG_PRINT4(DEBUG_PRINT4493,15139 +#define DEBUG_PRINT_COMPILED_PATTERN(DEBUG_PRINT_COMPILED_PATTERN494,15211 +#define DEBUG_PRINT_DOUBLE_STRING(DEBUG_PRINT_DOUBLE_STRING496,15314 +print_fastmap 505,15512 +print_partial_compiled_pattern 537,16147 +print_compiled_pattern 768,20802 +print_double_string 795,21615 +#define assert(assert824,22221 +#define DEBUG_STATEMENT(DEBUG_STATEMENT826,22240 +#define DEBUG_PRINT1(DEBUG_PRINT1827,22267 +#define DEBUG_PRINT2(DEBUG_PRINT2828,22291 +#define DEBUG_PRINT3(DEBUG_PRINT3829,22320 +#define DEBUG_PRINT4(DEBUG_PRINT4830,22353 +#define DEBUG_PRINT_COMPILED_PATTERN(DEBUG_PRINT_COMPILED_PATTERN831,22390 +#define DEBUG_PRINT_DOUBLE_STRING(DEBUG_PRINT_DOUBLE_STRING832,22436 +reg_syntax_t re_syntax_options 839,22726 +re_set_syntax 850,23091 +static const char *re_error_msg[862,23373 +#define MATCH_MAY_ALLOCATE902,25235 +#define INIT_FAILURE_ALLOC 920,25886 +int re_max_failures 927,26165 +typedef unsigned char *fail_stack_elt_t;fail_stack_elt_t929,26194 +} fail_stack_type;fail_stack_type936,26354 +#define FAIL_STACK_EMPTY(FAIL_STACK_EMPTY938,26374 +#define FAIL_STACK_PTR_EMPTY(FAIL_STACK_PTR_EMPTY939,26429 +#define FAIL_STACK_FULL(FAIL_STACK_FULL940,26489 +#define FAIL_STACK_TOP(FAIL_STACK_TOP941,26558 +#define INIT_FAIL_STACK(INIT_FAIL_STACK947,26723 +#define INIT_FAIL_STACK(INIT_FAIL_STACK959,27082 +#define DOUBLE_FAIL_STACK(DOUBLE_FAIL_STACK973,27446 +#define PUSH_PATTERN_OP(PUSH_PATTERN_OP991,28056 +#define PUSH_FAILURE_ITEM(PUSH_FAILURE_ITEM1001,28468 +#define POP_FAILURE_ITEM(POP_FAILURE_ITEM1005,28641 +#define DEBUG_PUSH 1009,28792 +#define DEBUG_POP(DEBUG_POP1010,28829 +#define DEBUG_PUSH(DEBUG_PUSH1012,28899 +#define DEBUG_POP(DEBUG_POP1013,28924 +#define PUSH_FAILURE_POINT(PUSH_FAILURE_POINT1026,29255 +#define NUM_REG_ITEMS 1102,32604 +#define NUM_NONREG_ITEMS 1106,32693 +#define NUM_NONREG_ITEMS 1108,32760 +#define MAX_FAILURE_ITEMS 1112,32848 +#define NUM_FAILURE_ITEMS 1115,32968 +#define REMAINING_AVAIL_SLOTS 1120,33171 +#define POP_FAILURE_POINT(POP_FAILURE_POINT1135,33742 +#define MATCH_NULL_UNSET_VALUE 1212,36878 +} register_info_type;register_info_type1218,37064 +#define REG_MATCH_NULL_STRING_P(REG_MATCH_NULL_STRING_P1220,37087 +#define IS_ACTIVE(IS_ACTIVE1221,37154 +#define MATCHED_SOMETHING(MATCHED_SOMETHING1222,37197 +#define EVER_MATCHED_SOMETHING(EVER_MATCHED_SOMETHING1223,37256 +#define SET_REGS_MATCHED(SET_REGS_MATCHED1229,37512 +#define REG_UNSET_VALUE 1244,37935 +#define REG_UNSET(REG_UNSET1245,37973 +static fail_stack_type fail_stack;1253,38205 +static const char ** regstart,1255,38241 +static const char ** regstart, ** regend;1255,38241 +static const char ** old_regstart,1256,38291 +static const char ** old_regstart, ** old_regend;1256,38291 +static const char **best_regstart,1257,38341 +static const char **best_regstart, **best_regend;1257,38341 +static register_info_type *reg_info;1258,38391 +static const char **reg_dummy;1259,38428 +static register_info_type *reg_info_dummy;1260,38459 +#define PATFETCH(PATFETCH1276,39055 +#define PATFETCH_RAW(PATFETCH_RAW1284,39306 +#define PATUNFETCH 1290,39485 +#define TRANSLATE(TRANSLATE1297,39789 +#define INIT_BUF_SIZE 1303,39994 +#define GET_BUFFER_SPACE(GET_BUFFER_SPACE1306,40088 +#define BUF_PUSH(BUF_PUSH1311,40281 +#define BUF_PUSH_2(BUF_PUSH_21319,40494 +#define BUF_PUSH_3(BUF_PUSH_31328,40723 +#define STORE_JUMP(STORE_JUMP1339,41086 +#define STORE_JUMP2(STORE_JUMP21343,41203 +#define INSERT_JUMP(INSERT_JUMP1347,41365 +#define INSERT_JUMP2(INSERT_JUMP21351,41522 +#define MAX_BUF_SIZE 1358,41813 +#define EXTEND_BUFFER(EXTEND_BUFFER1365,42120 +#define MAX_REGNUM 1394,43340 +typedef unsigned regnum_t;regnum_t1398,43458 +typedef int pattern_offset_t;pattern_offset_t1405,43674 +} compile_stack_elt_t;compile_stack_elt_t1414,43886 +} compile_stack_type;compile_stack_type1422,44032 +#define INIT_COMPILE_STACK_SIZE 1425,44056 +#define COMPILE_STACK_EMPTY 1427,44092 +#define COMPILE_STACK_FULL 1428,44148 +#define COMPILE_STACK_TOP 1431,44256 +#define SET_LIST_BIT(SET_LIST_BIT1435,44373 +#define GET_UNSIGNED_NUMBER(GET_UNSIGNED_NUMBER1441,44596 +#define CHAR_CLASS_MAX_LENGTH 1457,45016 +#define IS_CHAR_CLASS(IS_CHAR_CLASS1459,45075 +#define FREE_STACK_RETURN(FREE_STACK_RETURN1486,46225 +regex_compile 1490,46328 +store_op1 2546,83850 +store_op2 2559,84083 +insert_op1 2574,84422 +insert_op2 2593,84782 +at_begline_loc_p 2614,85278 +at_endline_loc_p 2633,85854 +group_in_compile_stack 2655,86468 +compile_range 2683,87282 +re_compile_fastmap 2742,89342 +re_set_registers 3032,97165 +re_search 3059,97792 +re_search_2 3092,98905 +#define POINTER_TO_OFFSET(POINTER_TO_OFFSET3222,102601 +#define MATCHING_IN_FIRST_STRING 3229,102815 +#define PREFETCH(PREFETCH3233,102969 +#define AT_STRINGS_BEG(AT_STRINGS_BEG3247,103429 +#define AT_STRINGS_END(AT_STRINGS_END3248,103502 +#define WORDCHAR_P(WORDCHAR_P3255,103807 +#define AT_WORD_BOUNDARY(AT_WORD_BOUNDARY3262,104054 +#define FREE_VAR(FREE_VAR3270,104264 +#define FREE_VARIABLES(FREE_VARIABLES3271,104318 +#define FREE_VARIABLES(FREE_VARIABLES3286,104826 +#define FREE_VARIABLES(FREE_VARIABLES3289,104901 +#define NO_HIGHEST_ACTIVE_REG 3299,105463 +#define NO_LOWEST_ACTIVE_REG 3300,105510 +re_match 3308,105720 +re_match_2 3336,106611 +re_match_2_internal 3353,107071 +group_match_null_string_p 4654,153514 +alt_match_null_string_p 4763,157236 +common_op_match_null_string_p 4800,158067 +bcmp_translate 4888,159981 +re_compile_pattern 4914,160664 +static struct re_pattern_buffer re_comp_buf;4944,161519 +re_comp 4947,161572 +re_exec 4985,162462 +regcomp 5033,164044 +regexec 5109,166436 +regerror 5174,168242 +regfree 5218,169298 + +getopt.c,560 +#define _NO_PROTO28,1140 +#define const39,1357 +char *optarg 86,3205 +int optind 101,3768 +static char *nextchar;110,4067 +int opterr 115,4181 +int optopt 121,4364 + REQUIRE_ORDER,154,5789 + REQUIRE_ORDER, PERMUTE,154,5789 + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER154,5789 +} ordering;155,5831 +static char *posixly_correct;158,5898 +#define my_index 166,6175 +my_index 175,6325 +static int first_nonopt;208,7259 +static int last_nonopt;209,7284 +exchange 221,7770 +_getopt_initialize 279,9293 +_getopt_internal 369,12778 +getopt 667,20396 +main 686,20778 getopt1.c,105 -#define const29,1042 -#define NULL 55,1833 -getopt_long 59,1860 -getopt_long_only 75,2363 -main 93,2719 +#define const32,1097 +#define NULL 58,1888 +getopt_long 62,1915 +getopt_long_only 78,2418 +main 96,2774 error.c,193 -# define VA_START(VA_START29,1004 -# define VA_START(VA_START32,1092 -# define va_alist 35,1155 -# define va_dcl 36,1204 -private_strerror 59,1769 -#define strerror 69,1975 -error 80,2305 +# define VA_START(VA_START32,1050 +# define VA_START(VA_START35,1138 +# define va_alist 38,1201 +# define va_dcl 39,1250 +private_strerror 62,1815 +#define strerror 72,2021 +error 83,2351 obstack.c,871 -#define POINTER 35,1483 -#define POINTER 37,1512 -struct fooalign fooalign41,1579 -#define DEFAULT_ALIGNMENT 42,1616 -union fooround fooround47,1924 -#define DEFAULT_ROUNDING 48,1960 -#define COPYING_UNIT 55,2265 -struct obstack *_obstack;61,2403 -#define CALL_CHUNKFUN(CALL_CHUNKFUN69,2778 -#define CALL_FREEFUN(CALL_FREEFUN74,2921 -_obstack_begin 93,3519 -_obstack_begin_1 144,5053 -_obstack_newchunk 203,6912 -_obstack_allocated_p 277,9349 -_obstack_free 305,10208 -obstack_free 339,11199 -POINTER 384,12725 -POINTER 390,12826 -int (obstack_object_size)396,12937 -int (obstack_room)402,13048 -void (obstack_grow)408,13145 -void (obstack_grow0)416,13309 -void (obstack_1grow)424,13475 -void (obstack_blank)431,13610 -void (obstack_1grow_fast)438,13736 -void (obstack_blank_fast)445,13881 -POINTER 452,14017 -POINTER 458,14122 -POINTER 465,14258 -POINTER 473,14432 +#define POINTER 39,1575 +#define POINTER 41,1604 +struct fooalign fooalign45,1671 +#define DEFAULT_ALIGNMENT 46,1708 +union fooround fooround51,2016 +#define DEFAULT_ROUNDING 52,2052 +#define COPYING_UNIT 59,2357 +struct obstack *_obstack;65,2495 +#define CALL_CHUNKFUN(CALL_CHUNKFUN73,2870 +#define CALL_FREEFUN(CALL_FREEFUN78,3013 +_obstack_begin 97,3611 +_obstack_begin_1 148,5145 +_obstack_newchunk 207,7004 +_obstack_allocated_p 281,9441 +_obstack_free 309,10300 +obstack_free 343,11291 +POINTER 388,12817 +POINTER 394,12918 +int (obstack_object_size)400,13029 +int (obstack_room)406,13140 +void (obstack_grow)412,13237 +void (obstack_grow0)420,13401 +void (obstack_1grow)428,13567 +void (obstack_blank)435,13702 +void (obstack_1grow_fast)442,13828 +void (obstack_blank_fast)449,13973 +POINTER 456,14109 +POINTER 462,14214 +POINTER 469,14350 +POINTER 477,14524 xmalloc.c,167 -#define VOID 23,866 -#define VOID 25,890 -#define EXIT_FAILURE 39,1061 -int xmalloc_exit_failure 44,1210 -fixup_null_alloc 53,1383 -xmalloc 69,1647 -xrealloc 85,1896 +#define VOID 26,912 +#define VOID 28,936 +#define EXIT_FAILURE 42,1107 +int xmalloc_exit_failure 47,1256 +fixup_null_alloc 56,1429 +xmalloc 72,1693 +xrealloc 88,1942 xstrdup.c,17 -xstrdup 32,1025 +xstrdup 35,1063 alloca.c,784 #define ADDRESS_FUNCTION(ADDRESS_FUNCTION58,1913 @@ -468,11 +468,11 @@ struct stk_trailerstk_trailer315,9457 i00afunc 344,10115 i00afunc 418,12063 -strtol.c,165 -#define ULONG_MAX 29,895 -#define LONG_MAX 33,975 -#define LONG_MIN 37,1051 -#define NULL 44,1155 -#define UNSIGNED 49,1213 -#define strtol 60,1643 -strtol 64,1688 +strtol.c,166 +#define ULONG_MAX 33,971 +#define LONG_MAX 37,1051 +#define LONG_MIN 41,1127 +#define NULL 48,1231 +#define UNSIGNED 53,1289 +#define strtol 64,1719 +strtol 68,1764 diff -ruNp m4-1.4.3/lib/error.c m4-1.4.4/lib/error.c --- m4-1.4.3/lib/error.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/error.c 2005-05-01 12:48:13.000000000 +0100 @@ -1,10 +1,11 @@ /* error.c -- error handler for noninteractive utilities - Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc. + + Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -13,7 +14,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ /* Written by David MacKenzie . */ diff -ruNp m4-1.4.3/lib/getopt.c m4-1.4.4/lib/getopt.c --- m4-1.4.3/lib/getopt.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/getopt.c 2005-05-01 12:47:42.000000000 +0100 @@ -3,13 +3,13 @@ "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu before changing it! - Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94 - Free Software Foundation, Inc. + Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + 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 2 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 @@ -18,8 +18,10 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ + /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO diff -ruNp m4-1.4.3/lib/getopt.h m4-1.4.4/lib/getopt.h --- m4-1.4.3/lib/getopt.h 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/getopt.h 2005-05-01 12:46:57.000000000 +0100 @@ -1,10 +1,12 @@ /* Declarations for getopt. - Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 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 @@ -13,7 +15,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ #ifndef _GETOPT_H #define _GETOPT_H 1 diff -ruNp m4-1.4.3/lib/getopt1.c m4-1.4.4/lib/getopt1.c --- m4-1.4.3/lib/getopt1.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/getopt1.c 2005-05-01 12:46:04.000000000 +0100 @@ -1,11 +1,12 @@ /* getopt_long and getopt_long_only entry points for GNU getopt. - Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 1994 - Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 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 @@ -14,8 +15,10 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ + #ifdef HAVE_CONFIG_H #include #endif diff -ruNp m4-1.4.3/lib/obstack.c m4-1.4.4/lib/obstack.c --- m4-1.4.3/lib/obstack.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/obstack.c 2005-05-01 12:45:28.000000000 +0100 @@ -1,19 +1,23 @@ /* obstack.c - subroutines used implicitly by object stack macros - Copyright (C) 1988, 89, 90, 91, 92, 93, 94 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, 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, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 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, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ #include "obstack.h" diff -ruNp m4-1.4.3/lib/obstack.h m4-1.4.4/lib/obstack.h --- m4-1.4.3/lib/obstack.h 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/obstack.h 2005-05-01 12:44:57.000000000 +0100 @@ -1,19 +1,23 @@ /* obstack.h - object stack macros - Copyright (C) 1988, 89, 90, 91, 92, 93, 94 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, 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, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 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, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ /* Summary: @@ -331,7 +335,7 @@ __extension__ \ /* These assume that the obstack alignment is good enough for pointers or ints, and that the data added so far to the current object shares that much alignment. */ - + #define obstack_ptr_grow(OBSTACK,datum) \ __extension__ \ ({ struct obstack *__o = (OBSTACK); \ diff -ruNp m4-1.4.3/lib/regex.c m4-1.4.4/lib/regex.c --- m4-1.4.3/lib/regex.c 2005-02-09 21:22:28.000000000 +0000 +++ m4-1.4.4/lib/regex.c 2005-05-01 12:44:19.000000000 +0100 @@ -7,8 +7,8 @@ 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 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ /* AIX requires this to be the first thing in the file. */ #if defined (_AIX) && !defined (REGEX_MALLOC) @@ -77,7 +79,7 @@ char *realloc (); /* This must be nonzero for the wordchar and notwordchar pattern commands in re_match_2. */ -#ifndef Sword +#ifndef Sword #define Sword 1 #endif @@ -188,8 +190,8 @@ init_syntax_once () use `alloca' instead of `malloc'. This is because using malloc in re_search* or re_match* could cause memory leaks when C-g is used in Emacs; also, malloc is slower and causes storage fragmentation. On - the other hand, malloc is more portable, and easier to debug. - + the other hand, malloc is more portable, and easier to debug. + Because we sometimes use alloca, some routines have to be macros, not functions -- `alloca'-allocated space disappears at the end of the function it is called in. */ @@ -214,7 +216,7 @@ init_syntax_once () #ifndef _AIX /* Already did AIX, up at the top. */ char *alloca (); #endif /* not _AIX */ -#endif /* not HAVE_ALLOCA_H */ +#endif /* not HAVE_ALLOCA_H */ #endif /* not __GNUC__ */ #endif /* not alloca */ @@ -319,9 +321,9 @@ typedef enum /* Analogously, for end of buffer/string. */ endbuf, - + /* Followed by two byte relative address to which to jump. */ - jump, + jump, /* Same as jump, but marks the end of an alternative. */ jump_past_alt, @@ -329,11 +331,11 @@ typedef enum /* Followed by two-byte relative address of place to resume at in case of failure. */ on_failure_jump, - + /* Like on_failure_jump, but pushes a placeholder instead of the current string position when executed. */ on_failure_keep_string_jump, - + /* Throw away latest failure point and then jump to following two-byte relative address. */ pop_failure_jump, @@ -429,7 +431,7 @@ extract_number (dest, source) int *dest; unsigned char *source; { - int temp = SIGN_EXTEND_CHAR (*(source + 1)); + int temp = SIGN_EXTEND_CHAR (*(source + 1)); *dest = *source & 0377; *dest += temp << 8; } @@ -455,7 +457,7 @@ static void extract_number_and_incr (destination, source) int *destination; unsigned char **source; -{ +{ extract_number (destination, *source); *source += 2; } @@ -504,8 +506,8 @@ print_fastmap (fastmap) char *fastmap; { unsigned was_a_range = 0; - unsigned i = 0; - + unsigned i = 0; + while (i < (1 << BYTEWIDTH)) { if (fastmap[i++]) @@ -524,7 +526,7 @@ print_fastmap (fastmap) } } } - putchar ('\n'); + putchar ('\n'); } @@ -545,7 +547,7 @@ print_partial_compiled_pattern (start, e printf ("(null)\n"); return; } - + /* Loop over pattern commands. */ while (p < pend) { @@ -594,7 +596,7 @@ print_partial_compiled_pattern (start, e printf ("/charset [%s", (re_opcode_t) *(p - 1) == charset_not ? "^" : ""); - + assert (p + *p < pend); for (c = 0; c < 256; c++) @@ -613,7 +615,7 @@ print_partial_compiled_pattern (start, e printchar (last); in_range = 0; } - + if (! in_range) printchar (c); @@ -655,7 +657,7 @@ print_partial_compiled_pattern (start, e case push_dummy_failure: printf ("/push_dummy_failure"); break; - + case maybe_pop_jump: extract_number_and_incr (&mcnt, &p); printf ("/maybe_pop_jump to %d", p + mcnt - start); @@ -664,36 +666,36 @@ print_partial_compiled_pattern (start, e case pop_failure_jump: extract_number_and_incr (&mcnt, &p); printf ("/pop_failure_jump to %d", p + mcnt - start); - break; - + break; + case jump_past_alt: extract_number_and_incr (&mcnt, &p); printf ("/jump_past_alt to %d", p + mcnt - start); - break; - + break; + case jump: extract_number_and_incr (&mcnt, &p); printf ("/jump to %d", p + mcnt - start); break; - case succeed_n: + case succeed_n: extract_number_and_incr (&mcnt, &p); extract_number_and_incr (&mcnt2, &p); printf ("/succeed_n to %d, %d times", p + mcnt - start, mcnt2); break; - - case jump_n: + + case jump_n: extract_number_and_incr (&mcnt, &p); extract_number_and_incr (&mcnt2, &p); printf ("/jump_n to %d, %d times", p + mcnt - start, mcnt2); break; - - case set_number_at: + + case set_number_at: extract_number_and_incr (&mcnt, &p); extract_number_and_incr (&mcnt2, &p); printf ("/set_number_at location %d to %d", p + mcnt - start, mcnt2); break; - + case wordbound: printf ("/wordbound"); break; @@ -705,10 +707,10 @@ print_partial_compiled_pattern (start, e case wordbeg: printf ("/wordbeg"); break; - + case wordend: printf ("/wordend"); - + #ifdef emacs case before_dot: printf ("/before_dot"); @@ -727,7 +729,7 @@ print_partial_compiled_pattern (start, e mcnt = *p++; printf ("/%d", mcnt); break; - + case notsyntaxspec: printf ("/notsyntaxspec"); mcnt = *p++; @@ -738,7 +740,7 @@ print_partial_compiled_pattern (start, e case wordchar: printf ("/wordchar"); break; - + case notwordchar: printf ("/notwordchar"); break; @@ -798,7 +800,7 @@ print_double_string (where, string1, siz int size2; { unsigned this_char; - + if (where == NULL) printf ("(null)"); else @@ -808,7 +810,7 @@ print_double_string (where, string1, siz for (this_char = where - string1; this_char < size1; this_char++) printchar (string1[this_char]); - where = string2; + where = string2; } for (this_char = where - string2; this_char < size2; this_char++) @@ -849,7 +851,7 @@ re_set_syntax (syntax) reg_syntax_t syntax; { reg_syntax_t ret = re_syntax_options; - + re_syntax_options = syntax; return ret; } @@ -887,7 +889,7 @@ static const char *re_error_msg[] = ralloc heap) shift the data out from underneath the regexp routines. - Here's another reason to avoid allocation: Emacs + Here's another reason to avoid allocation: Emacs processes input from X in a signal handler; processing X input may call malloc; if input arrives while a matching routine is calling malloc, then we're scrod. But Emacs can't just block input while @@ -909,7 +911,7 @@ static const char *re_error_msg[] = /* Failure stack declarations and macros; both re_compile_fastmap and re_match_2 use a failure stack. These have to be macros because of REGEX_ALLOCATE. */ - + /* Number of failure points for which to initially allocate space when matching. If this number is exceeded, we allocate more @@ -964,8 +966,8 @@ typedef struct /* Double the size of FAIL_STACK, up to approximately `re_max_failures' items. Return 1 if succeeds, and 0 if either ran out of memory - allocating space for it or it was already too large. - + allocating space for it or it was already too large. + REGEX_REALLOCATE requires `destination' be declared. */ #define DOUBLE_FAIL_STACK(fail_stack) \ @@ -982,7 +984,7 @@ typedef struct 1))) -/* Push PATTERN_OP on FAIL_STACK. +/* Push PATTERN_OP on FAIL_STACK. Return 1 if was able to do so and 0 if ran out of memory allocating space to do so. */ @@ -1013,12 +1015,12 @@ typedef struct /* Push the information about the state we will need - if we ever fail back to it. - + if we ever fail back to it. + Requires variables fail_stack, regstart, regend, reg_info, and num_regs be declared. DOUBLE_FAIL_STACK requires `destination' be declared. - + Does `return FAILURE_CODE' if runs out of memory. */ #define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code) \ @@ -1126,7 +1128,7 @@ typedef struct LOW_REG, HIGH_REG -- the highest and lowest active registers. REGSTART, REGEND -- arrays of string positions. REG_INFO -- array of information about each subexpression. - + Also assumes the variables `fail_stack' and (if debugging), `bufp', `pend', `string1', `size1', `string2', and `size2'. */ @@ -1194,8 +1196,8 @@ typedef struct onto the failure stack. Other register information, such as the starting and ending positions (which are addresses), and the list of inner groups (which is a bits list) are maintained in separate - variables. - + variables. + We are making a (strictly speaking) nonportable assumption here: that the compiler will pack our bit fields into something that fits into the type of `word', i.e., is something that fits into one item on the @@ -1253,7 +1255,7 @@ static fail_stack_type fail_stack; static const char ** regstart, ** regend; static const char ** old_regstart, ** old_regend; static const char **best_regstart, **best_regend; -static register_info_type *reg_info; +static register_info_type *reg_info; static const char **reg_dummy; static register_info_type *reg_info_dummy; #endif @@ -1267,7 +1269,7 @@ static boolean at_begline_loc_p (), at_e static boolean group_in_compile_stack (); static reg_errcode_t compile_range (); -/* Fetch the next character in the uncompiled pattern---translating it +/* Fetch the next character in the uncompiled pattern---translating it if necessary. Also cast from a signed character in the constant string passed to us by the user to an unsigned char that we can use as an array index (in, e.g., `translate'). */ @@ -1407,7 +1409,7 @@ typedef struct pattern_offset_t begalt_offset; pattern_offset_t fixup_alt_jump; pattern_offset_t inner_group_offset; - pattern_offset_t laststart_offset; + pattern_offset_t laststart_offset; regnum_t regnum; } compile_stack_elt_t; @@ -1450,7 +1452,7 @@ typedef struct PATFETCH (c); \ } \ } \ - } + } #define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */ @@ -1476,7 +1478,7 @@ typedef struct `fastmap_accurate' is zero; `re_nsub' is the number of subexpressions in PATTERN; `not_bol' and `not_eol' are zero; - + The `fastmap' and `newline_anchor' fields are neither examined nor set. */ @@ -1495,20 +1497,20 @@ regex_compile (pattern, size, syntax, bu `char *' (i.e., signed), we declare these variables as unsigned, so they can be reliably used as array indices. */ register unsigned char c, c1; - + /* A random temporary spot in PATTERN. */ const char *p1; /* Points to the end of the buffer, where we should append. */ register unsigned char *b; - + /* Keeps track of unclosed groups. */ compile_stack_type compile_stack; /* Points to the current (ending) position in the pattern. */ const char *p = pattern; const char *pend = pattern + size; - + /* How to translate the characters in the pattern. */ char *translate = bufp->translate; @@ -1529,7 +1531,7 @@ regex_compile (pattern, size, syntax, bu /* Place in the uncompiled pattern (i.e., the {) to which to go back if the interval is invalid. */ const char *beg_interval; - + /* Address of the place where a forward jump should go to the end of the containing expression. Each alternative of an `or' -- except the last -- ends with a forward jump of this sort. */ @@ -1545,7 +1547,7 @@ regex_compile (pattern, size, syntax, bu if (debug) { unsigned debug_count; - + for (debug_count = 0; debug_count < size; debug_count++) printchar (pattern[debug_count]); putchar ('\n'); @@ -1569,9 +1571,9 @@ regex_compile (pattern, size, syntax, bu printer (for debugging) will think there's no pattern. We reset it at the end. */ bufp->used = 0; - + /* Always count groups, whether or not bufp->no_sub is set. */ - bufp->re_nsub = 0; + bufp->re_nsub = 0; #if !defined (emacs) && !defined (SYNTAX_TABLE) /* Initialize the syntax table. */ @@ -1622,7 +1624,7 @@ regex_compile (pattern, size, syntax, bu case '$': { if ( /* If at end of pattern, it's an operator. */ - p == pend + p == pend /* If context independent, it's an operator. */ || syntax & RE_CONTEXT_INDEP_ANCHORS /* Otherwise, depends on what's next. */ @@ -1653,7 +1655,7 @@ regex_compile (pattern, size, syntax, bu { /* Are we optimizing this jump? */ boolean keep_string_p = false; - + /* 1 means zero (many) matches is allowed. */ char zero_times_ok = 0, many_times_ok = 0; @@ -1701,7 +1703,7 @@ regex_compile (pattern, size, syntax, bu /* Star, etc. applied to an empty pattern is equivalent to an empty pattern. */ - if (!laststart) + if (!laststart) break; /* Now we know whether or not zero matches is allowed @@ -1710,7 +1712,7 @@ regex_compile (pattern, size, syntax, bu { /* More than one repetition is allowed, so put in at the end a backward relative jump from `b' to before the next jump we're going to put in below (which jumps from - laststart to after this jump). + laststart to after this jump). But if we are at the `*' in the exact sequence `.*\n', insert an unconditional jump backwards to the ., @@ -1787,7 +1789,7 @@ regex_compile (pattern, size, syntax, bu /* We test `*p == '^' twice, instead of using an if statement, so we only need one BUF_PUSH. */ - BUF_PUSH (*p == '^' ? charset_not : charset); + BUF_PUSH (*p == '^' ? charset_not : charset); if (*p == '^') p++; @@ -1837,8 +1839,8 @@ regex_compile (pattern, size, syntax, bu was a character: if this is a hyphen not at the beginning or the end of a list, then it's the range operator. */ - if (c == '-' - && !(p - 2 >= pattern && p[-2] == '[') + if (c == '-' + && !(p - 2 >= pattern && p[-2] == '[') && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^') && *p != ']') { @@ -1853,7 +1855,7 @@ regex_compile (pattern, size, syntax, bu /* Move past the `-'. */ PATFETCH (c1); - + ret = compile_range (&p, pend, translate, syntax, b); if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); } @@ -1882,7 +1884,7 @@ regex_compile (pattern, size, syntax, bu str[c1] = '\0'; /* If isn't a word bracketed by `[:' and:`]': - undo the ending character, the letters, and leave + undo the ending character, the letters, and leave the leading `:' and `[' (but set bits for them). */ if (c == ':' && *p == ']') { @@ -1899,13 +1901,13 @@ regex_compile (pattern, size, syntax, bu boolean is_space = STREQ (str, "space"); boolean is_upper = STREQ (str, "upper"); boolean is_xdigit = STREQ (str, "xdigit"); - + if (!IS_CHAR_CLASS (str)) FREE_STACK_RETURN (REG_ECTYPE); /* Throw away the ] at the end of the character class. */ - PATFETCH (c); + PATFETCH (c); if (p == pend) FREE_STACK_RETURN (REG_EBRACK); @@ -1934,7 +1936,7 @@ regex_compile (pattern, size, syntax, bu else { c1++; - while (c1--) + while (c1--) PATUNFETCH; SET_LIST_BIT ('['); SET_LIST_BIT (':'); @@ -1950,8 +1952,8 @@ regex_compile (pattern, size, syntax, bu /* Discard any (non)matching list bytes that are all 0 at the end of the map. Decrease the map-length byte too. */ - while ((int) b[-1] > 0 && b[b[-1] - 1] == 0) - b[-1]--; + while ((int) b[-1] > 0 && b[b[-1] - 1] == 0) + b[-1]--; b += b[-1]; } break; @@ -2011,7 +2013,7 @@ regex_compile (pattern, size, syntax, bu regnum++; if (COMPILE_STACK_FULL) - { + { RETALLOC (compile_stack.stack, compile_stack.size << 1, compile_stack_elt_t); if (compile_stack.stack == NULL) return REG_ESPACE; @@ -2024,7 +2026,7 @@ regex_compile (pattern, size, syntax, bu whole pattern moves because of realloc, they will still be valid. */ COMPILE_STACK_TOP.begalt_offset = begalt - bufp->buffer; - COMPILE_STACK_TOP.fixup_alt_jump + COMPILE_STACK_TOP.fixup_alt_jump = fixup_alt_jump ? fixup_alt_jump - bufp->buffer + 1 : 0; COMPILE_STACK_TOP.laststart_offset = b - bufp->buffer; COMPILE_STACK_TOP.regnum = regnum; @@ -2038,7 +2040,7 @@ regex_compile (pattern, size, syntax, bu COMPILE_STACK_TOP.inner_group_offset = b - bufp->buffer + 2; BUF_PUSH_3 (start_memory, regnum, 0); } - + compile_stack.avail++; fixup_alt_jump = 0; @@ -2067,7 +2069,7 @@ regex_compile (pattern, size, syntax, bu `pop_failure_jump' to pop. See comments at `push_dummy_failure' in `re_match_2'. */ BUF_PUSH (push_dummy_failure); - + /* We allocated space for this jump when we assigned to `fixup_alt_jump', in the `handle_alt' case below. */ STORE_JUMP (jump_past_alt, fixup_alt_jump, b - 1); @@ -2089,11 +2091,11 @@ regex_compile (pattern, size, syntax, bu as in `(ab)c(de)' -- the second group is #2. */ regnum_t this_group_regnum; - compile_stack.avail--; + compile_stack.avail--; begalt = bufp->buffer + COMPILE_STACK_TOP.begalt_offset; fixup_alt_jump = COMPILE_STACK_TOP.fixup_alt_jump - ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1 + ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1 : 0; laststart = bufp->buffer + COMPILE_STACK_TOP.laststart_offset; this_group_regnum = COMPILE_STACK_TOP.regnum; @@ -2108,7 +2110,7 @@ regex_compile (pattern, size, syntax, bu { unsigned char *inner_group_loc = bufp->buffer + COMPILE_STACK_TOP.inner_group_offset; - + *inner_group_loc = regnum - this_group_regnum; BUF_PUSH_3 (stop_memory, this_group_regnum, regnum - this_group_regnum); @@ -2137,10 +2139,10 @@ regex_compile (pattern, size, syntax, bu jump (put in below, which in turn will jump to the next (if any) alternative's such jump, etc.). The last such jump jumps to the correct final destination. A picture: - _____ _____ - | | | | - | v | v - a | b | c + _____ _____ + | | | | + | v | v + a | b | c If we are at `b', then fixup_alt_jump right now points to a three-byte space after `a'. We'll put in the jump, set @@ -2162,10 +2164,10 @@ regex_compile (pattern, size, syntax, bu break; - case '{': + case '{': /* If \{ is a literal. */ if (!(syntax & RE_INTERVALS) - /* If we're at `\{' and it's not the open-interval + /* If we're at `\{' and it's not the open-interval operator. */ || ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES)) || (p - 2 == pattern && p == pend)) @@ -2204,11 +2206,11 @@ regex_compile (pattern, size, syntax, bu { if (syntax & RE_NO_BK_BRACES) goto unfetch_interval; - else + else FREE_STACK_RETURN (REG_BADBR); } - if (!(syntax & RE_NO_BK_BRACES)) + if (!(syntax & RE_NO_BK_BRACES)) { if (c != '\\') FREE_STACK_RETURN (REG_EBRACE); @@ -2219,7 +2221,7 @@ regex_compile (pattern, size, syntax, bu { if (syntax & RE_NO_BK_BRACES) goto unfetch_interval; - else + else FREE_STACK_RETURN (REG_BADBR); } @@ -2255,7 +2257,7 @@ regex_compile (pattern, size, syntax, bu jump_n (The upper bound and `jump_n' are omitted if `upper_bound' is 1, though.) */ - else + else { /* If the upper bound is > 1, we need to insert more at the end of the loop. */ unsigned nbytes = 10 + (upper_bound > 1) * 10; @@ -2272,7 +2274,7 @@ regex_compile (pattern, size, syntax, bu lower_bound); b += 5; - /* Code to initialize the lower bound. Insert + /* Code to initialize the lower bound. Insert before the `succeed_n'. The `5' is the last two bytes of this `set_number_at', plus 3 bytes of the following `succeed_n'. */ @@ -2283,7 +2285,7 @@ regex_compile (pattern, size, syntax, bu { /* More than one repetition is allowed, so append a backward jump to the `succeed_n' that starts this interval. - + When we've reached this during matching, we'll have matched the interval once, so jump back only `upper_bound - 1' times. */ @@ -2301,7 +2303,7 @@ regex_compile (pattern, size, syntax, bu so everything is getting moved up by 5. Conclusion: (b - 2) - (laststart + 3) + 5, i.e., b - laststart. - + We insert this at the beginning of the loop so that if we fail during matching, we'll reinitialize the bounds. */ @@ -2322,7 +2324,7 @@ regex_compile (pattern, size, syntax, bu beg_interval = NULL; /* normal_char and normal_backslash need `c'. */ - PATFETCH (c); + PATFETCH (c); if (!(syntax & RE_NO_BK_BRACES)) { @@ -2338,7 +2340,7 @@ regex_compile (pattern, size, syntax, bu BUF_PUSH (at_dot); break; - case 's': + case 's': laststart = b; PATFETCH (c); BUF_PUSH_2 (syntaxspec, syntax_spec_code[c]); @@ -2429,11 +2431,11 @@ regex_compile (pattern, size, syntax, bu /* Expects the character in `c'. */ normal_char: /* If no exactn currently being built. */ - if (!pending_exact + if (!pending_exact /* If last exactn not at current position. */ || pending_exact + *pending_exact + 1 != b - + /* We have only one byte following the exactn for the count. */ || *pending_exact == (1 << BYTEWIDTH) - 1 @@ -2448,26 +2450,26 @@ regex_compile (pattern, size, syntax, bu : (p[0] == '\\' && p[1] == '{')))) { /* Start building a new exactn. */ - + laststart = b; BUF_PUSH_2 (exactn, 0); pending_exact = b - 1; } - + BUF_PUSH (c); (*pending_exact)++; break; } /* switch (c) */ } /* while p != pend */ - + /* Through the pattern now. */ - + if (fixup_alt_jump) STORE_JUMP (jump_past_alt, fixup_alt_jump, b); - if (!COMPILE_STACK_EMPTY) + if (!COMPILE_STACK_EMPTY) FREE_STACK_RETURN (REG_EPAREN); free (compile_stack.stack); @@ -2500,7 +2502,7 @@ regex_compile (pattern, size, syntax, bu #ifdef emacs if (! fail_stack.stack) fail_stack.stack - = (fail_stack_elt_t *) xmalloc (fail_stack.size + = (fail_stack_elt_t *) xmalloc (fail_stack.size * sizeof (fail_stack_elt_t)); else fail_stack.stack @@ -2510,7 +2512,7 @@ regex_compile (pattern, size, syntax, bu #else /* not emacs */ if (! fail_stack.stack) fail_stack.stack - = (fail_stack_elt_t *) malloc (fail_stack.size + = (fail_stack_elt_t *) malloc (fail_stack.size * sizeof (fail_stack_elt_t)); else fail_stack.stack @@ -2573,14 +2575,14 @@ insert_op1 (op, loc, arg, end) re_opcode_t op; unsigned char *loc; int arg; - unsigned char *end; + unsigned char *end; { register unsigned char *pfrom = end; register unsigned char *pto = end + 3; while (pfrom != loc) *--pto = *--pfrom; - + store_op1 (op, loc, arg); } @@ -2592,14 +2594,14 @@ insert_op2 (op, loc, arg1, arg2, end) re_opcode_t op; unsigned char *loc; int arg1, arg2; - unsigned char *end; + unsigned char *end; { register unsigned char *pfrom = end; register unsigned char *pto = end + 5; while (pfrom != loc) *--pto = *--pfrom; - + store_op2 (op, loc, arg1, arg2); } @@ -2615,7 +2617,7 @@ at_begline_loc_p (pattern, p, syntax) { const char *prev = p - 2; boolean prev_prev_backslash = prev > pattern && prev[-1] == '\\'; - + return /* After a subexpression? */ (*prev == '(' && (syntax & RE_NO_BK_PARENS || prev_prev_backslash)) @@ -2635,7 +2637,7 @@ at_endline_loc_p (p, pend, syntax) const char *next = p; boolean next_backslash = *next == '\\'; const char *next_next = p + 1 < pend ? p + 1 : NULL; - + return /* Before a subexpression? */ (syntax & RE_NO_BK_PARENS ? *next == ')' @@ -2646,7 +2648,7 @@ at_endline_loc_p (p, pend, syntax) } -/* Returns true if REGNUM is in one of COMPILE_STACK's elements and +/* Returns true if REGNUM is in one of COMPILE_STACK's elements and false if it's not. */ static boolean @@ -2656,8 +2658,8 @@ group_in_compile_stack (compile_stack, r { int this_element; - for (this_element = compile_stack.avail - 1; - this_element >= 0; + for (this_element = compile_stack.avail - 1; + this_element >= 0; this_element--) if (compile_stack.stack[this_element].regnum == regnum) return true; @@ -2671,9 +2673,9 @@ group_in_compile_stack (compile_stack, r starting character is in `P[-2]'. (`P[-1]' is the character `-'.) Then we set the translation of all bits between the starting and ending characters (inclusive) in the compiled pattern B. - + Return an error code. - + We use these short variable names so we can use the same macros as `regex_compile' itself. */ @@ -2688,7 +2690,7 @@ compile_range (p_ptr, pend, translate, s const char *p = *p_ptr; int range_start, range_end; - + if (p == pend) return REG_ERANGE; @@ -2697,7 +2699,7 @@ compile_range (p_ptr, pend, translate, s is set, the range endpoints will be negative if we fetch using a signed char *. - We also want to fetch the endpoints without translating them; the + We also want to fetch the endpoints without translating them; the appropriate translation is done in the bit-setting loop below. */ /* The SVR4 compiler on the 3B2 had trouble with unsigned const char *. */ range_start = ((const unsigned char *) p)[-2]; @@ -2719,7 +2721,7 @@ compile_range (p_ptr, pend, translate, s { SET_LIST_BIT (TRANSLATE (this_char)); } - + return REG_NOERROR; } @@ -2730,7 +2732,7 @@ compile_range (p_ptr, pend, translate, s The caller must supply the address of a (1 << BYTEWIDTH)-byte data area as BUFP->fastmap. - + We set the `fastmap', `fastmap_accurate', and `can_be_null' fields in the pattern buffer. @@ -2749,7 +2751,7 @@ re_compile_fastmap (bufp) #endif /* We don't push any register information onto the failure stack. */ unsigned num_regs = 0; - + register char *fastmap = bufp->fastmap; unsigned char *pattern = bufp->buffer; unsigned long size = bufp->used; @@ -2766,27 +2768,27 @@ re_compile_fastmap (bufp) boolean succeed_n_p = false; assert (fastmap != NULL && p != NULL); - + INIT_FAIL_STACK (); bzero (fastmap, 1 << BYTEWIDTH); /* Assume nothing's valid. */ bufp->fastmap_accurate = 1; /* It will be when we're done. */ bufp->can_be_null = 0; - + while (p != pend || !FAIL_STACK_EMPTY ()) { if (p == pend) { bufp->can_be_null |= path_can_be_null; - + /* Reset for next path. */ path_can_be_null = true; - + p = fail_stack.stack[--fail_stack.avail]; } /* We should never be about to go beyond the end of the pattern. */ assert (p < pend); - + #ifdef SWITCH_ENUM_BUG switch ((int) ((re_opcode_t) *p++)) #else @@ -2913,10 +2915,10 @@ re_compile_fastmap (bufp) case jump_past_alt: case dummy_failure_jump: EXTRACT_NUMBER_AND_INCR (j, p); - p += j; + p += j; if (j > 0) continue; - + /* Jump backward implies we just went through the body of a loop and matched nothing. Opcode jumped to should be `on_failure_jump' or `succeed_n'. Just treat it like an @@ -2928,10 +2930,10 @@ re_compile_fastmap (bufp) p++; EXTRACT_NUMBER_AND_INCR (j, p); - p += j; - + p += j; + /* If what's on the stack is where we are now, pop it. */ - if (!FAIL_STACK_EMPTY () + if (!FAIL_STACK_EMPTY () && fail_stack.stack[fail_stack.avail - 1] == p) fail_stack.avail--; @@ -2969,7 +2971,7 @@ re_compile_fastmap (bufp) case succeed_n: /* Get to the number of times to succeed. */ - p += 2; + p += 2; /* Increment p past the n for when k != 0. */ EXTRACT_NUMBER_AND_INCR (k, p); @@ -3060,7 +3062,7 @@ re_search (bufp, string, size, startpos, int size, startpos, range; struct re_registers *regs; { - return re_search_2 (bufp, NULL, 0, string, size, startpos, range, + return re_search_2 (bufp, NULL, 0, string, size, startpos, range, regs, size); } @@ -3068,17 +3070,17 @@ re_search (bufp, string, size, startpos, /* Using the compiled pattern in BUFP->buffer, first tries to match the virtual concatenation of STRING1 and STRING2, starting first at index STARTPOS, then at STARTPOS + 1, and so on. - + STRING1 and STRING2 have length SIZE1 and SIZE2, respectively. - + RANGE is how far to scan while trying to match. RANGE = 0 means try only at STARTPOS; in general, the last start tried is STARTPOS + RANGE. - + In REGS, return the indices of the virtual concatenation of STRING1 and STRING2 that matched the entire BUFP->buffer and its contained subexpressions. - + Do not consider matching one past the index STOP in the virtual concatenation of STRING1 and STRING2. @@ -3105,7 +3107,7 @@ re_search_2 (bufp, string1, size1, strin /* Check for out-of-range STARTPOS. */ if (startpos < 0 || startpos > total_size) return -1; - + /* Fix up RANGE if it might eventually take us outside the virtual concatenation of STRING1 and STRING2. */ if (endpos < -1) @@ -3127,10 +3129,10 @@ re_search_2 (bufp, string1, size1, strin if (fastmap && !bufp->fastmap_accurate) if (re_compile_fastmap (bufp) == -2) return -2; - + /* Loop through the string, looking for a place to start matching. */ for (;;) - { + { /* If a fastmap is supplied, skip quickly over characters that cannot be the start of a match. If the pattern can match the null string, however, we don't need to skip characters; we want @@ -3147,7 +3149,7 @@ re_search_2 (bufp, string1, size1, strin lim = range - (size1 - startpos); d = (startpos >= size1 ? string2 - size1 : string1) + startpos; - + /* Written out as an if-else to avoid testing `translate' inside the loop. */ if (translate) @@ -3164,7 +3166,7 @@ re_search_2 (bufp, string1, size1, strin else /* Searching backwards. */ { register char c = (size1 == 0 || startpos >= size1 - ? string2[startpos - size1] + ? string2[startpos - size1] : string1[startpos]); if (!fastmap[(unsigned char) TRANSLATE (c)]) @@ -3187,21 +3189,21 @@ re_search_2 (bufp, string1, size1, strin if (val >= 0) return startpos; - + if (val == -2) return -2; advance: - if (!range) + if (!range) break; - else if (range > 0) + else if (range > 0) { - range--; + range--; startpos++; } else { - range++; + range++; startpos--; } } @@ -3243,7 +3245,7 @@ static boolean alt_match_null_string_p ( /* Test if at very beginning or at very end of the virtual concatenation of `string1' and `string2'. If only one string, it's `string2'. */ #define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2) -#define AT_STRINGS_END(d) ((d) == end2) +#define AT_STRINGS_END(d) ((d) == end2) /* Test if D points to a character which is word-constituent. We have @@ -3321,7 +3323,7 @@ re_match (bufp, string, size, pos, regs) the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1 and SIZE2, respectively). We start matching at POS, and stop matching at STOP. - + If REGS is non-null and the `no_sub' field of BUFP is nonzero, we store offsets for the substring each group matched in REGS. See the documentation for exactly how many groups we fill. @@ -3369,7 +3371,7 @@ re_match_2_internal (bufp, string1, size /* Where we are in the data, and the end of the current string. */ const char *d, *dend; - + /* Where we are in the pattern, and the end of the pattern. */ unsigned char *p = bufp->buffer; register unsigned char *pend = p + bufp->used; @@ -3402,7 +3404,7 @@ re_match_2_internal (bufp, string1, size return, for use in backreferences. The number here includes an element for register zero. */ unsigned num_regs = bufp->re_nsub + 1; - + /* The currently active registers. */ unsigned lowest_active_reg = NO_LOWEST_ACTIVE_REG; unsigned highest_active_reg = NO_HIGHEST_ACTIVE_REG; @@ -3434,18 +3436,18 @@ re_match_2_internal (bufp, string1, size subexpression. These two fields get reset each time through any loop their register is in. */ #ifdef MATCH_MAY_ALLOCATE /* otherwise, this is global. */ - register_info_type *reg_info; + register_info_type *reg_info; #endif /* The following record the register info as found in the above - variables when we find a match better than any we've seen before. + variables when we find a match better than any we've seen before. This happens as we backtrack through the failure points, which in turn happens only if we have not yet matched the entire string. */ unsigned best_regs_set = false; #ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ const char **best_regstart, **best_regend; #endif - + /* Logically, this is `best_regend[0]'. But we don't want to have to allocate space for that if we're not allocating space for anything else (see below). Also, we never need info about register 0 for @@ -3464,13 +3466,13 @@ re_match_2_internal (bufp, string1, size #ifdef DEBUG /* Counts the total number of registers pushed. */ - unsigned num_regs_pushed = 0; + unsigned num_regs_pushed = 0; #endif DEBUG_PRINT1 ("\n\nEntering re_match_2.\n"); - + INIT_FAIL_STACK (); - + #ifdef MATCH_MAY_ALLOCATE /* Do not bother to initialize all the register variables if there are no groups in the pattern, as it takes a fair amount of time. If @@ -3489,8 +3491,8 @@ re_match_2_internal (bufp, string1, size reg_dummy = REGEX_TALLOC (num_regs, const char *); reg_info_dummy = REGEX_TALLOC (num_regs, register_info_type); - if (!(regstart && regend && old_regstart && old_regend && reg_info - && best_regstart && best_regend && reg_dummy && reg_info_dummy)) + if (!(regstart && regend && old_regstart && old_regend && reg_info + && best_regstart && best_regend && reg_dummy && reg_info_dummy)) { FREE_VARIABLES (); return -2; @@ -3514,21 +3516,21 @@ re_match_2_internal (bufp, string1, size FREE_VARIABLES (); return -1; } - + /* Initialize subexpression text positions to -1 to mark ones that no start_memory/stop_memory has been seen for. Also initialize the register information struct. */ for (mcnt = 1; mcnt < num_regs; mcnt++) { - regstart[mcnt] = regend[mcnt] + regstart[mcnt] = regend[mcnt] = old_regstart[mcnt] = old_regend[mcnt] = REG_UNSET_VALUE; - + REG_MATCH_NULL_STRING_P (reg_info[mcnt]) = MATCH_NULL_UNSET_VALUE; IS_ACTIVE (reg_info[mcnt]) = 0; MATCHED_SOMETHING (reg_info[mcnt]) = 0; EVER_MATCHED_SOMETHING (reg_info[mcnt]) = 0; } - + /* We move `string1' into `string2' if the latter's empty -- but not if `string1' is null. */ if (size2 == 0 && string1 != NULL) @@ -3553,7 +3555,7 @@ re_match_2_internal (bufp, string1, size end_match_2 = string2 + stop - size1; } - /* `p' scans through the pattern as `d' scans through the data. + /* `p' scans through the pattern as `d' scans through the data. `dend' is the end of the input string that `d' points within. `d' is advanced into the following input string whenever necessary, but this happens before fetching; therefore, at the beginning of the @@ -3575,7 +3577,7 @@ re_match_2_internal (bufp, string1, size DEBUG_PRINT1 ("The string to match is: `"); DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2); DEBUG_PRINT1 ("'\n"); - + /* This loops over pattern commands. It exits by returning from the function if the match is complete, or it drops through if the match fails at this starting point in the input data. */ @@ -3586,14 +3588,14 @@ re_match_2_internal (bufp, string1, size if (p == pend) { /* End of pattern means we might have succeeded. */ DEBUG_PRINT1 ("end of pattern ... "); - + /* If we haven't matched the entire string, and we want the longest match, try backtracking. */ if (d != end_match_2) { /* 1 if this match ends in the same string (string1 or string2) as the best previous match. */ - boolean same_str_p = (FIRST_STRING_P (match_end) + boolean same_str_p = (FIRST_STRING_P (match_end) == MATCHING_IN_FIRST_STRING); /* 1 if this match is the best seen so far. */ boolean best_match_p; @@ -3606,7 +3608,7 @@ re_match_2_internal (bufp, string1, size best_match_p = !MATCHING_IN_FIRST_STRING; DEBUG_PRINT1 ("backtracking.\n"); - + if (!FAIL_STACK_EMPTY ()) { /* More failure points to try. */ @@ -3615,16 +3617,16 @@ re_match_2_internal (bufp, string1, size { best_regs_set = true; match_end = d; - + DEBUG_PRINT1 ("\nSAVING match as best so far.\n"); - + for (mcnt = 1; mcnt < num_regs; mcnt++) { best_regstart[mcnt] = regstart[mcnt]; best_regend[mcnt] = regend[mcnt]; } } - goto fail; + goto fail; } /* If no failure points, don't restore garbage. And if @@ -3639,7 +3641,7 @@ re_match_2_internal (bufp, string1, size strings `x-' and `y-z-', if the two strings are not consecutive in memory. */ DEBUG_PRINT1 ("Restoring best registers.\n"); - + d = match_end; dend = ((d >= string1 && d <= end1) ? end_match_1 : end_match_2); @@ -3699,7 +3701,7 @@ re_match_2_internal (bufp, string1, size ? ((regoff_t) (d - string1)) : ((regoff_t) (d - string2 + size1))); } - + /* Go through the first `min (num_regs, regs->num_regs)' registers, since that is all we initialized. */ for (mcnt = 1; mcnt < MIN (num_regs, regs->num_regs); mcnt++) @@ -3714,7 +3716,7 @@ re_match_2_internal (bufp, string1, size = (regoff_t) POINTER_TO_OFFSET (regend[mcnt]); } } - + /* If the regs structure we return has more elements than were in the pattern, set the extra elements to -1. If we (re)allocated the registers, this is the case, @@ -3730,8 +3732,8 @@ re_match_2_internal (bufp, string1, size nfailure_points_pushed - nfailure_points_popped); DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed); - mcnt = d - pos - (MATCHING_IN_FIRST_STRING - ? string1 + mcnt = d - pos - (MATCHING_IN_FIRST_STRING + ? string1 : string2 - size1); DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt); @@ -3821,7 +3823,7 @@ re_match_2_internal (bufp, string1, size p += 1 + *p; if (!not) goto fail; - + SET_REGS_MATCHED (); d++; break; @@ -3838,9 +3840,9 @@ re_match_2_internal (bufp, string1, size /* Find out if this group can match the empty string. */ p1 = p; /* To send to group_match_null_string_p. */ - + if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE) - REG_MATCH_NULL_STRING_P (reg_info[*p]) + REG_MATCH_NULL_STRING_P (reg_info[*p]) = group_match_null_string_p (&p1, pend, reg_info); /* Save the position in the string where we were the last time @@ -3851,7 +3853,7 @@ re_match_2_internal (bufp, string1, size old_regstart[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) ? REG_UNSET (regstart[*p]) ? d : regstart[*p] : regstart[*p]; - DEBUG_PRINT2 (" old_regstart: %d\n", + DEBUG_PRINT2 (" old_regstart: %d\n", POINTER_TO_OFFSET (old_regstart[*p])); regstart[*p] = d; @@ -3859,10 +3861,10 @@ re_match_2_internal (bufp, string1, size IS_ACTIVE (reg_info[*p]) = 1; MATCHED_SOMETHING (reg_info[*p]) = 0; - + /* This is the new highest active register. */ highest_active_reg = *p; - + /* If nothing was active before, this is the new lowest active register. */ if (lowest_active_reg == NO_LOWEST_ACTIVE_REG) @@ -3879,7 +3881,7 @@ re_match_2_internal (bufp, string1, size number, and the number of inner groups. */ case stop_memory: DEBUG_PRINT3 ("EXECUTING stop_memory %d (%d):\n", *p, p[1]); - + /* We need to save the string position the last time we were at this close-group operator in case the group is operated upon by a repetition operator, e.g., with `((a*)*(b*)*)*' @@ -3888,7 +3890,7 @@ re_match_2_internal (bufp, string1, size old_regend[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) ? REG_UNSET (regend[*p]) ? d : regend[*p] : regend[*p]; - DEBUG_PRINT2 (" old_regend: %d\n", + DEBUG_PRINT2 (" old_regend: %d\n", POINTER_TO_OFFSET (old_regend[*p])); regend[*p] = d; @@ -3896,7 +3898,7 @@ re_match_2_internal (bufp, string1, size /* This register isn't active anymore. */ IS_ACTIVE (reg_info[*p]) = 0; - + /* If this was the only register active, nothing is active anymore. */ if (lowest_active_reg == highest_active_reg) @@ -3912,7 +3914,7 @@ re_match_2_internal (bufp, string1, size unsigned char r = *p - 1; while (r > 0 && !IS_ACTIVE (reg_info[r])) r--; - + /* If we end up at register zero, that means that we saved the registers as the result of an `on_failure_jump', not a `start_memory', and we jumped to past the innermost @@ -3928,7 +3930,7 @@ re_match_2_internal (bufp, string1, size else highest_active_reg = r; } - + /* If just failed to match something this time around with a group that's operated on by a repetition operator, try to force exit from the ``loop'', and restore the register @@ -3936,10 +3938,10 @@ re_match_2_internal (bufp, string1, size last match. */ if ((!MATCHED_SOMETHING (reg_info[*p]) || just_past_start_mem == p - 1) - && (p + 2) < pend) + && (p + 2) < pend) { boolean is_a_jump_n = false; - + p1 = p + 2; mcnt = 0; switch ((re_opcode_t) *p1++) @@ -3954,12 +3956,12 @@ re_match_2_internal (bufp, string1, size if (is_a_jump_n) p1 += 2; break; - + default: /* do nothing */ ; } p1 += mcnt; - + /* If the next operation is a jump backwards in the pattern to an on_failure_jump right before the start_memory corresponding to this stop_memory, exit from the loop @@ -3973,17 +3975,17 @@ re_match_2_internal (bufp, string1, size failed match, e.g., with `(a*)*b' against `ab' for regstart[1], and, e.g., with `((a*)*(b*)*)*' against `aba' for regend[3]. - + Also restore the registers for inner groups for, e.g., `((a*)(b*))*' against `aba' (register 3 would otherwise get trashed). */ - + if (EVER_MATCHED_SOMETHING (reg_info[*p])) { - unsigned r; - + unsigned r; + EVER_MATCHED_SOMETHING (reg_info[*p]) = 0; - + /* Restore this and inner groups' (if any) registers. */ for (r = *p; r < *p + *(p + 1); r++) { @@ -3992,7 +3994,7 @@ re_match_2_internal (bufp, string1, size /* xx why this test? */ if ((int) old_regend[r] >= (int) regstart[r]) regend[r] = old_regend[r]; - } + } } p1++; EXTRACT_NUMBER_AND_INCR (mcnt, p1); @@ -4001,7 +4003,7 @@ re_match_2_internal (bufp, string1, size goto fail; } } - + /* Move past the register number and the inner group count. */ p += 2; break; @@ -4018,16 +4020,16 @@ re_match_2_internal (bufp, string1, size /* Can't back reference a group which we've never matched. */ if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno])) goto fail; - + /* Where in input to try to start matching. */ d2 = regstart[regno]; - + /* Where to stop matching; if both the place to start and the place to stop matching are in the same string, then set to the place to stop, otherwise, for now have to use the end of the first string. */ - dend2 = ((FIRST_STRING_P (regstart[regno]) + dend2 = ((FIRST_STRING_P (regstart[regno]) == FIRST_STRING_P (regend[regno])) ? regend[regno] : end_match_1); for (;;) @@ -4051,16 +4053,16 @@ re_match_2_internal (bufp, string1, size /* How many characters left in this segment to match. */ mcnt = dend - d; - + /* Want how many consecutive characters we can match in one shot, so, if necessary, adjust the count. */ if (mcnt > dend2 - d2) mcnt = dend2 - d2; - + /* Compare that many; failure if mismatch, else move past them. */ - if (translate - ? bcmp_translate (d, d2, mcnt, translate) + if (translate + ? bcmp_translate (d, d2, mcnt, translate) : bcmp (d, d2, mcnt)) goto fail; d += mcnt, d2 += mcnt; @@ -4074,7 +4076,7 @@ re_match_2_internal (bufp, string1, size `newline_anchor' is set, after newlines. */ case begline: DEBUG_PRINT1 ("EXECUTING begline.\n"); - + if (AT_STRINGS_BEG (d)) { if (!bufp->not_bol) break; @@ -4095,7 +4097,7 @@ re_match_2_internal (bufp, string1, size { if (!bufp->not_eol) break; } - + /* We have to ``prefetch'' the next character. */ else if ((d == end1 ? *string2 : *d) == '\n' && bufp->newline_anchor) @@ -4129,7 +4131,7 @@ re_match_2_internal (bufp, string1, size then the . fails against the \n. But the next thing we want to do is match the \n against the \n; if we restored the string value, we would be back at the foo. - + Because this is used only in specific cases, we don't need to check all the things that `on_failure_jump' does, to make sure the right things get saved on the stack. Hence we don't @@ -4139,7 +4141,7 @@ re_match_2_internal (bufp, string1, size case; that seems worse than this. */ case on_failure_keep_string_jump: DEBUG_PRINT1 ("EXECUTING on_failure_keep_string_jump"); - + EXTRACT_NUMBER_AND_INCR (mcnt, p); DEBUG_PRINT3 (" %d (to 0x%x):\n", mcnt, p + mcnt); @@ -4148,7 +4150,7 @@ re_match_2_internal (bufp, string1, size /* Uses of on_failure_jump: - + Each alternative starts with an on_failure_jump that points to the beginning of the next alternative. Each alternative except the last ends with a jump that in effect jumps past @@ -4214,7 +4216,7 @@ re_match_2_internal (bufp, string1, size would have to backtrack because of (as in, e.g., `a*a') then we can change to pop_failure_jump, because we'll never have to backtrack. - + This is not true in the case of alternatives: in `(a|ab)*' we do need to backtrack to the `ab' alternative (e.g., if the string was `ab'). But instead of trying to @@ -4240,7 +4242,7 @@ re_match_2_internal (bufp, string1, size p1 = p + mcnt; /* p1[0] ... p1[2] are the `on_failure_jump' corresponding - to the `maybe_finalize_jump' of this case. Examine what + to the `maybe_finalize_jump' of this case. Examine what follows. */ /* If we're at the end of the pattern, we can change. */ @@ -4266,12 +4268,12 @@ re_match_2_internal (bufp, string1, size DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", c, p1[5]); } - + else if ((re_opcode_t) p1[3] == charset || (re_opcode_t) p1[3] == charset_not) { int not = (re_opcode_t) p1[3] == charset_not; - + if (c < (unsigned char) (p1[4] * BYTEWIDTH) && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) not = !not; @@ -4301,7 +4303,7 @@ re_match_2_internal (bufp, string1, size DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", c, p1[5]); } - + else if ((re_opcode_t) p1[3] == charset_not) { int idx; @@ -4372,7 +4374,7 @@ re_match_2_internal (bufp, string1, size } /* Note fall through. */ - + /* Unconditionally jump (without popping any failure points). */ case jump: unconditional_jump: @@ -4382,7 +4384,7 @@ re_match_2_internal (bufp, string1, size DEBUG_PRINT2 ("(to 0x%x).\n", p); break; - + /* We need this opcode so we can detect where alternatives end in `group_match_null_string_p' et al. */ case jump_past_alt: @@ -4417,7 +4419,7 @@ re_match_2_internal (bufp, string1, size /* Have to succeed matching what follows at least n times. After that, handle like `on_failure_jump'. */ - case succeed_n: + case succeed_n: EXTRACT_NUMBER (mcnt, p + 2); DEBUG_PRINT2 ("EXECUTING succeed_n %d.\n", mcnt); @@ -4438,8 +4440,8 @@ re_match_2_internal (bufp, string1, size goto on_failure; } break; - - case jump_n: + + case jump_n: EXTRACT_NUMBER (mcnt, p + 2); DEBUG_PRINT2 ("EXECUTING jump_n %d.\n", mcnt); @@ -4448,13 +4450,13 @@ re_match_2_internal (bufp, string1, size { mcnt--; STORE_NUMBER (p + 2, mcnt); - goto unconditional_jump; + goto unconditional_jump; } /* If don't have to jump any more, skip over the rest of command. */ - else - p += 4; + else + p += 4; break; - + case set_number_at: { DEBUG_PRINT1 ("EXECUTING set_number_at.\n"); @@ -4498,13 +4500,13 @@ re_match_2_internal (bufp, string1, size if (PTR_CHAR_POS ((unsigned char *) d) >= point) goto fail; break; - + case at_dot: DEBUG_PRINT1 ("EXECUTING at_dot.\n"); if (PTR_CHAR_POS ((unsigned char *) d) != point) goto fail; break; - + case after_dot: DEBUG_PRINT1 ("EXECUTING after_dot.\n"); if (PTR_CHAR_POS ((unsigned char *) d) <= point) @@ -4561,7 +4563,7 @@ re_match_2_internal (bufp, string1, size SET_REGS_MATCHED (); d++; break; - + case notwordchar: DEBUG_PRINT1 ("EXECUTING non-Emacs notwordchar.\n"); PREFETCH (); @@ -4571,7 +4573,7 @@ re_match_2_internal (bufp, string1, size d++; break; #endif /* not emacs */ - + default: abort (); } @@ -4596,7 +4598,7 @@ re_match_2_internal (bufp, string1, size if (p < pend) { boolean is_a_jump_n = false; - + /* If failed to a backwards jump that's part of a repetition loop, need to pop this failure point and use the next one. */ switch ((re_opcode_t) *p) @@ -4608,7 +4610,7 @@ re_match_2_internal (bufp, string1, size case jump: p1 = p + 1; EXTRACT_NUMBER_AND_INCR (mcnt, p1); - p1 += mcnt; + p1 += mcnt; if ((is_a_jump_n && (re_opcode_t) *p1 == succeed_n) || (!is_a_jump_n @@ -4639,10 +4641,10 @@ re_match_2_internal (bufp, string1, size /* We are passed P pointing to a register number after a start_memory. - + Return true if the pattern up to the corresponding stop_memory can match the empty string, and false otherwise. - + If we find the matching stop_memory, sets P to point to one past its number. Otherwise, sets P to an undefined byte less than or equal to END. @@ -4656,20 +4658,20 @@ group_match_null_string_p (p, end, reg_i int mcnt; /* Point to after the args to the start_memory. */ unsigned char *p1 = *p + 2; - + while (p1 < end) { /* Skip over opcodes that can match nothing, and return true or false, as appropriate, when we get to one that can't, or to the matching stop_memory. */ - + switch ((re_opcode_t) *p1) { /* Could be either a loop or a series of alternatives. */ case on_failure_jump: p1++; EXTRACT_NUMBER_AND_INCR (mcnt, p1); - + /* If the next operation is not a jump backwards in the pattern. */ @@ -4683,7 +4685,7 @@ group_match_null_string_p (p, end, reg_i /on_failure_jump/0/6/exactn/1/a/jump_past_alt/0/6 /on_failure_jump/0/6/exactn/1/b/jump_past_alt/0/3 - /exactn/1/c + /exactn/1/c So, we have to first go through the first (n-1) alternatives and then deal with the last one separately. */ @@ -4699,19 +4701,19 @@ group_match_null_string_p (p, end, reg_i is, including the ending `jump_past_alt' and its number. */ - if (!alt_match_null_string_p (p1, p1 + mcnt - 3, + if (!alt_match_null_string_p (p1, p1 + mcnt - 3, reg_info)) return false; /* Move to right after this alternative, including the jump_past_alt. */ - p1 += mcnt; + p1 += mcnt; /* Break if it's the beginning of an n-th alternative that doesn't begin with an on_failure_jump. */ if ((re_opcode_t) *p1 != on_failure_jump) break; - + /* Still have to check that it's not an n-th alternative that starts with an on_failure_jump. */ p1++; @@ -4736,14 +4738,14 @@ group_match_null_string_p (p, end, reg_i } /* if mcnt > 0 */ break; - + case stop_memory: assert (p1[1] == **p); *p = p1 + 2; return true; - - default: + + default: if (!common_op_match_null_string_p (&p1, end, reg_info)) return false; } @@ -4756,7 +4758,7 @@ group_match_null_string_p (p, end, reg_i /* Similar to group_match_null_string_p, but doesn't deal with alternatives: It expects P to be the first byte of a single alternative and END one byte past the last. The alternative can contain groups. */ - + static boolean alt_match_null_string_p (p, end, reg_info) unsigned char *p, *end; @@ -4764,12 +4766,12 @@ alt_match_null_string_p (p, end, reg_inf { int mcnt; unsigned char *p1 = p; - + while (p1 < end) { - /* Skip over opcodes that can match nothing, and break when we get + /* Skip over opcodes that can match nothing, and break when we get to one that can't. */ - + switch ((re_opcode_t) *p1) { /* It's a loop. */ @@ -4778,8 +4780,8 @@ alt_match_null_string_p (p, end, reg_inf EXTRACT_NUMBER_AND_INCR (mcnt, p1); p1 += mcnt; break; - - default: + + default: if (!common_op_match_null_string_p (&p1, end, reg_info)) return false; } @@ -4790,8 +4792,8 @@ alt_match_null_string_p (p, end, reg_inf /* Deals with the ops common to group_match_null_string_p and - alt_match_null_string_p. - + alt_match_null_string_p. + Sets P to one after the op and its arguments, if any. */ static boolean @@ -4826,7 +4828,7 @@ common_op_match_null_string_p (p, end, r reg_no = *p1; assert (reg_no > 0 && reg_no <= MAX_REGNUM); ret = group_match_null_string_p (&p1, end, reg_info); - + /* Have to set this here in case we're checking a group which contains a group and a back reference to it. */ @@ -4836,7 +4838,7 @@ common_op_match_null_string_p (p, end, r if (!ret) return false; break; - + /* If this is an optimized succeed_n for zero times, make the jump. */ case jump: EXTRACT_NUMBER_AND_INCR (mcnt, p1); @@ -4848,7 +4850,7 @@ common_op_match_null_string_p (p, end, r case succeed_n: /* Get to the number of times to succeed. */ - p1 += 2; + p1 += 2; EXTRACT_NUMBER_AND_INCR (mcnt, p1); if (mcnt == 0) @@ -4861,7 +4863,7 @@ common_op_match_null_string_p (p, end, r return false; break; - case duplicate: + case duplicate: if (!REG_MATCH_NULL_STRING_P (reg_info[*p1])) return false; break; @@ -4881,7 +4883,7 @@ common_op_match_null_string_p (p, end, r /* Return zero if TRANSLATE[S1] and TRANSLATE[S2] are identical for LEN bytes; nonzero otherwise. */ - + static int bcmp_translate (s1, s2, len, translate) unsigned char *s1, *s2; @@ -4902,10 +4904,10 @@ bcmp_translate (s1, s2, len, translate) /* re_compile_pattern is the GNU regular expression compiler: it compiles PATTERN (of length SIZE) and puts the result in BUFP. Returns 0 if the pattern was valid, otherwise an error string. - + Assumes the `allocated' (and perhaps `buffer') and `translate' fields are set in BUFP on entry. - + We call regex_compile to do the actual compilation. */ const char * @@ -4915,23 +4917,23 @@ re_compile_pattern (pattern, length, buf struct re_pattern_buffer *bufp; { reg_errcode_t ret; - + /* GNU code is written to assume at least RE_NREGS registers will be set (and at least one extra will be -1). */ bufp->regs_allocated = REGS_UNALLOCATED; - + /* And GNU code determines whether or not to get register information by passing null for the REGS argument to re_match, etc., not by setting no_sub. */ bufp->no_sub = 0; - + /* Match anchors at newline. */ bufp->newline_anchor = 1; - + ret = regex_compile (pattern, length, re_syntax_options, bufp); return re_error_msg[(int) ret]; -} +} /* Entry points compatible with 4.2 BSD regex library. We don't define them unless specifically requested. */ @@ -4946,7 +4948,7 @@ re_comp (s) const char *s; { reg_errcode_t ret; - + if (!s) { if (!re_comp_buf.buffer) @@ -4973,7 +4975,7 @@ re_comp (s) re_comp_buf.newline_anchor = 1; ret = regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf); - + /* Yes, we're discarding `const' here. */ return (char *) re_error_msg[(int) ret]; } @@ -5030,7 +5032,7 @@ re_exec (s) int regcomp (preg, pattern, cflags) regex_t *preg; - const char *pattern; + const char *pattern; int cflags; { reg_errcode_t ret; @@ -5042,17 +5044,17 @@ regcomp (preg, pattern, cflags) preg->buffer = 0; preg->allocated = 0; preg->used = 0; - + /* Don't bother to use a fastmap when searching. This simplifies the REG_NEWLINE case: if we used a fastmap, we'd have to put all the characters after newlines into the fastmap. This way, we just try every character. */ preg->fastmap = 0; - + if (cflags & REG_ICASE) { unsigned i; - + preg->translate = (char *) malloc (CHAR_SET_SIZE); if (preg->translate == NULL) return (int) REG_ESPACE; @@ -5077,38 +5079,38 @@ regcomp (preg, pattern, cflags) preg->no_sub = !!(cflags & REG_NOSUB); - /* POSIX says a null character in the pattern terminates it, so we + /* POSIX says a null character in the pattern terminates it, so we can use strlen here in compiling the pattern. */ ret = regex_compile (pattern, strlen (pattern), syntax, preg); - + /* POSIX doesn't distinguish between an unmatched open-group and an unmatched close-group: both are REG_EPAREN. */ if (ret == REG_ERPAREN) ret = REG_EPAREN; - + return (int) ret; } /* regexec searches for a given pattern, specified by PREG, in the string STRING. - + If NMATCH is zero or REG_NOSUB was set in the cflags argument to `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at least NMATCH elements, and we set them to the offsets of the corresponding matched substrings. - + EFLAGS specifies `execution flags' which affect matching: if REG_NOTBOL is set, then ^ does not match at the beginning of the string; if REG_NOTEOL is set, then $ does not match at the end. - + We return 0 if we find a match and REG_NOMATCH if not. */ int regexec (preg, string, nmatch, pmatch, eflags) const regex_t *preg; - const char *string; - size_t nmatch; - regmatch_t pmatch[]; + const char *string; + size_t nmatch; + regmatch_t pmatch[]; int eflags; { int ret; @@ -5118,15 +5120,15 @@ regexec (preg, string, nmatch, pmatch, e boolean want_reg_info = !preg->no_sub && nmatch > 0; private_preg = *preg; - + private_preg.not_bol = !!(eflags & REG_NOTBOL); private_preg.not_eol = !!(eflags & REG_NOTEOL); - + /* The user has told us exactly how many registers to return information about, via `nmatch'. We have to pass that on to the matching routines. */ private_preg.regs_allocated = REGS_FIXED; - + if (want_reg_info) { regs.num_regs = nmatch; @@ -5140,7 +5142,7 @@ regexec (preg, string, nmatch, pmatch, e ret = re_search (&private_preg, string, len, /* start: */ 0, /* range: */ len, want_reg_info ? ®s : (struct re_registers *) 0); - + /* Copy the register information to the POSIX structure. */ if (want_reg_info) { @@ -5180,7 +5182,7 @@ regerror (errcode, preg, errbuf, errbuf_ if (errcode < 0 || errcode >= (sizeof (re_error_msg) / sizeof (re_error_msg[0]))) - /* Only error codes returned by the rest of the code should be passed + /* Only error codes returned by the rest of the code should be passed to this routine. If we are given anything else, or if other regex code generates an invalid error code, then the program has a bug. Dump core so we can fix it. */ @@ -5194,7 +5196,7 @@ regerror (errcode, preg, errbuf, errbuf_ msg = "Success"; msg_size = strlen (msg) + 1; /* Includes the null. */ - + if (errbuf_size != 0) { if (msg_size > errbuf_size) @@ -5219,7 +5221,7 @@ regfree (preg) if (preg->buffer != NULL) free (preg->buffer); preg->buffer = NULL; - + preg->allocated = 0; preg->used = 0; diff -ruNp m4-1.4.3/lib/regex.h m4-1.4.4/lib/regex.h --- m4-1.4.3/lib/regex.h 2005-02-09 21:22:29.000000000 +0000 +++ m4-1.4.4/lib/regex.h 2005-05-01 12:43:26.000000000 +0100 @@ -1,12 +1,13 @@ /* Definitions for data structures and routines for the regular expression library, version 0.12. - Copyright (C) 1985, 89, 90, 91, 92, 1993 Free Software Foundation, Inc. + Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -15,7 +16,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ #ifndef __REGEXP_LIBRARY_H__ #define __REGEXP_LIBRARY_H__ @@ -42,7 +45,7 @@ typedef unsigned reg_syntax_t; #define RE_BACKSLASH_ESCAPE_IN_LISTS (1) /* If this bit is not set, then + and ? are operators, and \+ and \? are - literals. + literals. If set, then \+ and \? are operators and + and ? are literals. */ #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1) @@ -58,7 +61,7 @@ typedef unsigned reg_syntax_t; ^ is an anchor if it is at the beginning of a regular expression or after an open-group or an alternation operator; $ is an anchor if it is at the end of a regular expression, or - before a close-group or an alternation operator. + before a close-group or an alternation operator. This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because POSIX draft 11.2 says that * etc. in leading positions is undefined. @@ -69,7 +72,7 @@ typedef unsigned reg_syntax_t; /* If this bit is set, then special characters are always special regardless of where they are in the pattern. If this bit is not set, then special characters are special only in - some contexts; otherwise they are ordinary. Specifically, + some contexts; otherwise they are ordinary. Specifically, * + ? and intervals are only special when not after the beginning, open-group, or alternation operator. */ #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1) @@ -91,7 +94,7 @@ typedef unsigned reg_syntax_t; #define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1) /* If this bit is set, either \{...\} or {...} defines an - interval, depending on RE_NO_BK_BRACES. + interval, depending on RE_NO_BK_BRACES. If not set, \{, \}, {, and } are literals. */ #define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) @@ -116,7 +119,7 @@ typedef unsigned reg_syntax_t; If not set, then \ is a back-reference. */ #define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1) -/* If this bit is set, then | is an alternation operator, and \| is literal. +/* If this bit is set, then | is an alternation operator, and \| is literal. If not set, then \| is an alternation operator, and | is literal. */ #define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1) @@ -138,7 +141,7 @@ extern reg_syntax_t re_syntax_options; /* Define combinations of the above bits for the standard possibilities. (The [[[ comments delimit what gets put into the Texinfo file, so - don't delete them!) */ + don't delete them!) */ /* [[[begin syntaxes]]] */ #define RE_SYNTAX_EMACS 0 @@ -205,7 +208,7 @@ extern reg_syntax_t re_syntax_options; #ifdef RE_DUP_MAX #undef RE_DUP_MAX #endif -#define RE_DUP_MAX ((1 << 15) - 1) +#define RE_DUP_MAX ((1 << 15) - 1) /* POSIX `cflags' bits (i.e., information for `regcomp'). */ @@ -217,7 +220,7 @@ extern reg_syntax_t re_syntax_options; /* If this bit is set, then ignore case when matching. If not set, then case is significant. */ #define REG_ICASE (REG_EXTENDED << 1) - + /* If this bit is set, then anchors do not match at newline characters in the string. If not set, then anchors do match at newlines. */ @@ -256,7 +259,7 @@ typedef enum REG_EESCAPE, /* Trailing backslash. */ REG_ESUBREG, /* Invalid back reference. */ REG_EBRACK, /* Unmatched left bracket. */ - REG_EPAREN, /* Parenthesis imbalance. */ + REG_EPAREN, /* Parenthesis imbalance. */ REG_EBRACE, /* Unmatched \{. */ REG_BADBR, /* Invalid contents of \{\}. */ REG_ERANGE, /* Invalid range end. */ @@ -287,7 +290,7 @@ struct re_pattern_buffer unsigned long allocated; /* Number of bytes actually used in `buffer'. */ - unsigned long used; + unsigned long used; /* Syntax setting with which the pattern was compiled. */ reg_syntax_t syntax; @@ -331,7 +334,7 @@ struct re_pattern_buffer unsigned no_sub : 1; /* If set, a beginning-of-line anchor doesn't match at the - beginning of the string. */ + beginning of the string. */ unsigned not_bol : 1; /* Similarly for an end-of-line anchor. */ @@ -438,7 +441,7 @@ extern int re_match /* Relates to `re_match' as `re_search_2' relates to `re_search'. */ -extern int re_match_2 +extern int re_match_2 _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, int length1, const char *string2, int length2, int start, struct re_registers *regs, int stop)); diff -ruNp m4-1.4.3/lib/strtol.c m4-1.4.4/lib/strtol.c --- m4-1.4.3/lib/strtol.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/strtol.c 2005-05-01 12:42:52.000000000 +0100 @@ -1,9 +1,11 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. +/* GNU m4 -- A simple macro processor + + Copyright (C) 1991, 1992 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -12,7 +14,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ #ifdef HAVE_CONFIG_H #include diff -ruNp m4-1.4.3/lib/xmalloc.c m4-1.4.4/lib/xmalloc.c --- m4-1.4.3/lib/xmalloc.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/xmalloc.c 2005-05-01 12:41:36.000000000 +0100 @@ -1,10 +1,11 @@ /* xmalloc.c -- malloc with out of memory checking - Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc. + + Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -13,7 +14,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ #ifdef HAVE_CONFIG_H #include diff -ruNp m4-1.4.3/lib/xstrdup.c m4-1.4.4/lib/xstrdup.c --- m4-1.4.3/lib/xstrdup.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/lib/xstrdup.c 2005-05-01 12:41:09.000000000 +0100 @@ -1,10 +1,11 @@ /* xstrdup.c -- copy a string with out of memory checking + Copyright (C) 1990 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -13,7 +14,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ #ifdef HAVE_CONFIG_H #include diff -ruNp m4-1.4.3/src/Makefile.in m4-1.4.4/src/Makefile.in --- m4-1.4.3/src/Makefile.in 2005-03-31 10:46:09.000000000 +0100 +++ m4-1.4.4/src/Makefile.in 2005-05-01 12:33:22.000000000 +0100 @@ -1,19 +1,21 @@ -# Makefile for GNU m4 sources. -# Copyright (C) 1994, 2005 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## Makefile.in -- Makefile for GNU m4 sources. +## +## Copyright (C) 1994, 2005 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 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; See the file COPYING. if not, write to +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ @@ -35,7 +37,7 @@ STACKOVF = @STACKOVF@ prefix = @prefix@ exec_prefix = @exec_prefix@ transform = @program_transform_name@ -bindir = $(exec_prefix)/bin +bindir = @bindir@ COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LINK = $(CC) $(LDFLAGS) -o $@ diff -ruNp m4-1.4.3/src/TAGS m4-1.4.4/src/TAGS --- m4-1.4.3/src/TAGS 2005-03-31 12:43:28.000000000 +0100 +++ m4-1.4.4/src/TAGS 2005-10-20 10:45:25.000000000 +0100 @@ -1,437 +1,437 @@ m4.h,3548 -# define __CYGWIN__ 31,1181 -# define WIN32 34,1259 -# define voidstar 40,1330 -# define voidstar 42,1361 -# define _(_46,1412 -# define _(_48,1440 -# define bcopy(bcopy65,1829 -# define memcpy(memcpy70,1929 -# define strchr(strchr73,2000 -# define strrchr(strrchr76,2065 -# define EXIT_SUCCESS 97,2437 -# define EXIT_FAILURE 100,2489 -typedef enum { FALSE 116,2861 -typedef enum { FALSE = 0, TRUE 116,2861 -typedef enum { FALSE = 0, TRUE = 1 } boolean;boolean116,2861 -typedef int boolean;boolean118,2913 -struct stringstring125,2991 -typedef struct string STRING;STRING130,3111 -#define obstack_chunk_alloc 137,3311 -#define obstack_chunk_free 138,3347 -typedef void builtin_func builtin_func144,3488 -typedef struct token_data token_data;token_data145,3518 -#define M4ERROR(M4ERROR164,4075 -#define DEBUG_TRACE_ARGS 181,4476 -#define DEBUG_TRACE_EXPANSION 183,4543 -#define DEBUG_TRACE_QUOTE 185,4625 -#define DEBUG_TRACE_ALL 187,4706 -#define DEBUG_TRACE_LINE 189,4774 -#define DEBUG_TRACE_FILE 191,4841 -#define DEBUG_TRACE_PATH 193,4913 -#define DEBUG_TRACE_CALL 195,4989 -#define DEBUG_TRACE_INPUT 197,5056 -#define DEBUG_TRACE_CALLID 199,5123 -#define DEBUG_TRACE_VERBOSE 202,5198 -#define DEBUG_TRACE_DEFAULT 204,5265 -#define DEBUG_PRINT1(DEBUG_PRINT1206,5296 -#define DEBUG_PRINT3(DEBUG_PRINT3214,5452 -#define DEBUG_MESSAGE(DEBUG_MESSAGE222,5631 -#define DEBUG_MESSAGE1(DEBUG_MESSAGE1234,5863 -#define DEBUG_MESSAGE2(DEBUG_MESSAGE2246,6107 -enum token_typetoken_type271,6804 - TOKEN_EOF,273,6822 - TOKEN_STRING,274,6855 - TOKEN_WORD,275,6895 - TOKEN_SIMPLE,276,6931 - TOKEN_MACDEF 277,6974 -enum token_data_typetoken_data_type281,7105 - TOKEN_VOID,283,7128 - TOKEN_TEXT,284,7142 - TOKEN_FUNC285,7156 -struct token_datatoken_data288,7173 -#define TOKEN_DATA_TYPE(TOKEN_DATA_TYPE311,7424 -#define TOKEN_DATA_TEXT(TOKEN_DATA_TEXT312,7466 -# define TOKEN_DATA_ORIG_TEXT(TOKEN_DATA_ORIG_TEXT314,7539 -#define TOKEN_DATA_FUNC(TOKEN_DATA_FUNC316,7608 -#define TOKEN_DATA_FUNC_TRACED(TOKEN_DATA_FUNC_TRACED317,7656 -typedef enum token_type token_type;token_type319,7714 -typedef enum token_data_type token_data_type;token_data_type320,7750 -#define DEF_LQUOTE 343,8384 -#define DEF_RQUOTE 344,8407 -#define DEF_BCOMM 345,8431 -#define DEF_ECOMM 346,8453 -enum symbol_lookupsymbol_lookup368,9073 - SYMBOL_LOOKUP,370,9094 - SYMBOL_INSERT,371,9111 - SYMBOL_DELETE,372,9128 - SYMBOL_PUSHDEF,373,9145 - SYMBOL_POPDEF374,9163 -struct symbolsymbol378,9210 -#define SYMBOL_NEXT(SYMBOL_NEXT390,9372 -#define SYMBOL_TRACED(SYMBOL_TRACED391,9408 -#define SYMBOL_SHADOWED(SYMBOL_SHADOWED392,9447 -#define SYMBOL_MACRO_ARGS(SYMBOL_MACRO_ARGS393,9490 -#define SYMBOL_BLIND_NO_ARGS(SYMBOL_BLIND_NO_ARGS394,9537 -#define SYMBOL_NAME(SYMBOL_NAME395,9590 -#define SYMBOL_TYPE(SYMBOL_TYPE396,9626 -#define SYMBOL_TEXT(SYMBOL_TEXT397,9681 -#define SYMBOL_FUNC(SYMBOL_FUNC398,9736 -typedef enum symbol_lookup symbol_lookup;symbol_lookup400,9792 -typedef struct symbol symbol;symbol401,9834 -typedef void hack_symbol hack_symbol402,9864 -#define HASHMAX 404,9894 -struct builtinbuiltin419,10302 -struct predefinedpredefined428,10446 -typedef struct builtin builtin;builtin435,10539 -typedef struct predefined predefined;predefined436,10571 -typedef int eval_t;eval_t457,11325 -typedef unsigned int unsigned_eval_t;unsigned_eval_t458,11345 -# define DMALLOC_FUNC_CHECK474,11739 -# define DEBUG_INPUT481,11837 -# define DEBUG_MACRO482,11858 -# define DEBUG_SYM483,11879 -# define DEBUG_INCL484,11898 +# define __CYGWIN__ 32,1219 +# define WIN32 35,1297 +# define voidstar 41,1368 +# define voidstar 43,1399 +# define _(_47,1450 +# define _(_49,1478 +# define bcopy(bcopy66,1867 +# define memcpy(memcpy71,1967 +# define strchr(strchr74,2038 +# define strrchr(strrchr77,2103 +# define EXIT_SUCCESS 98,2475 +# define EXIT_FAILURE 101,2527 +typedef enum { FALSE 117,2899 +typedef enum { FALSE = 0, TRUE 117,2899 +typedef enum { FALSE = 0, TRUE = 1 } boolean;boolean117,2899 +typedef int boolean;boolean119,2951 +struct stringstring126,3029 +typedef struct string STRING;STRING131,3149 +#define obstack_chunk_alloc 138,3349 +#define obstack_chunk_free 139,3385 +typedef void builtin_func builtin_func145,3526 +typedef struct token_data token_data;token_data146,3556 +#define M4ERROR(M4ERROR165,4113 +#define DEBUG_TRACE_ARGS 182,4514 +#define DEBUG_TRACE_EXPANSION 184,4581 +#define DEBUG_TRACE_QUOTE 186,4663 +#define DEBUG_TRACE_ALL 188,4744 +#define DEBUG_TRACE_LINE 190,4812 +#define DEBUG_TRACE_FILE 192,4879 +#define DEBUG_TRACE_PATH 194,4951 +#define DEBUG_TRACE_CALL 196,5027 +#define DEBUG_TRACE_INPUT 198,5094 +#define DEBUG_TRACE_CALLID 200,5161 +#define DEBUG_TRACE_VERBOSE 203,5236 +#define DEBUG_TRACE_DEFAULT 205,5303 +#define DEBUG_PRINT1(DEBUG_PRINT1207,5334 +#define DEBUG_PRINT3(DEBUG_PRINT3215,5490 +#define DEBUG_MESSAGE(DEBUG_MESSAGE223,5669 +#define DEBUG_MESSAGE1(DEBUG_MESSAGE1235,5901 +#define DEBUG_MESSAGE2(DEBUG_MESSAGE2247,6145 +enum token_typetoken_type272,6842 + TOKEN_EOF,274,6860 + TOKEN_STRING,275,6893 + TOKEN_WORD,276,6933 + TOKEN_SIMPLE,277,6969 + TOKEN_MACDEF 278,7012 +enum token_data_typetoken_data_type282,7143 + TOKEN_VOID,284,7166 + TOKEN_TEXT,285,7180 + TOKEN_FUNC286,7194 +struct token_datatoken_data289,7211 +#define TOKEN_DATA_TYPE(TOKEN_DATA_TYPE312,7462 +#define TOKEN_DATA_TEXT(TOKEN_DATA_TEXT313,7504 +# define TOKEN_DATA_ORIG_TEXT(TOKEN_DATA_ORIG_TEXT315,7577 +#define TOKEN_DATA_FUNC(TOKEN_DATA_FUNC317,7646 +#define TOKEN_DATA_FUNC_TRACED(TOKEN_DATA_FUNC_TRACED318,7694 +typedef enum token_type token_type;token_type320,7752 +typedef enum token_data_type token_data_type;token_data_type321,7788 +#define DEF_LQUOTE 344,8422 +#define DEF_RQUOTE 345,8445 +#define DEF_BCOMM 346,8469 +#define DEF_ECOMM 347,8491 +enum symbol_lookupsymbol_lookup369,9111 + SYMBOL_LOOKUP,371,9132 + SYMBOL_INSERT,372,9149 + SYMBOL_DELETE,373,9166 + SYMBOL_PUSHDEF,374,9183 + SYMBOL_POPDEF375,9201 +struct symbolsymbol379,9248 +#define SYMBOL_NEXT(SYMBOL_NEXT391,9410 +#define SYMBOL_TRACED(SYMBOL_TRACED392,9446 +#define SYMBOL_SHADOWED(SYMBOL_SHADOWED393,9485 +#define SYMBOL_MACRO_ARGS(SYMBOL_MACRO_ARGS394,9528 +#define SYMBOL_BLIND_NO_ARGS(SYMBOL_BLIND_NO_ARGS395,9575 +#define SYMBOL_NAME(SYMBOL_NAME396,9628 +#define SYMBOL_TYPE(SYMBOL_TYPE397,9664 +#define SYMBOL_TEXT(SYMBOL_TEXT398,9719 +#define SYMBOL_FUNC(SYMBOL_FUNC399,9774 +typedef enum symbol_lookup symbol_lookup;symbol_lookup401,9830 +typedef struct symbol symbol;symbol402,9872 +typedef void hack_symbol hack_symbol403,9902 +#define HASHMAX 405,9932 +struct builtinbuiltin420,10340 +struct predefinedpredefined429,10484 +typedef struct builtin builtin;builtin436,10577 +typedef struct predefined predefined;predefined437,10609 +typedef int eval_t;eval_t458,11363 +typedef unsigned int unsigned_eval_t;unsigned_eval_t459,11383 +# define DMALLOC_FUNC_CHECK475,11777 +# define DEBUG_INPUT482,11875 +# define DEBUG_MACRO483,11896 +# define DEBUG_SYM484,11917 +# define DEBUG_INCL485,11936 m4.c,848 -static int interactive 35,1037 -int sync_output 38,1111 -int debug_level 41,1159 -int hash_table_size 44,1234 -int no_gnu_extensions 47,1302 -int prefix_all_builtins 50,1376 -int max_debug_argument_length 53,1463 -int suppress_warnings 56,1549 -int warning_status 59,1648 -int nesting_limit 62,1729 -const char *user_word_regexp 66,1833 -const char *frozen_file_to_read 70,1937 -const char *frozen_file_to_write 73,2033 -const char *program_name;76,2117 -static int show_help 79,2200 -static int show_version 82,2294 -struct macro_definitionmacro_definition84,2324 -typedef struct macro_definition macro_definition;macro_definition90,2437 -reference_error 100,2810 -stackovf_handler 115,3109 -xfree 130,3374 -usage 142,3591 -static const struct option long_options[222,6391 -#define OPTSTRING 254,7527 -#define OPTSTRING 256,7593 -main 260,7663 - -builtin.c,1637 -#define ARG(ARG30,997 -#define DECLARE(DECLARE36,1210 -builtin_tab[88,2289 -predefined_tab[143,4567 -find_builtin_by_addr 156,4825 -find_builtin_by_name 171,5139 -define_builtin 188,5679 -define_user_macro 208,6384 -builtin_init 225,6806 -bad_argc 266,8082 -numeric_arg 293,8942 -static char const digits[313,9548 -ntoa 316,9638 -shipout_int 354,10404 -dump_args 368,10843 -define_macro 408,12284 -m4_define 447,13065 -m4_undefine 453,13187 -m4_pushdef 461,13359 -m4_popdef 467,13484 -m4_ifdef 479,13731 -m4_ifelse 500,14122 -struct dump_symbol_datadump_symbol_data551,15175 -dump_symbol 559,15337 -dumpdef_cmp 574,15863 -m4_dumpdef 586,16316 -m4_builtin 662,18330 -m4_indir 686,19116 -m4_defn 709,19829 -static int sysval;748,20857 -m4_syscmd 751,20889 -m4_esyscmd 761,21071 -m4_sysval 787,21559 -m4_eval 798,21990 -m4_incr 845,22870 -m4_decr 859,23103 -m4_divert 881,23752 -m4_divnum 899,24158 -m4_undivert 914,24713 -m4_dnl 954,25746 -m4_shift 968,26180 -m4_changequote 978,26542 -m4_changecom 993,27043 -m4_changeword 1013,27652 -include 1033,28383 -m4_include 1057,28863 -m4_sinclude 1067,29088 -m4_maketemp 1080,29535 -m4_errprint 1100,30024 -m4___file__ 1109,30252 -m4___line__ 1119,30545 -m4_m4exit 1136,31155 -m4_m4wrap 1155,31751 -set_trace 1176,32541 -m4_traceon 1182,32650 -m4_traceoff 1206,33305 -m4_debugmode 1232,34073 -m4_debugfile 1284,35202 -m4_len 1305,35820 -m4_index 1318,36240 -m4_substr 1349,37115 -expand_ranges 1382,38285 -m4_translit 1425,39381 -m4_format 1478,40420 -static int substitute_warned 1492,41098 -substitute 1495,41145 -m4_regexp 1548,42488 -m4_patsubst 1609,44306 -expand_user_macro 1697,46942 +static int interactive 36,1081 +int sync_output 39,1155 +int debug_level 42,1203 +int hash_table_size 45,1278 +int no_gnu_extensions 48,1346 +int prefix_all_builtins 51,1420 +int max_debug_argument_length 54,1507 +int suppress_warnings 57,1593 +int warning_status 60,1692 +int nesting_limit 63,1773 +const char *user_word_regexp 67,1877 +const char *frozen_file_to_read 71,1981 +const char *frozen_file_to_write 74,2077 +const char *program_name;77,2161 +static int show_help 80,2244 +static int show_version 83,2338 +struct macro_definitionmacro_definition85,2368 +typedef struct macro_definition macro_definition;macro_definition91,2481 +reference_error 101,2854 +stackovf_handler 116,3153 +xfree 131,3418 +usage 143,3635 +static const struct option long_options[223,6435 +#define OPTSTRING 255,7571 +#define OPTSTRING 257,7637 +main 261,7707 + +builtin.c,1638 +#define ARG(ARG31,1029 +#define DECLARE(DECLARE37,1242 +builtin_tab[89,2321 +predefined_tab[144,4599 +find_builtin_by_addr 157,4857 +find_builtin_by_name 172,5171 +define_builtin 189,5711 +define_user_macro 209,6416 +builtin_init 226,6838 +bad_argc 267,8114 +numeric_arg 294,8974 +static char const digits[314,9580 +ntoa 317,9670 +shipout_int 355,10436 +dump_args 369,10875 +define_macro 409,12310 +m4_define 448,13091 +m4_undefine 454,13213 +m4_pushdef 462,13385 +m4_popdef 468,13510 +m4_ifdef 480,13757 +m4_ifelse 501,14148 +struct dump_symbol_datadump_symbol_data552,15201 +dump_symbol 560,15363 +dumpdef_cmp 575,15889 +m4_dumpdef 587,16342 +m4_builtin 663,18356 +m4_indir 687,19142 +m4_defn 710,19855 +static int sysval;749,20883 +m4_syscmd 752,20915 +m4_esyscmd 762,21097 +m4_sysval 788,21585 +m4_eval 799,22016 +m4_incr 846,22896 +m4_decr 860,23129 +m4_divert 882,23778 +m4_divnum 900,24184 +m4_undivert 915,24739 +m4_dnl 955,25772 +m4_shift 969,26206 +m4_changequote 979,26568 +m4_changecom 994,27069 +m4_changeword 1014,27678 +include 1034,28409 +m4_include 1058,28889 +m4_sinclude 1068,29114 +m4_maketemp 1081,29561 +m4_errprint 1101,30050 +m4___file__ 1110,30278 +m4___line__ 1120,30571 +m4_m4exit 1137,31181 +m4_m4wrap 1156,31777 +set_trace 1177,32567 +m4_traceon 1183,32676 +m4_traceoff 1207,33331 +m4_debugmode 1233,34099 +m4_debugfile 1285,35228 +m4_len 1306,35846 +m4_index 1319,36266 +m4_substr 1350,37141 +expand_ranges 1383,38311 +m4_translit 1426,39407 +m4_format 1479,40446 +static int substitute_warned 1493,41124 +substitute 1496,41171 +m4_regexp 1549,42513 +m4_patsubst 1610,44331 +expand_user_macro 1698,46967 debug.c,342 -FILE *debug 30,949 -static struct obstack trace;33,1005 -debug_init 44,1225 -debug_decode 56,1575 -debug_set_file 133,3055 -debug_flush_files 163,3757 -debug_set_output 178,4267 -debug_message_prefix 202,4783 -trace_format 225,5701 -trace_header 306,7072 -trace_flush 323,7583 -trace_prepre 339,7983 -trace_pre 352,8385 -trace_post 409,9657 - -eval.c,1434 -typedef enum eval_tokeneval_token28,1091 - ERROR,30,1119 - PLUS,31,1130 - PLUS, MINUS,31,1130 - EXPONENT,32,1147 - TIMES,33,1161 - TIMES, DIVIDE,33,1161 - TIMES, DIVIDE, MODULO,33,1161 - EQ,34,1188 - EQ, NOTEQ,34,1188 - EQ, NOTEQ, GT,34,1188 - EQ, NOTEQ, GT, GTEQ,34,1188 - EQ, NOTEQ, GT, GTEQ, LS,34,1188 - EQ, NOTEQ, GT, GTEQ, LS, LSEQ,34,1188 - LSHIFT,35,1223 - LSHIFT, RSHIFT,35,1223 - LNOT,36,1243 - LNOT, LAND,36,1243 - LNOT, LAND, LOR,36,1243 - NOT,37,1264 - NOT, AND,37,1264 - NOT, AND, OR,37,1264 - NOT, AND, OR, XOR,37,1264 - LEFTP,38,1287 - LEFTP, RIGHTP,38,1287 - NUMBER,39,1306 - NUMBER, EOTEXT39,1306 -eval_token;eval_token41,1329 -typedef enum eval_erroreval_error45,1363 - NO_ERROR,47,1391 - MISSING_RIGHT,48,1405 - SYNTAX_ERROR,49,1424 - UNKNOWN_INPUT,50,1442 - EXCESS_INPUT,51,1461 - DIVIDE_ZERO,52,1479 - MODULO_ZERO53,1496 -eval_error;eval_error55,1516 -static const char *eval_text;77,2437 -static const char *last_text;81,2590 -eval_init_lex 84,2633 -eval_undo 91,2723 -eval_lex 99,2828 -evaluate 258,5322 -logical_or_term 320,6618 -logical_and_term 347,7083 -or_term 374,7532 -xor_term 401,7971 -and_term 428,8412 -not_term 455,8853 -logical_not_term 477,9209 -cmp_term 499,9574 -shift_term 560,10481 -add_term 603,11171 -mult_term 634,11692 -exp_term 686,12531 -unary_term 718,13076 -simple_term 743,13493 +FILE *debug 32,982 +static struct obstack trace;35,1038 +debug_init 46,1258 +debug_decode 58,1608 +debug_set_file 135,3088 +debug_flush_files 165,3790 +debug_set_output 180,4300 +debug_message_prefix 204,4816 +trace_format 227,5734 +trace_header 308,7105 +trace_flush 325,7616 +trace_prepre 341,8016 +trace_pre 354,8418 +trace_post 411,9690 + +eval.c,1435 +typedef enum eval_tokeneval_token31,1137 + ERROR,33,1165 + PLUS,34,1176 + PLUS, MINUS,34,1176 + EXPONENT,35,1193 + TIMES,36,1207 + TIMES, DIVIDE,36,1207 + TIMES, DIVIDE, MODULO,36,1207 + EQ,37,1234 + EQ, NOTEQ,37,1234 + EQ, NOTEQ, GT,37,1234 + EQ, NOTEQ, GT, GTEQ,37,1234 + EQ, NOTEQ, GT, GTEQ, LS,37,1234 + EQ, NOTEQ, GT, GTEQ, LS, LSEQ,37,1234 + LSHIFT,38,1269 + LSHIFT, RSHIFT,38,1269 + LNOT,39,1289 + LNOT, LAND,39,1289 + LNOT, LAND, LOR,39,1289 + NOT,40,1310 + NOT, AND,40,1310 + NOT, AND, OR,40,1310 + NOT, AND, OR, XOR,40,1310 + LEFTP,41,1333 + LEFTP, RIGHTP,41,1333 + NUMBER,42,1352 + NUMBER, EOTEXT42,1352 +eval_token;eval_token44,1375 +typedef enum eval_erroreval_error48,1409 + NO_ERROR,50,1437 + MISSING_RIGHT,51,1451 + SYNTAX_ERROR,52,1470 + UNKNOWN_INPUT,53,1488 + EXCESS_INPUT,54,1507 + DIVIDE_ZERO,55,1525 + MODULO_ZERO56,1542 +eval_error;eval_error58,1562 +static const char *eval_text;80,2483 +static const char *last_text;84,2636 +eval_init_lex 87,2679 +eval_undo 94,2769 +eval_lex 102,2874 +evaluate 261,5368 +logical_or_term 323,6660 +logical_and_term 350,7125 +or_term 377,7574 +xor_term 404,8013 +and_term 431,8454 +not_term 458,8895 +logical_not_term 480,9251 +cmp_term 502,9616 +shift_term 563,10523 +add_term 606,11213 +mult_term 637,11734 +exp_term 689,12573 +unary_term 721,13118 +simple_term 746,13535 format.c,728 -#define MAXFIELD 26,932 -#define ECVTMAX 28,1042 -#define FCVTMAX 29,1108 -#define min(min42,1393 -static char const digits[44,1436 -static char const Digits[45,1485 -ulong_to_str 50,1589 -clr0 71,1988 -#define ARG_INT(ARG_INT84,2167 -#define ARG_UINT(ARG_UINT88,2275 -#define ARG_LONG(ARG_LONG92,2399 -#define ARG_ULONG(ARG_ULONG96,2508 -#define ARG_STR(ARG_STR100,2634 -#define ARG_DOUBLE(ARG_DOUBLE104,2736 -format 116,3191 -#define LENGTH(LENGTH156,4544 -#define HAS_SIGN 157,4587 - enum {INT,534,12188 - enum {INT, UINT,534,12188 - enum {INT, UINT, LONG,534,12188 - enum {INT, UINT, LONG, ULONG,534,12188 - enum {INT, UINT, LONG, ULONG, DOUBLE,534,12188 - enum {INT, UINT, LONG, ULONG, DOUBLE, STR}534,12188 +#define MAXFIELD 29,978 +#define ECVTMAX 31,1088 +#define FCVTMAX 32,1154 +#define min(min45,1439 +static char const digits[47,1482 +static char const Digits[48,1531 +ulong_to_str 53,1635 +clr0 74,2034 +#define ARG_INT(ARG_INT87,2213 +#define ARG_UINT(ARG_UINT91,2321 +#define ARG_LONG(ARG_LONG95,2445 +#define ARG_ULONG(ARG_ULONG99,2554 +#define ARG_STR(ARG_STR103,2680 +#define ARG_DOUBLE(ARG_DOUBLE107,2782 +format 119,3237 +#define LENGTH(LENGTH159,4590 +#define HAS_SIGN 160,4633 + enum {INT,537,12234 + enum {INT, UINT,537,12234 + enum {INT, UINT, LONG,537,12234 + enum {INT, UINT, LONG, ULONG,537,12234 + enum {INT, UINT, LONG, ULONG, DOUBLE,537,12234 + enum {INT, UINT, LONG, ULONG, DOUBLE, STR}537,12234 freeze.c,290 -reverse_symbol_list 28,1083 -produce_frozen_state 49,1483 -# define FROZEN_WRITE 57,1598 -# define FROZEN_WRITE 59,1631 -issue_expect_message 162,4392 -reload_frozen_state 178,4829 -#define GET_CHARACTER 188,4996 -#define GET_NUMBER(GET_NUMBER191,5049 -#define VALIDATE(VALIDATE203,5297 - -input.c,1581 -enum input_typeinput_type57,2683 - INPUT_FILE,59,2701 - INPUT_STRING,60,2715 - INPUT_MACRO61,2731 -typedef enum input_type input_type;input_type64,2749 -struct input_blockinput_block66,2786 -typedef struct input_block input_block;input_block97,3548 -const char *current_file;101,3623 -int current_line;104,3684 -static struct obstack token_stack;107,3749 -static struct obstack input_stack;110,3812 -static struct obstack wrapup_stack;113,3875 -static struct obstack *current_input;116,3936 -static char *token_bottom;119,4023 -static input_block *isp;122,4091 -static input_block *wsp;125,4156 -static input_block *next;128,4229 -static boolean start_of_input_line;131,4312 -#define CHAR_EOF 133,4349 -#define CHAR_MACRO 134,4400 -STRING rquote;137,4483 -STRING lquote;138,4498 -STRING bcomm;141,4536 -STRING ecomm;142,4550 -#define DEFAULT_WORD_REGEXP 146,4591 -static char *word_start;148,4645 -static struct re_pattern_buffer word_regexp;149,4670 -static int default_word_regexp;150,4715 -static struct re_registers regs;151,4747 -push_file 163,5206 -push_macro 200,6264 -push_string_init 226,6882 -push_string_finish 251,7786 -push_wrapup 281,8800 -pop_input 299,9452 -pop_wrapup 341,10650 -init_macro_token 359,11074 -peek_input 382,11805 -#define next_char(next_char431,13106 -next_char_1 437,13257 -skip_line 492,14356 -match_input 509,14909 -#define MATCH(MATCH543,15856 -input_init 555,16205 -set_quotes 599,17290 -set_comment 611,17579 -init_pattern_buffer 625,17885 -set_word_regexp 634,18030 -next_token 703,20155 -print_token 846,23465 -lex_debug 875,24043 +reverse_symbol_list 31,1135 +produce_frozen_state 52,1535 +# define FROZEN_WRITE 60,1650 +# define FROZEN_WRITE 62,1683 +issue_expect_message 165,4444 +reload_frozen_state 181,4881 +#define GET_CHARACTER 191,5048 +#define GET_NUMBER(GET_NUMBER194,5101 +#define VALIDATE(VALIDATE206,5349 + +input.c,1582 +enum input_typeinput_type60,2739 + INPUT_FILE,62,2757 + INPUT_STRING,63,2771 + INPUT_MACRO64,2787 +typedef enum input_type input_type;input_type67,2805 +struct input_blockinput_block69,2842 +typedef struct input_block input_block;input_block100,3604 +const char *current_file;104,3679 +int current_line;107,3740 +static struct obstack token_stack;110,3805 +static struct obstack input_stack;113,3868 +static struct obstack wrapup_stack;116,3931 +static struct obstack *current_input;119,3992 +static char *token_bottom;122,4079 +static input_block *isp;125,4147 +static input_block *wsp;128,4212 +static input_block *next;131,4285 +static boolean start_of_input_line;134,4368 +#define CHAR_EOF 136,4405 +#define CHAR_MACRO 137,4456 +STRING rquote;140,4539 +STRING lquote;141,4554 +STRING bcomm;144,4592 +STRING ecomm;145,4606 +#define DEFAULT_WORD_REGEXP 149,4647 +static char *word_start;151,4701 +static struct re_pattern_buffer word_regexp;152,4726 +static int default_word_regexp;153,4771 +static struct re_registers regs;154,4803 +push_file 166,5262 +push_macro 203,6320 +push_string_init 229,6938 +push_string_finish 254,7842 +push_wrapup 284,8856 +pop_input 302,9508 +pop_wrapup 344,10706 +init_macro_token 362,11130 +peek_input 385,11861 +#define next_char(next_char434,13162 +next_char_1 440,13313 +skip_line 495,14412 +match_input 512,14965 +#define MATCH(MATCH546,15912 +input_init 558,16261 +set_quotes 602,17346 +set_comment 614,17635 +init_pattern_buffer 628,17941 +set_word_regexp 637,18086 +next_token 706,20211 +print_token 849,23521 +lex_debug 878,24099 macro.c,205 -int expansion_level 28,1090 -static int macro_call_id 31,1174 -expand_input 38,1433 -expand_token 56,2028 -expand_argument 109,3663 -collect_arguments 192,5582 -call_macro 238,7105 -expand_macro 269,8166 - -output.c,821 -#define INITIAL_BUFFER_SIZE 27,970 -#define MAXIMUM_TOTAL_SIZE 31,1087 -#define COPY_BUFFER_SIZE 34,1183 -struct diversiondiversion51,1690 -static struct diversion *diversion_table;60,1946 -static int diversions;63,2034 -static int total_buffer_size;66,2107 -int current_diversion;70,2258 -static struct diversion *output_diversion;73,2360 -static FILE *output_file;76,2473 -static char *output_cursor;77,2529 -static int output_unused;78,2596 -int output_current_line;81,2718 -output_init 88,2835 -mkstemp 113,3379 -tmpfile 126,3601 -make_room_for 152,4386 -#define OUTPUT_CHARACTER(OUTPUT_CHARACTER255,7577 -output_character_helper 264,7837 -output_text 283,8339 -shipout_text 317,9537 -make_diversion 411,12060 -insert_file 460,13443 -insert_diversion 490,14269 -undivert_all 542,15501 -freeze_diversions 555,15823 +int expansion_level 30,1123 +static int macro_call_id 33,1207 +expand_input 40,1466 +expand_token 58,2061 +expand_argument 111,3696 +collect_arguments 194,5615 +call_macro 240,7138 +expand_macro 271,8199 + +output.c,822 +#define INITIAL_BUFFER_SIZE 28,1002 +#define MAXIMUM_TOTAL_SIZE 32,1119 +#define COPY_BUFFER_SIZE 35,1215 +struct diversiondiversion52,1719 +static struct diversion *diversion_table;61,1975 +static int diversions;64,2063 +static int total_buffer_size;67,2136 +int current_diversion;71,2287 +static struct diversion *output_diversion;74,2389 +static FILE *output_file;77,2502 +static char *output_cursor;78,2558 +static int output_unused;79,2625 +int output_current_line;82,2747 +output_init 89,2864 +mkstemp 114,3408 +tmpfile 127,3630 +make_room_for 153,4415 +#define OUTPUT_CHARACTER(OUTPUT_CHARACTER256,7606 +output_character_helper 265,7866 +output_text 284,8368 +shipout_text 318,9566 +make_diversion 412,12089 +insert_file 461,13472 +insert_diversion 491,14298 +undivert_all 543,15530 +freeze_diversions 556,15852 path.c,316 -struct includesincludes25,928 -typedef struct includes includes;includes32,1053 -static includes *dir_list;34,1088 -static includes *dir_list_end;35,1151 -static int dir_max_length;36,1205 -include_init 40,1280 -include_env_init 48,1374 -add_include_directory 72,1716 -path_search 102,2299 -include_dump 147,3258 +struct includesincludes27,959 +typedef struct includes includes;includes34,1084 +static includes *dir_list;36,1119 +static includes *dir_list_end;37,1182 +static int dir_max_length;38,1236 +include_init 42,1311 +include_env_init 50,1405 +add_include_directory 74,1747 +path_search 104,2330 +include_dump 149,3289 stackovf.c,494 -#define DEBUG_STACKOVF77,3690 -# define SIGSTKSZ 91,3914 -# define STACKOVF_DETECT 104,4492 -typedef void (*handler_t)handler_t108,4567 -static const char *stackbot;110,4605 -static const char *stackend;111,4634 -static const char *arg0;112,4663 -static handler_t stackovf_handler;113,4688 -#define PARAM_STACKOVF 138,5949 -#define PARAM_NOSTACKOVF 139,5991 -process_sigsegv 142,6048 -sigsegv_handler 207,7519 -sigsegv_handler 220,7794 -sigsegv_handler 230,7987 -setup_stackovf_trap 254,8762 +#define DEBUG_STACKOVF78,3689 +# define SIGSTKSZ 92,3913 +# define STACKOVF_DETECT 105,4490 +typedef void (*handler_t)handler_t109,4565 +static const char *stackbot;111,4603 +static const char *stackend;112,4632 +static const char *arg0;113,4661 +static handler_t stackovf_handler;114,4686 +#define PARAM_STACKOVF 139,5938 +#define PARAM_NOSTACKOVF 140,5980 +process_sigsegv 143,6037 +sigsegv_handler 208,7508 +sigsegv_handler 221,7783 +sigsegv_handler 231,7976 +setup_stackovf_trap 255,8751 symtab.c,183 -symbol **symtab;41,1896 -symtab_init 44,1919 -hash 60,2272 -free_symbol 82,2720 -lookup_symbol 105,3651 -hack_all_symbols 209,6386 -symtab_debug 224,6642 -symtab_print_list 259,7233 +symbol **symtab;42,1930 +symtab_init 45,1953 +hash 61,2306 +free_symbol 83,2754 +lookup_symbol 106,3685 +hack_all_symbols 210,6420 +symtab_debug 225,6676 +symtab_print_list 260,7267 ../lib/TAGS,include diff -ruNp m4-1.4.3/src/builtin.c m4-1.4.4/src/builtin.c --- m4-1.4.3/src/builtin.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/builtin.c 2005-05-01 12:40:47.000000000 +0100 @@ -1,21 +1,22 @@ /* GNU m4 -- A simple macro processor - Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2000, 2004 Free - Software Foundation, Inc. - + Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2000, 2004 + Free Software Foundation, Inc. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* Code for all builtin macros, initialisation of symbol table, and @@ -386,9 +387,9 @@ dump_args (struct obstack *obs, int argc /* The rest of this file is code for builtins and expansion of user defined macros. All the functions for builtins have a prototype as: - + void m4_MACRONAME (struct obstack *obs, int argc, char *argv[]); - + The function are expected to leave their expansion on the obstack OBS, as an unfinished object. ARGV is a table of ARGC pointers to the individual arguments to the macro. Please note that in general @@ -1523,7 +1524,7 @@ WARNING: \\0 will disappear, use \\& ins break; case '1': case '2': case '3': case '4': case '5': case '6': - case '7': case '8': case '9': + case '7': case '8': case '9': ch -= '0'; if (regs->end[ch] > 0) obstack_grow (obs, victim + regs->start[ch], diff -ruNp m4-1.4.3/src/debug.c m4-1.4.4/src/debug.c --- m4-1.4.3/src/debug.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/debug.c 2005-05-01 12:40:28.000000000 +0100 @@ -1,19 +1,21 @@ /* GNU m4 -- A simple macro processor + Copyright (C) 1991, 1992, 1993, 1994, 2004 Free Software Foundation, Inc. - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ #include "m4.h" diff -ruNp m4-1.4.3/src/eval.c m4-1.4.4/src/eval.c --- m4-1.4.3/src/eval.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/eval.c 2005-05-01 12:40:11.000000000 +0100 @@ -1,19 +1,22 @@ /* GNU m4 -- A simple macro processor - Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. - + + Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* This file contains the functions to evaluate integer expressions for @@ -266,7 +269,7 @@ evaluate (const char *expr, eval_t *val) if (err == NO_ERROR && *eval_text != '\0') err = EXCESS_INPUT; - + switch (err) { case NO_ERROR: diff -ruNp m4-1.4.3/src/format.c m4-1.4.4/src/format.c --- m4-1.4.3/src/format.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/format.c 2005-05-01 12:39:46.000000000 +0100 @@ -1,19 +1,22 @@ /* GNU m4 -- A simple macro processor - Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. - + + Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* printf like formatting for m4. */ @@ -666,7 +669,7 @@ format (struct obstack *obs, int argc, t c = *fmt; *fmt = '\0'; - switch(datatype) + switch(datatype) { case INT: if (width != -1 && prec != -1) diff -ruNp m4-1.4.3/src/freeze.c m4-1.4.4/src/freeze.c --- m4-1.4.3/src/freeze.c 2005-02-09 21:03:00.000000000 +0000 +++ m4-1.4.4/src/freeze.c 2005-05-01 12:39:09.000000000 +0100 @@ -1,10 +1,12 @@ /* GNU m4 -- A simple macro processor - Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. + + Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -13,7 +15,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* This module handles frozen files. */ diff -ruNp m4-1.4.3/src/input.c m4-1.4.4/src/input.c --- m4-1.4.3/src/input.c 2005-02-09 21:20:19.000000000 +0000 +++ m4-1.4.4/src/input.c 2005-05-01 12:38:18.000000000 +0100 @@ -1,10 +1,12 @@ /* GNU m4 -- A simple macro processor - Copyright (C) 1989, 90, 91, 92, 93, 94, 04, 05 Free Software Foundation, Inc. + + Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -13,7 +15,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* Handling of different input sources, and lexical analysis. */ diff -ruNp m4-1.4.3/src/m4.c m4-1.4.4/src/m4.c --- m4-1.4.3/src/m4.c 2005-02-09 20:58:38.000000000 +0000 +++ m4-1.4.4/src/m4.c 2005-10-18 12:48:58.000000000 +0100 @@ -1,12 +1,12 @@ /* GNU m4 -- A simple macro processor - Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004 Free + Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -15,7 +15,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ #include "m4.h" @@ -259,6 +260,7 @@ static const struct option long_options[ int main (int argc, char *const *argv, char *const *envp) { + int retcode = EXIT_SUCCESS; macro_definition *head; /* head of deferred argument list */ macro_definition *tail; macro_definition *new; @@ -484,6 +486,9 @@ warranty; not even for MERCHANTABILITY o if (fp == NULL) { error (0, errno, "%s", argv[optind]); + /* Set the status to EXIT_FAILURE, even though we + continue to process files after a missing file. */ + retcode = EXIT_FAILURE; continue; } else @@ -506,5 +511,5 @@ warranty; not even for MERCHANTABILITY o undivert_all (); } - exit (EXIT_SUCCESS); + exit (retcode); } diff -ruNp m4-1.4.3/src/m4.h m4-1.4.4/src/m4.h --- m4-1.4.3/src/m4.h 2005-02-09 21:03:00.000000000 +0000 +++ m4-1.4.4/src/m4.h 2005-05-01 12:37:09.000000000 +0100 @@ -5,8 +5,8 @@ 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 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -15,7 +15,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* We use instead of "config.h" so that a compilation diff -ruNp m4-1.4.3/src/macro.c m4-1.4.4/src/macro.c --- m4-1.4.3/src/macro.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/macro.c 2005-05-01 12:36:46.000000000 +0100 @@ -1,19 +1,21 @@ /* GNU m4 -- A simple macro processor + Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* This file contains the functions, that performs the basic argument diff -ruNp m4-1.4.3/src/output.c m4-1.4.4/src/output.c --- m4-1.4.3/src/output.c 2005-02-09 20:48:40.000000000 +0000 +++ m4-1.4.4/src/output.c 2005-05-01 12:36:27.000000000 +0100 @@ -2,20 +2,21 @@ Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005 Free Software Foundation, Inc. - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ #include "m4.h" @@ -32,14 +33,14 @@ /* Size of buffer size to use while copying files. */ #define COPY_BUFFER_SIZE (32 * 512) - + #ifdef HAVE_TMPFILE extern FILE *tmpfile (); #endif /* Output functions. Most of the complexity is for handling cpp like sync lines. - + This code is fairly entangled with the code in input.c, and maybe it belongs there? */ @@ -559,7 +560,7 @@ freeze_diversions (FILE *file) int divnum; struct diversion *diversion; struct stat file_stat; - + saved_number = current_diversion; last_inserted = 0; make_diversion (0); @@ -592,4 +593,3 @@ freeze_diversions (FILE *file) if (saved_number != last_inserted) fprintf (file, "D%d,0\n\n", saved_number); } - diff -ruNp m4-1.4.3/src/path.c m4-1.4.4/src/path.c --- m4-1.4.3/src/path.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/path.c 2005-05-01 12:36:11.000000000 +0100 @@ -2,20 +2,22 @@ Copyright (C) 1989, 1990, 1991, 1992, 1993, 2004 Free Software Foundation, Inc. - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ /* Handling of path search of included files via the builtins "include" and "sinclude". */ diff -ruNp m4-1.4.3/src/stackovf.c m4-1.4.4/src/stackovf.c --- m4-1.4.3/src/stackovf.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/stackovf.c 2005-05-01 12:35:49.000000000 +0100 @@ -4,8 +4,8 @@ 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 2, or (at your option) - any later version. + the Free Software Foundation; either version 2 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 @@ -14,57 +14,58 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* Compiled only when USE_STACKOVF is defined, which itself requires getrlimit with the RLIMIT_STACK option, and support for alternate signal stacks using either SVR4 or BSD interfaces. - + This should compile on ANY system which supports either sigaltstack() or sigstack(), with or without or another way to determine the fault address. - + There is no completely portable way to determine if a SIGSEGV signal indicates a stack overflow. The fault address can be used to infer this. However, the fault address is passed to the signal handler in different ways on various systems. One of three methods are used to determine the fault address: - + 1. The siginfo parameter (with siginfo.h, i.e., SVR4). - + 2. 4th "addr" parameter (assumed if struct sigcontext is defined, i.e., SunOS 4.x/BSD). - + 3. None (if no method is available). This case just prints a message before aborting with a core dump. That way the user at least knows that it *might* be a recursion problem. - + Jim Avera writes, on Tue, 5 Oct 93 19:27 PDT: - + "I got interested finding out how a program could catch and diagnose its own stack overflow, and ended up modifying m4 to do this. Now it prints a nice error message and exits. - + How it works: SIGSEGV is caught using a separate signal stack. The signal handler declares a stack overflow if the fault address is near the end of the stack region, or if the maximum VM address space limit has been reached. Otherwise, it returns to re-execute the instruction with SIG_DFL set, so that any real bugs cause a core dump as usual." - + Jim Avera writes, on Fri, 24 Jun 94 12:14 PDT: - + "The stack-overflow detection code would still be needed to avoid a SIGSEGV abort if swap space was exhausted at the moment the stack tried to grow. This is probably unlikely to occur with the explicit nesting limit option of GNU m4." - + Jim Avera writes, on Wed, 6 Jul 1994 14:41 PDT: - + "When a stack overflow occurs, a SIGSEGV signal is sent, which by default aborts the process with a core dump. - + The code in stackovf.c catches SIGSEGV using a separate signal stack. The signal handler determines whether or not the SIGSEGV arose from a stack overflow. If it is a stack overflow, an @@ -97,7 +98,7 @@ account for the maximum size of local variables (the amount the trapping reference might exceed the stack limit). Also, some machines may report an arbitrary address within the same page frame. - If the value is too large, we might call some other SIGSEGV a stack + If the value is too large, we might call some other SIGSEGV a stack overflow, masking a bug. */ #ifndef STACKOVF_DETECT @@ -116,17 +117,17 @@ static handler_t stackovf_handler; signal handler. The signal handler obtains information about the trap in an OS-dependent manner, and passes a parameter with the meanings as explained below. - + If the OS explicitly identifies a stack overflow trap, either pass PARAM_STACKOVF if a stack overflow, or pass PARAM_NOSTACKOVF if not (id est, it is a random bounds violation). Otherwise, if the fault address is available, pass the fault address. Otherwise (if no information is available), pass NULL. - + Not given an explicit indication, we compare the fault address with the estimated stack limit, and test to see if overall VM space is exhausted. - + If a stack overflow is identified, then the external *stackovf_handler function is called, which should print an error message and exit. If it is NOT a stack overflow, then we silently abort with a core dump by @@ -358,12 +359,12 @@ Error - Do not know how to set up stack- sigaction (SIGSEGV, NULL, &act); act.sa_handler = (RETSIGTYPE (*) _((int))) sigsegv_handler; sigemptyset (&act.sa_mask); - act.sa_flags = (SA_ONSTACK + act.sa_flags = (SA_ONSTACK #ifdef SA_RESETHAND | SA_RESETHAND #endif #ifdef SA_SIGINFO - | SA_SIGINFO + | SA_SIGINFO #endif ); if (sigaction (SIGSEGV, &act, NULL) < 0) diff -ruNp m4-1.4.3/src/symtab.c m4-1.4.4/src/symtab.c --- m4-1.4.3/src/symtab.c 2004-08-21 11:29:00.000000000 +0100 +++ m4-1.4.4/src/symtab.c 2005-05-01 12:35:20.000000000 +0100 @@ -5,17 +5,18 @@ 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 2, or (at your option) - any later version. - + the Free Software Foundation; either version 2 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ /* This file handles all the low level work around the symbol table. The diff -ruNp m4-1.4.3/stamp-h.in m4-1.4.4/stamp-h.in --- m4-1.4.3/stamp-h.in 2005-03-31 12:31:57.000000000 +0100 +++ m4-1.4.4/stamp-h.in 2005-10-20 10:55:12.000000000 +0100 @@ -1 +1 @@ -Thu Mar 31 12:31:57 BST 2005 +Thu Oct 20 10:55:12 BST 2005