Wed Oct 4 12:10:39 1995 Ian Lance Taylor * configure.in: If using GCC, assume we always have alloca. This works around problems with broken cross setups. Use AC_FUNC_ALLOCA rather than AC_ALLOCA. * configure: Rebuild. Wed Sep 20 13:55:42 1995 Ian Lance Taylor * Makefile.in (maintainer-clean): New synonym for realclean. Mon Jun 19 00:33:22 1995 Jason Merrill * Makefile.in: Massage broken shells that require 'else true'. Sun Jun 18 23:24:00 1995 Per Bothner * Makefile.in (distclean): Also remove config.cache and config.log. Thu Jun 8 22:42:58 1995 Jason Merrill * configure.in: Add support for PIC flag configuration. * configure: Regenerate. * Makefile.in: Adjust accordingly. Mon Jun 5 18:46:06 1995 Jason Merrill * Makefile.in (PICFLAG): New macro. (rx.o): Depend on stamp-picdir. (.c.o): Also build pic object. (stamp-picdir): New rule. (clean): Remove pic and stamp-picdir. Tue May 23 12:11:28 1995 Per Bothner * rx.c (regcomp and other POSX.2 functions): Leave them out for now, because they conflict with Motif on HPUX. * rx.c (re_syntax_table): Only declare #ifndef RX_WANT_RX_DEFS; otherwise we duplicate the declaration in rx.h. * rx.c (re_search_2_fetch_char): Add missing cast. Sun Apr 2 23:24:52 1995 Tom Lord * rx.h (rx_search): check for and propogate internal errors correctly (bogus check sometimes mistook ok returns for internal errors). Sun Feb 12 19:28:22 1995 Tom Lord (lord@x1.cygnus.com) * rx.h (rx_search): From: hankedr@duc.auburn.edu (Darrel Hankerson) 2. I have some problems understanding the code which sets search_state.free_chunks=0. It appears to me that since this is used to track alloca'd mem, that it should be done once at the top of rx_search(). Indeed, this also fixes the problem in the tests I'm running, but I don't have confidence in this "solution". [looks right to me. -tl] * rx.c: Two reported by kwzh. (re_search_2_get_burst): in the two string case, when computing `inset', add in pos->offset. (re_search_2_fetch_char): watch for the case when pos is just to the left of the second string, pos refers to the second string, but the first string is provided. This can happen at the very beginning of a match when the first thing after matching the priming character is a side effect like re_se_wordend. * rx.h (rx_search): patches (marked by /*|*/) from From: hjl@nynexst.com (H.J. Lu). One fixes a clear bug in a loop termination test. The other i'm not sure about yet, but it doesn't break the sed tests. * rx.c (re_compile_pattern): Initialize buf.rx.cset_size. (Fixes problem report from Kayvan Sylvan ) * rx.c (#define RX_DECL): cleaned up handling of this macro. * rx.c (re_comp): From hjl@nynexst.com Define _GNU_SOURCE. Test for USE_BSD_REGEX around teh BSD entry points. Under BSD, treat the empty-string pattern like the NULL pattern. Also under BSD, rx_syntax_options --> re_syntax_options. Also, rx_exec --> re_exec and rx_registers --> re_registers. * rx.c (rx_compile): From: kwzh@gnu.ai.mit.edu (Karl Heuer) The `\sX' handler ends with `goto append_node' but without setting the `append' variable first. This patch should fix it. * rx.c (regcomp): explicitly zero the field syntax_parens. Reported/fix suggested by Morten Holmqvist . * rx.h (changes under and around ifdef emacs): From: kwzh@gnu.ai.mit.edu (Karl Heuer) Here's a patch (for 0.06) to fix most of the other problems I mentioned. Some of the cpp conditionals in rx.h were ending at the wrong place and/or were incorrectly commented; fixing these took care of some of the missing declarations. (fastmap_search): unnecessary defaults to switch statements to shut-up "gcc -Wall". Thu Nov 24 18:39:42 1994 Tom Lord (lord@x1.cygnus.com) These fixes let's rx pass the spencer.tests from grep. * rx.h (rx_search): moved slightly out of date debugging code from RX_DEBUG to RX_DEBUG_0. * rx.h (rx_search): in the outer loop, if get_burst returns that there are no more characters, consider the possibility of an empty match before failing. * rx.h (rx_search): when computing search_end, don't waste time computing MIN and MAX of values already forced into range. * rx.h (rx_search): when making RANGE fit within TOTAL_SIZE, don't forget to allow the possible empty match at the end of string. * rx.c (is_anchored): the equations solving side-effect anchoring were wrong for the r_alternate case. The interesting thing about this bug is that it disguises itself as a precedent bug between | and ^ because of an optimization in the search function that checks rxb->begbuf_only (a return value of is_anchored). * rx.c: Fix the print-name rx_se_win (missing comma). Fix the function print_cset to print non-printable characters as octal. Sat Nov 5 20:01:46 1994 Jason Merrill (jason@phydeaux.cygnus.com) * Makefile.in (LIBCFLAGS): New variable. (.c.o): Use it. Thu Sep 1 16:23:21 1994 Tom Lord (lord@x1.cygnus.com) * rx.c: applied patches from H J Lu to unrot BSD compatibility code. Mon Aug 29 16:48:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * Makefile.in (AR_FLAGS): Define. (librx.a): Use $(AR) and $(AR_FLAGS). Fri Aug 26 11:37:36 1994 Ian Lance Taylor (ian@cygnus.com) * configure.in: Call AC_PROG_CPP explicitly. * configure: Rebuilt. Thu Aug 25 18:19:47 1994 Tom Lord (lord@x1.cygnus.com) * rx.[ch], configure.in: use __const__ instead of AC_CONST. Only include stdio once. Don't check for memory.h. Tue Aug 16 12:12:01 1994 Tom Lord (lord@x1.cygnus.com) * rx.[ch]: LGPL instead of GPL Mon Aug 15 16:24:16 1994 Per Bothner (bothner@kalessin.cygnus.com) * rx.h (rx_search): When checking if we've gotten to the end, handle the case that we're searching backwards. Tue Jun 21 12:40:50 1994 Jim Kingdon (kingdon@lioth.cygnus.com) * rx.c (re_rx_search): New function, exports rx_search. * Makefile.in (clean): Also remove librx.a. Fri Jun 3 12:16:45 1994 Tom Lord (lord@x1.cygnus.com) * rx.c(re_search_2_fetch_char): fixed a bug that caused it to ignore OFFSET. Thu May 26 14:05:17 1994 Tom Lord (lord@x1.cygnus.com) * rx.[ch]: From: Michael Rendell ``The problem seems to lie in the casting between pointers and integers (pointers on the alpha are 64 bits, ints 32 bits, longs 64 bits). The core dump happens in rx_compactify_nfa(), in the first for loop in the while(eclose) loop -- rx_hash_find() returns 0, which is dereferenced.'' The patch changed the type of rx_hash_masks to long and also a use of `int' to hold a side effect in rx_search. Sat May 14 00:45:14 1994 Tom Lord (lord@x1.cygnus.com) * rx.c, rx.h: rearranged all the code so that all the rx functions can be exported or hidden (define RX_WANT_RX_DEFS when compiling and when including rx.h). Wed May 11 01:15:56 1994 Tom Lord (lord@rtl.cygnus.com) * rx.c, rx.h: added rx_search -- searching in arbitrarily fragmented strings, continuation support. Wed May 4 13:56:55 1994 Tom Lord (lord@rtl.cygnus.com) * rx.c, rx.h: Started independent maintainence of these. ------ version 0.04 ------ Fri May 13 02:31:13 1994 Tom Lord (lord@x1.cygnus.com) * rx.c: eliminated the weirdo custom allocators. Fixed some bugs (but lost the ChangeLog entries). Wed May 11 06:09:31 1994 Chip Salzenberg (chip@fin.uucp) * rx.c (rx_superstate_eclosure_union): Always return a value. ------ version 0.03 ------ Fri Aug 6 01:57:28 1993 Tom Lord (lord@unix1.andrew.cmu.edu) * rx.c (re_search_2): sped up the fastmap search a little to as to not be slower than regex.c on simple patterns. Rx will still lose by a couple instructions in some degenerate cases but mostly will win. Thu Aug 5 11:39:57 1993 Tom Lord (lord@thisbe.weh.andrew.cmu.edu) * rx.c (re_search_2 & compilation front-ends): cache the starting superset of super-nfa's so that it isn't necessary to do an eclosure union for every call to re_search_2. * rx.c (re_search_2): (from Eric Backus) arrange to call alloca(0) from a shallower stack frame than re_search_2 if callling it at all. This could use a better cpp test. Right now, an extra function call is added to re_search_2 unles __GNUC__ is defined. If there were something like _HAVE_LOSER_ALLOCA_.... * rx.c (rx_compile, re_search_2, several new fns): changed the order of side effect lists so that possible futures that begin with complex effects more to the right are explored after futures more to the left. Added a noop complex effect to alts and stars to guarantee they are explored in the right order. An optimization after the parse removes some from the alts (and not all stars get them in the first place). Changed the `best match' criterea -- now that possible futures are ordered posixly, we only want to check the length of the match. For a given length, the best subexpression partitioning is the first one found. A side effect of this is that Rx will always return the same register assignements for a given regexp/input text. Bummer :-) / 2. ------ version 0.02 ------ ed Jul 21 13:10:56 1993 Tom Lord (lord@unix8.andrew.cmu.edu) * rx.c (re_search_2): elaborated on the rule for picking the best match so that the lengths of subexpressions are taken into account. This is for Posix compatability. ------ version 0.01 ------ Sun Jun 13 17:20:35 1993 Tom Lord (lord@tsunami.ucc.andrew.cmu.edu) * This is the first release of rx.c. Although some of the code is derived from regex.c, there is not much continuity between the two implementations.