Mon Dec  9 17:21:03 1996  Tom Tromey  <tromey@cygnus.com>

	* Makefile.am (.c.x): Use guile-snarf.

Sun Dec  1 00:00:25 1996  Tom Tromey  <tromey@cygnus.com>

	* PLUGIN/greet: Removed.
	* Makefile.am, aclocal.m4: New files.
	* configure.in: Updated for Automake.

Wed Nov 27 22:16:32 1996  Jim Blandy  <jimb@baalperazim.frob.com>

	* PLUGIN/guile.config (xtra_dependencies): Add final newline.

Sun Oct 27 01:27:24 1996  Gary Houston  <ghouston@actrix.gen.nz>

	* rgx.c (scm_regex_error): use SCM_SYMBOL to declare
 	scm_regex_error_key.

Mon Oct 14 04:47:32 1996  Gary Houston  <ghouston@actrix.gen.nz>

	* Makefile.in (depends): add -I.. to gcc flags.  Make the addition
	of dependencies to Makefile.in automatic.  Update the dependencies.

Mon Oct 14 06:08:18 1996  Mikael Djurfeldt  <mdj@woody.nada.kth.se>

	* rgx.c (scm_regex_error): Renamed lgh_error --> scm_error.
	(I suppose we have to do this until lgh is finished.)

Sun Oct 13 08:50:08 1996  Gary Houston  <ghouston@actrix.gen.nz>

	* rxposix.c (rx_regexec): was returning REG_NOMATCH if anchored,
 	which breaks REG_NEWLINE.  Instead, if rules->newline_anchor is
 	set then search for the next '\n'.

Thu Oct 10 17:50:24 1996  Jim Blandy  <jimb@totoro.cyclic.com>

	* Makefile.in (headers): Include rgx.h in the distribution.

Sun Oct  6 06:20:46 1996  Gary Houston  <ghouston@actrix.gen.nz>

	* rgx.c (scm_regexec): Changed the default return type to be
 	similar to regexec in guile-iii: a newly allocated vector with
 	match indices.  This provides all the information required: the
 	justification for the all the other return types is presumably
 	efficiency.  A list of strings is now returned by passing a string
 	for match_pick.

	See ../doc/regex.txt.

	* rgx.h: new file.

	* rgx.c (scm_init_rgx): intern various regexp control symbols,
	REG_EXTENDED etc.
	Use K&R function definitions, include rgx.h.

Thu Oct  3 00:37:59 1996  Jim Blandy  <jimb@totoro.cyclic.com>

	* rgx.c (print_regex_t, print_dfa_t): Change 'writing' argument to
	be a general print state, in accordance with new smob interface.

Sat Sep 28 04:51:33 1996  Gary Houston  <ghouston@actrix.gen.nz>

	* rgx.c: define scm_regex_error_key.
	(scm_regex_error): new procedure.
	(scm_init_rgx): add feature "regex".
	include libguile/feature.h.
	(scm_regcomp, scm_regexec, scm_regexp_to_dfa): use scm_regex_error
	instead of returning the error status.
	(scm_regcomp): use scm_memory_error for allocation errors.
	(scm_regexec): delete useless code assigning to starts and ends.
	Return something useful when match_pick is #t or undefined.
	Fix pmatch[i].rm_so >= 0 check when match_pick is a vector.

	* PLUGIN/guile.config: add librx.a to xtra_dependencies.

Wed Sep 11 14:39:47 1996  Jim Blandy  <jimb@floss.cyclic.com>

	* Makefile.in (ALL_CFLAGS): Delete reference to libguile header
	directory; @opt_cflags@ is supposed to provide that.
	* configure.in: Include '-I..' in opt_cflags, if we're being
	compiled as part of libguile.  No need to give '-I../libguile'.

Tue Sep 10 16:56:33 1996  Jim Blandy  <jimb@floss.cyclic.com>

	* rgx.c: #include smob.h, mallocs.h, and chars.h.  Use
	<libguile/MUMBLE> whenever #including Guile headers.

Wed Sep  4 01:24:36 1996  Jim Blandy  <jimb@floss.cyclic.com>

	* configure.in: Include $(srcdir)/.. in the header search path, so
	we can find libguile headers under the name <libguile/MUMBLE.h>.

Fri Aug 30 16:05:56 1996  Jim Blandy  <jimb@floss.cyclic.com>

	* Makefile.in (bindir, libdir, includedir, infodir): Use the
	autoconf-supplied values, instead of deriving them ourselves.

Thu Aug 15 02:07:40 1996  Jim Blandy  <jimb@totoro.cyclic.com>

	* PLUGIN/guile.inits: Add scm_init_rgx here.  The Guile shell
	should call it, not libguile itself.

