Commit 24fe1405 authored by Per Cederqvist's avatar Per Cederqvist
Browse files

Release 0.12 of GNU regex

parent 9d54acd9
Fri Apr 2 17:31:59 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu)
* Released version 0.12.
* regex.c (regerror): If errcode is zero, that's not a valid
error code, according to POSIX, but return "Success."
* regex.c (regerror): Remember to actually fetch the message
from re_error_msg.
* regex.c (regex_compile): Don't use the trick for ".*\n" on
".+\n". Since the latter involves laying an extra choice
point, the backward jump isn't adjusted properly.
Thu Mar 25 21:35:18 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu)
* regex.c (regex_compile): In the handle_open and handle_close
sections, clear pending_exact to zero.
Tue Mar 9 12:03:07 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
* regex.c (re_search_2): In the loop which searches forward
using fastmap, don't forget to cast the character from the
string to an unsigned before using it as an index into the
translate map.
Thu Jan 14 15:41:46 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
* regex.h: Never define const; let the callers do it.
configure.in: Don't define USING_AUTOCONF.
Wed Jan 6 20:49:29 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
* regex.c (regerror): Abort if ERRCODE is out of range.
Sun Dec 20 16:19:10 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
* configure.in: Arrange to #define USING_AUTOCONF.
* regex.h: If USING_AUTOCONF is #defined, don't mess with
`const' at all; autoconf has taken care of it.
Mon Dec 14 21:40:39 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
* regex.h (RE_SYNTAX_AWK): Fix typo. From Arnold Robbins.
Sun Dec 13 20:35:39 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
* regex.c (compile_range): Fetch the range start and end by
casting the pattern pointer to an `unsigned char *' before
fetching through it.
Sat Dec 12 09:41:01 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
* regex.c: Undo change of 12/7/92; it's better for Emacs to
#define HAVE_CONFIG_H.
Fri Dec 11 22:00:34 1992 Jim Meyering (meyering@hal.gnu.ai.mit.edu)
* regex.c: Define and use isascii-protected ctype.h macros.
Fri Dec 11 05:10:38 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
* regex.c (re_match_2): Undo Karl's November 10th change; it
keeps the group in :\(.*\) from matching :/ properly.
Mon Dec 7 19:44:56 1992 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
* regex.c: #include config.h if either HAVE_CONFIG_H or emacs
is #defined.
Tue Dec 1 13:33:17 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
* regex.c [HAVE_CONFIG_H]: Include config.h.
Wed Nov 25 23:46:02 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
* regex.c (regcomp): Add parens around bitwise & for clarity.
Initialize preg->allocated to prevent segv.
Tue Nov 24 09:22:29 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
* regex.c: Use HAVE_STRING_H, not USG.
* configure.in: Check for string.h, not USG.
Fri Nov 20 06:33:24 1992 Karl Berry (karl@cs.umb.edu)
* regex.c (SIGN_EXTEND_CHAR) [VMS]: Back out of this change,
since Roland Roberts now says it was a localism.
Mon Nov 16 07:01:36 1992 Karl Berry (karl@cs.umb.edu)
* regex.h (const) [!HAVE_CONST]: Test another cpp symbol (from
Autoconf) before zapping const.
Sun Nov 15 05:36:42 1992 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
* regex.c, regex.h: Changes for VMS from Roland B Roberts
<roberts@nsrl31.nsrl.rochester.edu>.
Thu Nov 12 11:31:15 1992 Karl Berry (karl@cs.umb.edu)
* Makefile.in (distfiles): Include INSTALL.
Tue Nov 10 09:29:23 1992 Karl Berry (karl@cs.umb.edu)
* regex.c (re_match_2): At maybe_pop_jump, if at end of string
and pattern, just quit the matching loop.
* regex.c (LETTER_P): Rename to `WORDCHAR_P'.
* regex.c (AT_STRINGS_{BEG,END}): Take `d' as an arg; change
callers.
* regex.c (re_match_2) [!emacs]: In wordchar and notwordchar
cases, advance d.
Wed Nov 4 15:43:58 1992 Karl Berry (karl@hal.gnu.ai.mit.edu)
* regex.h (const) [!__STDC__]: Don't define if it's already defined.
Sat Oct 17 19:28:19 1992 Karl Berry (karl@cs.umb.edu)
* regex.c (bcmp, bcopy, bzero): Only #define if they are not
already #defined.
* configure.in: Use AC_CONST.
Thu Oct 15 08:39:06 1992 Karl Berry (karl@cs.umb.edu)
* regex.h (const) [!const]: Conditionalize.
Fri Oct 2 13:31:42 1992 Karl Berry (karl@cs.umb.edu)
* regex.h (RE_SYNTAX_ED): New definition.
Sun Sep 20 12:53:39 1992 Karl Berry (karl@cs.umb.edu)
* regex.[ch]: remove traces of `longest_p' -- dumb idea to put
this into the pattern buffer, as it means parallelism loses.
* Makefile.in (config.status): use sh to run configure --no-create.
* Makefile.in (realclean): OK, don't remove configure.
Sat Sep 19 09:05:08 1992 Karl Berry (karl@hayley)
* regex.c (PUSH_FAILURE_POINT, POP_FAILURE_POINT) [DEBUG]: keep
track of how many failure points we push and pop.
(re_match_2) [DEBUG]: declare variables for that, and print results.
(DEBUG_PRINT4): new macro.
* regex.h (re_pattern_buffer): new field `longest_p' (to
eliminate backtracking if the user doesn't need it).
* regex.c (re_compile_pattern): initialize it (to 1).
(re_search_2): set it to zero if register information is not needed.
(re_match_2): if it's set, don't backtrack.
* regex.c (re_search_2): update fastmap only after checking that
the pattern is anchored.
* regex.c (re_match_2): do more debugging at maybe_pop_jump.
* regex.c (re_search_2): cast result of TRANSLATE for use in
array subscript.
Thu Sep 17 19:47:16 1992 Karl Berry (karl@geech.gnu.ai.mit.edu)
* Version 0.11.
......
# Makefile for regex.
#
# Copyright (C) 1992 Free Software Foundation, Inc.
# Copyright (C) 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
......@@ -16,7 +16,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
version = 0.11
version = 0.12
# You can define CPPFLAGS on the command line. Aside from system-specific
# flags, you can define:
......@@ -57,9 +57,6 @@ clean mostlyclean::
distclean:: clean
rm -f Makefile config.status
realclean:: distclean
rm -f configure
extraclean:: distclean
rm -f patch* *~* *\#* *.orig *.rej *.bak core a.out
......@@ -67,7 +64,7 @@ configure: configure.in
autoconf
config.status: configure
configure
sh configure --no-create
Makefile: Makefile.in config.status
sh config.status
......@@ -84,7 +81,7 @@ TAGS check::
# Prevent GNU make 3 from overflowing arg limit on system V.
.NOEXPORT:
distfiles = AUTHORS ChangeLog COPYING NEWS README \
distfiles = AUTHORS ChangeLog COPYING INSTALL NEWS README \
*.in configure regex.c regex.h
distdir = regex-$(version)
distargs = version=$(version) distdir=../$(distdir)/$$d
......
# Makefile for regex.
#
# Copyright (C) 1992 Free Software Foundation, Inc.
# Copyright (C) 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
......@@ -16,7 +16,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
version = 0.11
version = 0.12
# You can define CPPFLAGS on the command line. Aside from system-specific
# flags, you can define:
......@@ -57,9 +57,6 @@ clean mostlyclean::
distclean:: clean
rm -f Makefile config.status
realclean:: distclean
rm -f configure
extraclean:: distclean
rm -f patch* *~* *\#* *.orig *.rej *.bak core a.out
......@@ -67,7 +64,7 @@ configure: configure.in
autoconf
config.status: configure
configure
sh configure --no-create
Makefile: Makefile.in config.status
sh config.status
......@@ -84,7 +81,7 @@ TAGS check::
# Prevent GNU make 3 from overflowing arg limit on system V.
.NOEXPORT:
distfiles = AUTHORS ChangeLog COPYING NEWS README \
distfiles = AUTHORS ChangeLog COPYING INSTALL NEWS README \
*.in configure regex.c regex.h
distdir = regex-$(version)
distargs = version=$(version) distdir=../$(distdir)/$$d
......
Version 0.12
* regex.c does not #define bcmp/bcopy/bzero if they already are.
* regex.h does not redefine `const' if it is already defined, even if
__STDC__ is not defined.
* RE_SYNTAX_ED added (same as POSIX BRE's).
* The following bugs have been fixed, among others:
* The pattern \w+ doesn't infinite loop.
* The pattern ".+\n" is compiled correctly.
* Expressions with more than MAX_REGNUM groups are compiled correctly.
* Patterns that end in a repetition operator (e.g., `*') match
slightly faster if no looping is actually necessary.
Version 0.11 (17 Sep 92)
* Back-references to nonexistent subexpressions, as in the r.e. `abc\1',
......
......@@ -3,9 +3,9 @@ POSIX.2, except for internationalization features.
See the file NEWS for a list of major changes in the current release.
See the file INSTALL for compilation and installation instructions.
(The only thing installed is the documentation; regex.c is compiled into
regex.o, but not installed anywhere.)
See the file INSTALL for compilation instructions. (The only thing
installed is the documentation; regex.c is compiled into regex.o, but
not installed anywhere.)
The subdirectory `doc' contains a (programmers') manual for the library.
It's probably out-of-date. Improvements are welcome.
......
#!/bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf.
# Copyright (C) 1991, 1992 Free Software Foundation, Inc.
# Copyright (C) 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
......@@ -18,14 +18,14 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] [--no-create]
# [--prefix=PREFIX] [--exec_prefix=PREFIX] [--with-PROGRAM] [TARGET]
# Ignores all args except --srcdir, --prefix, --exec_prefix, and --no-create.
# [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE] [TARGET]
# Ignores all args except --srcdir, --prefix, --exec-prefix, --no-create, and
# --with-PACKAGE unless this script has special code to handle it.
trap 'rm -f conftest* core; exit 1' 1 3 15
for arg
do
# Handle --exec_prefix with a space before the argument.
# Handle --exec-prefix with a space before the argument.
if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
# Handle --host with a space before the argument.
elif test x$next_host = xyes; then next_host=
......@@ -35,9 +35,10 @@ do
elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
else
case $arg in
-exec_prefix=* | --exec_prefix=* | --exec_prefi=* | --exec_pref=* | --exec_pre=* | --exec_pr=* | --exec_p=* | --exec_=* | --exec=* | --exe=* | --ex=* | --e=*)
# For backward compatibility, also recognize exact --exec_prefix.
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
-exec_prefix | --exec_prefix | --exec_prefi | --exec_pref | --exec_pre | --exec_pr | --exec_p | --exec_ | --exec | --exe | --ex | --e)
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
next_exec_prefix=yes ;;
-gas | --gas | --ga | --g) ;;
......@@ -61,15 +62,23 @@ do
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
next_srcdir=yes ;;
-with-* | --with-*) ;;
-with-* | --with-*)
package=`echo $arg|sed 's/-*with-//'`
# Delete all the valid chars; see if any are left.
if test -n "`echo $package|sed 's/[-a-zA-Z0-9_]*//g'`"; then
echo "configure: $package: invalid package name" >&2; exit 1
fi
eval "with_`echo $package|sed s/-/_/g`=1" ;;
*) ;;
esac
fi
done
trap 'rm -f conftest* core; exit 1' 1 3 15
rm -f conftest*
compile='${CC-cc} $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
compile='${CC-cc} $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
# A filename unique to this package, relative to the directory that
# configure is in, which we can look for to find out if srcdir is correct.
......@@ -77,12 +86,19 @@ unique_file=regex.c
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
srcdirdefaulted=yes; srcdir=.
if test ! -r $unique_file; then srcdir=..; fi
srcdirdefaulted=yes
# Try the directory containing this script, then `..'.
prog=$0
confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
test "X$confdir" = "X$prog" && confdir=.
srcdir=$confdir
if test ! -r $srcdir/$unique_file; then
srcdir=..
fi
fi
if test ! -r $srcdir/$unique_file; then
if test x$srcdirdefaulted = xyes; then
echo "configure: Can not find sources in \`.' or \`..'." 1>&2
echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2
else
echo "configure: Can not find sources in \`${srcdir}'." 1>&2
fi
......@@ -111,7 +127,7 @@ fi
test -z "$CC" && CC="cc"
# Find out if we are using GNU C, under whatever name.
cat <<EOF > conftest.c
cat > conftest.c <<EOF
#ifdef __GNUC__
yes
#endif
......@@ -119,26 +135,30 @@ EOF
${CC-cc} -E conftest.c > conftest.out 2>&1
if egrep yes conftest.out >/dev/null 2>&1; then
GCC=1 # For later tests.
CC="$CC -O"
fi
rm -f conftest*
# Make sure to not get the incompatible SysV /etc/install and
# /usr/sbin/install, which might be in PATH before a BSD-like install,
# or the SunOS /usr/etc/install directory.
# or the SunOS /usr/etc/install directory, or the AIX /bin/install,
# or the AFS install, which mishandles nonexistent args. (Sigh.)
if test -z "$INSTALL"; then
echo checking for install
saveifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
test -z "$dir" && dir=.
case $dir in
/etc|/usr/sbin|/usr/etc) ;;
/etc|/usr/sbin|/usr/etc|/usr/afsws/bin) ;;
*)
if test -f $dir/install; then
INSTALL="$dir/install -c"
INSTALL_PROGRAM='$(INSTALL)'
INSTALL_DATA='$(INSTALL) -m 644'
break
if grep dspmsg $dir/install >/dev/null 2>&1; then
: # AIX
else
INSTALL="$dir/install -c"
INSTALL_PROGRAM='$(INSTALL)'
INSTALL_DATA='$(INSTALL) -m 644'
break
fi
fi
;;
esac
......@@ -154,8 +174,7 @@ echo checking for AIX
echo checking how to run the C preprocessor
if test -z "$CPP"; then
CPP='${CC-cc} -E'
cat <<EOF > conftest.c
cat > conftest.c <<EOF
#include <stdio.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
......@@ -167,8 +186,7 @@ fi
rm -f conftest*
fi
cat <<EOF > conftest.c
cat > conftest.c <<EOF
#ifdef _AIX
yes
#endif
......@@ -182,8 +200,7 @@ rm -f conftest*
echo checking for DYNIX/ptx libseq
cat <<EOF > conftest.c
cat > conftest.c <<EOF
#if defined(_SEQUENT_)
yes
#endif
......@@ -212,8 +229,7 @@ then
fi
echo checking for minix/config.h
cat <<EOF > conftest.c
cat > conftest.c <<EOF
#include <minix/config.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
......@@ -231,35 +247,63 @@ fi
echo checking for ANSI C header files
cat <<EOF > conftest.c
cat > conftest.c <<EOF
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <limits.h>
#include <float.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
# SunOS string.h does not declare mem*, contrary to ANSI.
echo '#include <string.h>' > conftest.c
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
if egrep "memchr" conftest.out >/dev/null 2>&1; then
# SGI's /bin/cc from Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
cat > conftest.c <<EOF
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#define XOR(e,f) (((e) && !(f)) || (!(e) && (f)))
int main () { int i; for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
eval $compile
if test -s conftest && (./conftest; exit) 2>/dev/null; then
DEFS="$DEFS -DSTDC_HEADERS=1"
fi
rm -f conftest*
fi
rm -f conftest*
echo checking for BSD string and memory functions
echo "#include <strings.h>
main() { exit(0); } t() { rindex(0, 0); bzero(0, 0); }" > conftest.c
if eval $compile; then
:
else
DEFS="$DEFS -DUSG=1"
fi
rm -f conftest*
for hdr in string.h
do
trhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'`
echo checking for ${hdr}
cat > conftest.c <<EOF
#include <${hdr}>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
DEFS="$DEFS -D${trhdr}=1"
fi
rm -f conftest*
done
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo checking for working alloca.h
echo "#include <alloca.h>
main() { exit(0); } t() { char *p = alloca(2 * sizeof(int)); }" > conftest.c
cat > conftest.c <<EOF
#include <alloca.h>
main() { exit(0); }
t() { char *p = alloca(2 * sizeof(int)); }
EOF
if eval $compile; then
DEFS="$DEFS -DHAVE_ALLOCA_H=1"
fi
......@@ -280,8 +324,11 @@ char *alloca ();
#endif
"
echo checking for alloca
echo "$decl
main() { exit(0); } t() { char *p = (char *) alloca(1); }" > conftest.c
cat > conftest.c <<EOF
$decl
main() { exit(0); }
t() { char *p = (char *) alloca(1); }
EOF
if eval $compile; then
:
else
......@@ -290,33 +337,34 @@ fi
rm -f conftest*
if test -n "$alloca_missing"; then
SAVELIBS="$LIBS"
# Maybe alloca is in a different library.
#if test -f /usr/ucblib/libucb.a; then
# Avoid the broken BSD compatibility library as much as possible.
#LIBS="$LIBS -L/usr/ucblib -lc -lucb" trylib=-lucb # SVR4
#el
if test -f /lib/libPW.a; then
LIBS="$LIBS -lPW" trylib=-lPW # SVR2 and SVR3
fi
if test -n "$trylib"; then
alloca_missing=
echo checking for alloca in $trylib
echo "$decl
main() { exit(0); } t() { char *p = (char *) alloca(1); }" > conftest.c
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
# that cause trouble. Some versions do not even contain alloca or
# contain a buggy version. If you still want to use their alloca,
# use ar to extract alloca.o from them instead of compiling alloca.c.
ALLOCA=alloca.o
fi
prog='/* Ultrix mips cc rejects this. */
typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *p;
char **p2;
/* HPUX 7.0 cc rejects these. */
++p;
p2 = (char const* const*) p;'
echo checking for working const
cat > conftest.c <<EOF
main() { exit(0); }
t() { $prog }
EOF
if eval $compile; then
:
else
alloca_missing=1
DEFS="$DEFS -Dconst="
fi
rm -f conftest*
fi
if test -n "$alloca_missing"; then
LIBS="$SAVELIBS" ALLOCA=alloca.o
fi
fi
if test -z "$prefix"
then
......@@ -326,7 +374,7 @@ then
test -z "$dir" && dir=.
if test $dir != . && test -f $dir/gcc; then
# Not all systems have dirname.
prefix=`echo $dir|sed 's,/[^/][^/]*$,,'`
prefix=`echo $dir|sed 's%/[^/][^/]*$%%'`
break
fi
done
......@@ -335,28 +383,35 @@ fi
if test -n "$prefix"; then
test -z "$exec_prefix" && exec_prefix='$(prefix)'
prsub="s,^prefix[ ]*=.*$,prefix = $prefix,"
test -z "$exec_prefix" && exec_prefix='${prefix}'
prsub="s%^prefix\\([ ]*\\)=\\([ ]*\\).*$%prefix\\1=\\2$prefix%"
fi
if test -n "$exec_prefix"; then
prsub="$prsub
s,^exec_prefix[ ]*=.*$,exec_prefix = $exec_prefix,"
s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%\
exec_prefix\\1=\\2$exec_prefix%"
fi
trap 'rm -f config.status; exit 1' 1 3 15
echo creating config.status
rm -f config.status
cat <<EOF > config.status
cat > config.status <<EOF
#!/bin/sh