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 <kayvan@satyr.Sylvan.COM>)

	* 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 <netrom@find2.denet.dk>.

	* 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 <michael@maple.cs.mun.ca> 

	``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.