Wed Aug  7 08:27:03 1996  Gary Houston  <ghouston@actrix.gen.nz>

	* Fixes motivated by Petr Adamek <adamek@mit.edu>:

	* spelling fixes.

	* rxall.h: include stdlib.h if STDC_HEADERS.

	* rgx.c, rxnode.c, rxposix.c: include string.h.

Thu Aug  1 03:07:59 1996  Jim Blandy  <jimb@totoro.cyclic.com>

	* Makefile.in: Updated to work with Guile's dist system.
	(ancillery): Omit ../doc files; doc/Makefile.in handles them.
	Omit PLUGIN; that needs special handling in the dist-dir target.
	(dist-dir): New target.
	(manifest): Deleted.

Tue Jun 18 11:44:46 1996  Tom Lord  <lord@beehive>

	* rxanal.c (rx_start_superstate): Don't release an old superstate
	unless it is known that the new superstate has been successfully
	constructed.

Thu Jun 13 11:18:25 1996  Tom Lord  <lord@beehive>

	* rxspencer.c etc. (rx_next_solution et al.): remove all traces of
	rx_maybe

Wed May 22 12:28:22 1996  Tom Lord  <lord@beehive>

	* rxanal.c (rx_start_superstate): Preserve the invariant
	that a locked superstate is never semifree.

Fri May 17 10:21:26 1996  Tom Lord  <lord@beehive>

	* rgx.c (scm_regexec): added match data support for
	"#\c" -- the final_tag of the match (for the cut operator).

	* rxspencer.c (rx_next_solution): propogate is_final data
	up through the tree of solution streams.

	* rxnfa.h (struct rx_nfa_state): 
	unsigned int is_final:1 => int is_final for the cut
	operator.

	* rxanal.c (rx_match_here_p): 
	* rxanal.c (rx_fit_p): 
	* rxanal.c (rx_longest): When a final state is detected,
	propogate the value of the is_final flag back to the
	caller.  It may contain data generated by a "cut" operator.

	* rxsuper.c (superset_allocator): when marking a superset
	final, mark it with the maximum of the is_final fields
	of the constituent nfa states (for the "cut" operator which
	allows users to set that value).

	* rxgnucomp.c (rx_parse): Replace "[[:set...:]]" with
	"[[:cut n:]]".  cut is regular but set is not, so cut
	leads to much faster running patterns.

	* rxnfa.c (rx_build_nfa): compile r_cut nodes.   r_cut
	nodes match the empty string and nothing more.  A parameter
	to the cut node determines whether the empty match leads
	to a final state, or to a failure.

	* rx.c (rx_free_rx): 
	* rxsuper.c (release_superset_low): 
	* rxanal.c (rx_start_superstate): fixed the test for a cached
	starting superset to reflect the simplified memory management
	of `struct rx' (they are now explicitly freed using rx_free_rx)
	and `struct rx_superset' (they are now ultimately freed using
	free and not kept on a free-list).   Now the `start_set' field
	of a `struct rx' is only non-0 if it is valid.

Tue May 14 08:56:22 1996  Tom Lord  <lord@beehive>

	* rxspencer.h (typedef rx_contextfn): take an entire expression
	tree instead of just a context type since for some context types,
	parameters in the tree matter ([[:set...:]])

	* rxstr.c (rx_str_contextfn): handle [[:set...:]] operator.

	* rxgnucomp.c (rx_parse): added the [[:set n = x:]] construct
	to make it easier to lex using regexps.

	* rxposix.c (regnexec): 
	"This pattern (with 10 subexpressions and 9 backreferences) made no entries
	in a match array of size 5." (from doug@plan9.att.com)

	* rxgnucomp.c (rx_parse): new compilation state variable:
	
	last_non_regular_expression When compiling, keep track of two, not
	one point in the tree for concatenating new nodes.  The
	*last_non_regular_expression point is always the same as the
	*last_expression or is a parent of that node.  Concatenations of
	regular constructs happen at last_expression, others at
	last_non_regular_expression.  The resulting trees have
	"observable" constructs clustered near the root of the tree which
	allows those optimizations that apply only to regular subtrees to
	have a greater impact on overall performance.
	

	* rxspencer.c (rx_next_solution): interval satisfaction test was wrong.

	* rxanal.c (rx_posix_analyze_rexp): An interval is always observed (not truly
	a regular expression).

	* rxstr.c (rx_str_contextfn): "when you're doing
	back-reference matching case insensitively (with REG_ICASE set), 
	you are supposed to also do the BR matching without paying attention
	to case.

Mon May 13 09:59:48 1996  Tom Lord  <lord@beehive>

	* rxspencer.c (rx_next_solution): Don't construct
	an NFA when comparing an r_string to some text -- 
	just do a strcmp-like operation.

	* rxgnucomp.c (rx_parse): new variable: n_members
	An array keeping track of the size of csets generated 
	by inverting the translation table.

	(rx_parse): validate_inv_tr and n_members were way to big --
	each only needs CHAR_SET_SIZE elements.

Mon May 13 09:29:42 1996  Zachary Weinberg <zaw2@rabi.phys.columbia.edu>

	* rxnode.c (rx_init_string): New data structure for strings -- 
	part of the overall support for constant string optimization.

	* rxnode.c (rx_mk_r_str etc.): a new type of rexp-node --
	an abbreviation for a concatenation of characters.

	* rxdbug.c (print_rexp): Added support for printing r_str nodes.

	* rxgnucomp.c (rx_parse): initial support for constant strings.



Wed Jan 31 19:59:46 1996  Preston L. Bannister  <pbannister@ca.mdis.com>

	Changes to compile clean under MSVC 4.0 (w/o warnings).
	Added makefile for MSVC 4.0 (librx.mak).

	[! Changes marked *** were made differently from the submitted
	   patches -- the descriptions may not apply exactly.]

	hashrexp.c:	Added __STDC__ variant of function definition.
	***	rxall.h:	Pull in standard C header files.  
	***	                Map bzero() to memset().
	rxanal.c:	Remove unused variable.
	rxdbug.c:	Added stdio include.
	rxhash.c:  	Remove unused variable.
	rxnfa.c:	Remove {re,m}alloc definition.
	rxposix.c:	Remove unused variable.
	***		Cast parameter nmatch declared as size_t to int on use.
	***		Perhaps nmatch should be passed as int?
			[made related variables size_t]
	rxspencer.c:	Add rxsimp.h include.
			Remove unused variables and labels.
	rxunfa.c:	Remove unused variable.
			

Tue Jan 30 10:29:16 1996  Tom Lord  <lord@beehive>

	* rxsimp.c (rx_simple_rexp): move assignment out of if.
	("Preston L. Bannister" <preston@speed.net>)

	* Makefile.in (CFLAGS, ALL_CFLAGS): rearranged to allow user
	specified CFLAGS.

	* rxposix.h: comment stuff after #endif.
	(reported by Eric Backus <ericb@lsid.hp.com>)

Mon Jan  1 13:03:28 1996  Jason Molenda  (crash@phydeaux.cygnus.com)

        * rxbasic.c (rx_basic_make_solutions): argument called 'rexp' is
        now called 'expression'.  Argument 'str' should be unsigned char.

        * rxbasic.h (rx_basic_make_solutions): argument 'str' should be
        unsigned char.

        * rxsuper.h (rx_handle_cache_miss, rx_superstate_eclosure_union): 
        syntax error in prototypes. [Actually fixed in rxsuper.c, from which
	that section of rxsuper.h is derived.]

        * rxnode.c (rx_mk_r_cset): fix function decl.

Tue Jan 30 09:43:28 1996  Tom Lord  <lord@beehive>

	* rxposix.c (regnexec): pass rx_regexec "regs", not "pmatch".
	"regs" is valid even if "pmatch" is NULL.
	(Fixes testsuite bug "pragma" reported by John.Szetela@amd.com (John J. Szetela)
	also fixes bug reported by Jongki Suwandi <jongkis@loc1.tandem.com>)

Fri Jan 26 14:23:20 1996  Tom Lord  <lord@beehive>

	* rxdbug.c (AT): Use the GCC feature only if HAVE_POSITIONAL_ARRAY_INITS
	is defined.

	* Makefile.in: Fixed depends target to not include system
	header files.  Use @exec_prefix@. (Derek Clegg <Derek_Clegg@next.com>)

Thu Jan  4 16:13:07 1996  Tom Lord  <lord@beehive>

	* rxposix.c (rx_regexec): Don't bother checking to see if an
	anchored pattern matches other than at the beginning of a string.
	
	(rx_regmatch): Don't bother looking for matches that are the
	wrong length if the overall length of the expression is known.
	This duplicates an optimization already in rx_make_solutions and
	rx_basic_make_solutions, but its worth it.  The make_solutions
	optimization applies to fixed length subexpressions of a variable
	length expression.  The regmatch optimization can avoid (in sed,
	for example) many, many uneeded calls to make_solutions and
	rx_next_solution.

	* rxspencer.c (rx_make_solutions, rx_basic_make_solutions): If the
	expression is fixed length and that length doesn't match the
	buffer, don't bother constructing a new solution stream -- just
	return the canonical "no solution" stream.


Sat Dec 30 21:19:31 1995  Tom Lord  <lord@beehive>

	* *.[ch]: posixification and algorithmic improvement (thanks
	henry!).

