Commit Graph

820 Commits

Author SHA1 Message Date
Ulrich Drepper
78678039a4 Update.
2004-03-10  Richard Henderson  <rth@redhat.com>

	* sysdeps/generic/errno.c: Disable versioning for rtld.

	* sysdeps/generic/Makefile (elf/shared): Add unwind-pe.
	* sysdeps/generic/unwind-pe.c: New file.
	* sysdeps/generic/unwind-pe.h: Only prototypes for _LIBC without
	_LIBC_DEFINITIONS.

	* posix/regexec.c: Likewise.
2004-03-10 10:04:19 +00:00
Ulrich Drepper
3f2fb22342 [BZ #16]
Update.
2004-03-09  Ulrich Drepper  <drepper@redhat.com>

	* stdlib/qsort.c (_quicksort): Initialize first stack element [BZ #16].

2004-03-05  Jakub Jelinek  <jakub@redhat.com>

	* posix/regexec.c (regexec): Return with error on unknown eflags.
	Replace weak_alias with versioned_symbol.
	(__compat_regexec): New.
	* posix/Versions (libc): Add regexec@GLIBC_2.3.4.
2004-03-10 06:46:51 +00:00
Ulrich Drepper
8b9d605485 Update.
2004-02-09  Jakub Jelinek  <jakub@redhat.com>

	* posix/Makefile (tests): Add tst-vfork2.
	* posix/tst-vfork1.c (do_test): Fix comment.
	* posix/tst-vfork2.c: New test.
2004-03-10 05:25:48 +00:00
Ulrich Drepper
511676f708 Update.
2004-03-08  Paul Eggert  <eggert@cs.ucla.edu>

	Merge from gnulib.  We now assume C89 or better.
	* posix/getopt1.c (const): Remove.
	* posix/getopt.c (const): Likewise.
	* posix/getopt1.c (getopt_long, _getopt_long_r, getopt_long_only,
	_getopt_long_only_r, main): Use prototypes, not old-style definitions.
	* posix/getopt.c (exchange, _getopt_initialize, _getopt_internal_r,
	_getopt_internal, getopt, main): Likewise.
	* posix/getopt.h (getopt, getopt_long, getopt_long_only): Likewise.
	* posix/getopt.c [!defined VMS || !HAVE_STRING_H]:
	Include <string.h> regardless.  No need for <strings.h>.
	[!defined _LIBC]: Include "gettext.h" rather than rolling it ourselves.
	(_): Define to gettext always.
	(my_index): Remove: all uses changed to strchr.
	(strlen): Remove declaration.
	* posix/getopt.h (struct option.name): Always const char *.

2004-03-08  Marcus Brinkmann  <marcus@gnu.org>

	* posix/getopt.h (_getopt_internal): Move to ...
	* posix/getopt_int.h: ... here.  New file.
	* include/getopt_int.h: New file.
	* include/getopt.h: Remove libc_hidden_proto for getopt_long
	and getopt_long_only.
	* posix/getopt1.c: Include "getopt_int.h".  Remove
	libc_hidden_def for getopt_long and getopt_long_only.
	(_getopt_long_r, _getopt_long_only_r): New functions.
	* posix/getopt.c: Include "getopt_int.h".
	(__getopt_initialized): Variable removed.
	(nextchar, ordering, posixly_correct, first_nonopt, last_nonopt):
	Static variables removed.
	(nonoption_flags_max_len, nonoption_flags_len) [_LIBC &&
	USE_NONOPTION_FLAGS]: Static variables removed.
	(getopt_data): New static variable.
	(SWAP_FLAGS): Use d->__nonoption_flags_len instead
	nonoption_flags_len.
	(exchange): Add new argument D of type struct getopt_data *.
	Replace optind with d->optind, optarg with d->optarg, opterr with
	d->opterr, optopt with d->optopt, nextchar with d->__nextchar,
	first_nonopt with d->__first_nonopt, last_nonopt with
	d->__last_nonopt, d->ordering with d->__ordering,
	d->posixly_correct with d->__posixly_correct (which is now an
	int instead a string, so fix users), nonoption_flags_len
	with d->__nonoption_flags_len, nonoption_flags_max_len with
	d->__nonoption_flags_max_len.
	(_getopt_initialize): Likewise.
	(_getopt_internal): Rename to ...
	(_getopt_internal_r): ... this.  Also add new argument D of type
	struct getopt_data * and use of members of D rather than global or
	static variables as described for exchange() above.  Add new argument
	to invocations of _getopt_initialize and exchange.
	(_getopt_internal): Reimplement in terms of _getopt_internal_r.
	* argp/argp-parse.c: Include <getopt_int.h>.
	[_LIBC]: Do not include <bits/libc-lock.h>.
	[!_LIBC && HAVE_CTHREADS_H]: Do not include <cthreads.h>.
	[!_LIBC] (_argp_hang): Make static.
	(getopt_lock, LOCK_GETOPT, UNLOCK_GETOPT): Remove.
	(_argp_unlock_xxx): Remove.
	(parser_init): Do not use LOCK_GETOPT.
	(parser_finalize): Do not use UNLOCK_GETOPT.
	(struct parser): New member OPT_DATA.
	(parser_init): Initialize parser->opt_data.  Use
	parser->opt_data.opterr instead of opterr.
	(parser_parse_opt): Use parser->opt_data.optarg instead optarg.
	(parser_parse_next): Likewise.  Use parser->opt_data.optind
	instead optind.  Use parser->opt_data.optopt instead of optopt.
	Call _getopt_long_only_r and _getopt_long_r instead of
	getopt_long_only and getopt_long, and pass the extra argument.
2004-03-09 10:36:53 +00:00
Ulrich Drepper
c1b202903d Update.
2004-03-09  Ulrich Drepper  <drepper@redhat.com>

	* posix/Makefile (tests): Add tst-vfork1.
	* posix/tst-vfork1.c: New file.
2004-03-09 08:50:17 +00:00
Ulrich Drepper
58845a7030 Update.
* include/wctype.h: Add libc_hidden_proto for __towctrans.
	* wctype/towctrans.c: Add libc_hidden_def.

	* libio/memstream.c (open_memstream): Use _IO_init with INTUSE.

	* posix/regexec.c (transit_state): Remove unused variable
	next_state.

	* posix/regcomp.c (init_dfa): Use __btowc instead of btowc.
2004-03-05 10:54:16 +00:00
Ulrich Drepper
6fefb4e0b1 Update.
2004-01-15  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex.h (REG_STARTEND): Define.
	* posix/regexec.c (regexec): Check for REG_STARTEND.
2004-03-04 23:37:01 +00:00
Ulrich Drepper
4c595adb60 Update.
2004-02-29  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regexec.c (transit_state): Don't handle state == NULL.
	Move state log and backreference management...
	(merge_state_with_log): ... to this function.
	(find_recover_state): New function.
	(check_matching): Use find_recover_state to get a non-NULL
	state when an invalid state is reached.  Compute the amount
	of initial characters to be skipped less conservatively when
	multi-byte character sets are in use.  Do not check
	dfa->nbackref if the state log is NULL.  Initialize err.
	(acquire_init_state_context): Expect err to be initialized.
	Fix spacing.

2004-03-05  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/sparc/sparc32/elf/start.S: Handle PIEs.
	* sysdeps/sparc/sparc64/elf/start.S: Likewise.
2004-03-04 23:28:06 +00:00
Ulrich Drepper
266c1f50df Update.
2004-02-26  Ulrich Drepper  <drepper@redhat.com>

	* posix/regcomp.c (parse_expression): Avoid duplication in calls
	to build_charclass_op.

	* posix/regcomp.c (parse_expression): Add cast to (const unsigned
	char *) in calls to `build_charclass_op'.
2004-02-26 20:33:23 +00:00
Ulrich Drepper
1756853774 Update.
2004-02-24  Arnold D. Robbins  <arnold@skeeve.com>

	* posix/regex_internal.c (build_wcs_upper_buffer): Enclose
	`offsets_needed' label in `#ifdef _LIBC' to silence `unused label'
	compiler warning.

2004-02-24  Nelson H.F. Beebe  <beebe@math.utah.edu>

	* posix/regex_internal.c (build_wcs_buffer): Add cast to char* in call
	to `wcrtomb'.
	* posix/regex_internal.h (bitset_not, bitset_merge, bitset_not_merge,
	bitset_mask, re_string_char_size_a, re_string_wchar_at,
	re_string_elem_size_at): Change to use prototypes.
	(re_string_char_size_at, re_string_wchar_at,
	re_string_elem_size_at): Declare as `internal_function'.
2004-02-26 01:32:44 +00:00
Ulrich Drepper
5605e1177d Update.
2004-02-23  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/posix/getaddrinfo.c (gaih_inet): If _res has not been
	inited yet, try to init it before saving old _res.options.
	* posix/Makefile (xtests): Add bug-ga2.
	(generated): Add bug-ga2.mtrace and bug-ga2-mem.
	(xtests): Depend on bug-ga2-mem.
	($(objpfx)bug-ga2-mem, bug-ga2-ENV): New.
	* posix/bug-ga2.c: New test.
2004-02-23 19:54:06 +00:00
Andreas Jaeger
4ba3c7461c * posix/bug-ga1.c: Include <string.h> for memset prototype. 2004-02-21 18:40:55 +00:00
Ulrich Drepper
bf14fb7c60 [BZ #6]
Update.
	* posix/regexec.c (transit_state): Fix typo in commented-out code
	[BZ #6].
2004-02-16 19:27:53 +00:00
Ulrich Drepper
380f06d397 Update.
* posix/Makefile (tests): Add bug-ga1.
	* posix/bug-ga1.c: New file.
2004-02-16 19:07:47 +00:00
Ulrich Drepper
2a1ece14a5 Update.
2004-02-12  Ulrich Drepper  <drepper@redhat.com>

	* posix/getopt.h: Add some non-gcc support.  Patch by Aharon Robbins.

2004-02-12  Mark Brown  <bmark@us.ibm.com>

	* sysdeps/ia64/fpu/e_fmodf.S: Added text of Intel license.

	* sysdeps/powerpc/fpu/s_lrint.c: Move to...
	* sysdeps/powerpc/powerpc32/fpu/s_lrint.c: ... here.
	* sysdeps/powerpc/fpu/s_llrint.c: Move to...
	* sysdeps/powerpc/powerpc32/fpu/s_llrint.c: ... here.
	* sysdeps/powerpc/fpu/s_llrintf.c: Move to...
	* sysdeps/powerpc/powerpc32/fpu/s_llrintf.c: ... here.
	* sysdeps/powerpc/powerpc64/fpu/s_lrint.c: New file.
	* sysdeps/powerpc/powerpc64/fpu/s_llrint.c: New file.
	* sysdeps/powerpc/powerpc64/fpu/s_lrintf.S: New file.
	* sysdeps/powerpc/powerpc64/fpu/s_llrintf.c: New file.
2004-02-13 04:49:04 +00:00
Ulrich Drepper
6c2a04a7e8 Update.
2004-02-11  Jakub Jelinek  <jakub@redhat.com>

	* posix/regexec.c (check_node_accept_bytes): Return 0 if char_len is 0.
	(find_collation_sequence_value): Don't look beyond end of
	SYMB_EXTRAMB table.
	* posix/Makefile (tests): Add bug-regex23.
	(bug-regex23-ENV): New.
	* posix/bug-regex23.c: New file.

	* include/rpc/rpc.h: Declare thread variables with their correct type.
2004-02-11 22:49:57 +00:00
Ulrich Drepper
1e7947dcc9 Update.
2004-02-06  Andreas Schwab  <schwab@suse.de>

	* posix/regcomp.c (build_range_exp): Fix off-by-one.
	(parse_bracket_exp): Likewise.
2004-02-06 18:30:34 +00:00
Ulrich Drepper
15bad1a583 #Update.
2004-02-02  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regexec.c (check_matching): Add P_MATCH_FIRST parameter.
	(re_search_internal): Pass new parameter to check_matching.
	(check_matching): Unless a parenthesized group is found at the
	beginning of the regexp, advance P_MATCH_FIRST until we entered
	a state different from the initial state.
2004-02-02 20:10:21 +00:00
Ulrich Drepper
df759c2a21 Update.
2004-01-28  Paolo Bonzini  <bonzini@gnu.org>

	Merge regex changes in gawk.
	* posix/regcomp.c (build_range_exp) [!_LIBC]: Check validity
	of collation elements.
	* posix/regex.c: Include limits.h.
	* posix/regex.h: Document REG_ECOLLATE correctly.
	* posix/regex_internal.h [!_LIBC && !ENABLE_NLS]: Disable NLS.
2004-01-30 05:22:32 +00:00
Ulrich Drepper
4bb333cdd2 (build_range_exp) [!_LIBC]: Check validity of collation elements. 2004-01-30 05:19:45 +00:00
Ulrich Drepper
c1baba0f7b Update.
2004-01-19  Jakub Jelinek  <jakub@redhat.com>

	* posix/regexec.c (get_subexp): Remove bkref_str variable.
	Extend buffers if needed before comparisons.
	(get_subexp_sub): Handle clean_state_log_if_needed failure.
2004-01-19 20:17:24 +00:00
Ulrich Drepper
82e2ba9a03 Update.
2004-01-13  Ulrich Drepper  <drepper@redhat.com>

	* posix/regex.c: Support crappy compilers and platforms which have
	problems with alloca.
	* posix/regex_internal.h: Likewise.
	Patch by Paolo Bonzini.
2004-01-14 04:11:30 +00:00
Ulrich Drepper
10677727e2 Update.
2004-01-12  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regcomp.c [_LIBC && !RE_ENABLE_I18N]:
	Drop code to support this, it is never true.
	(build_range_exp) [!_LIBC]: Do not create a range
	in MBCSET for a single-byte character set.
	(build_range_exp) [_LIBC]: Do not create a range
	in MBCSET for a single-byte character set without
	collation elements.
	(init_dfa): Do not conditionalize on _LIBC, it
	just makes the code less clear.
	(parse_bracket_exp): Use NON_MATCH variable in
	addition to "mbcset->non_match", not as an
	alternative.
	(build_charclass_op): rename NOT parameter to
	NON_MATCH, use it instead of declaring a variable.
	(parse_bracket_exp) [!_LIBC]: Pass NULL for MBCSET
	if the character set is single-byte.
2004-01-14 02:42:20 +00:00
Ulrich Drepper
294b6bcc13 Update.
2004-01-14  Jakub Jelinek  <jakub@redhat.com>

	* posix/regcomp.c (peek_token_bracket): Check remaining
	string length before re_string_peek_byte (x, 1).
	(parse_bracket_symbol): Likewise.
	* posix/regex_internal.h (re_string_is_single_byte_char): Return
	true at last byte in the string.
	* posix/bug-regex22.c (main): Add new test.
2004-01-14 01:45:37 +00:00
Ulrich Drepper
f39eef7b5d Update.
2004-01-05  Jakub Jelinek  <jakub@redhat.com>

	* posix/regcomp.c (regcomp): Fix comment typo.
	(regfree): Free preg->translate, clear buffer, allocated, fastmap
	and translate fields.

	* posix/regcomp.c (build_charclass, buld_charclass_op): Change first
	argument to unsigned RE_TRANSLATE_TYPE.
	* posix/regex_internal.h (re_string_t): Change trans type to
	unsigned RE_TRANSLATE_TYPE.
	* posix/regex_internal.c (re_string_construct_common): Cast
	trans to unsigned RE_TRANSLATE_TYPE.
	(re_string_peek_byte_case, re_string_fetch_byte_case): Avoid fast
	path if pstr->trans.  Never translate the character through
	pstr->trans.
	* posix/Makefile (tests): Add bug-regex22.
	(bug-regex22-ENV): Set.
	* posix/bug-regex22.c: New test.
2004-01-06 22:12:27 +00:00
Ulrich Drepper
86576b62f4 (regcomp): Fix comment typo. (regfree): Free preg->translate, clear buffer, allocated, fastmap and translate fields.
(build_charclass, buld_charclass_op): Change first
argument to unsigned RE_TRANSLATE_TYPE.
2004-01-06 21:59:24 +00:00
Andreas Jaeger
a2fd078ab1 (re_match_context_t): Add dfa member. 2004-01-03 13:07:29 +00:00
Ulrich Drepper
59e7ebcc20 Update.
2004-01-02  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex_internal.c (re_node_set_add_intersect,
	re_node_set_merge): Rewritten.
	(re_node_set_insert, re_node_set_remove_at):
	Avoid memmove, we know what direction we should copy and that we
	are copying 32-bit words.
	(re_node_set_compare): Iterate backwards.

	* posix/regex_internal.h (re_match_context_t): Add dfa member.
	* posix/regexec.c (match_ctx_free_subtops, search_cur_bkref_entry,
	match_ctx_add_sublast, sift_ctx_init, acquire_init_state_context,
	prune_impossible_nodes, check_halt_state_context, proceed_next_node,
	sift_states_backward, update_cur_sifted_state, check_dst_limits,
	check_dst_limits_calc_pos, sift_states_bkref, transit_state,
	check_subexp_matching_top, transit_state_sb, transit_state_mb,
	transit_state_bkref, get_subexp, get_subexp_sub, check_arrival,
	check_arrival_add_next_nodes, expand_bkref_cache, check_node_accept):
	Remove dfa parameter.  Get dfa from mctxt.  Adjust callers.
	(re_search_internal): Initialize mctxt.dfa.
2004-01-03 06:56:35 +00:00
Ulrich Drepper
e3a8785218 (match_ctx_free_subtops, search_cur_bkref_entry, match_ctx_add_sublast, sift_ctx_init, acquire_init_state_context, prune_impossible_nodes, check_halt_state_context, proceed_next_node, sift_states_backward, update_cur_sifted_state, check_dst_limits, check_dst_limits_calc_pos, sift_states_bkref, transit_state, check_subexp_matching_top, transit_state_sb, transit_state_mb, transit_state_bkref, get_subexp, get_subexp_sub, check_arrival, check_arrival_add_next_nodes, expand_bkref_cache, check_node_accept): Remove dfa parameter. Get dfa from mctxt. Adjust callers. (re_search_internal): Initialize mctxt.dfa. 2004-01-03 04:06:39 +00:00
Ulrich Drepper
56b168be5d Update.
2004-01-02  Jakub Jelinek  <jakub@redhat.com>

	* posix/regex_internal.c (re_node_set_insert): Remove unused variables.

	* posix/regex_internal.h (re_dfa_t): Add syntax field.
	* posix/regcomp.c (parse): Initialize dfa->syntax.
	* posix/regexec.c (acquire_init_state_context,
	prune_impossible_nodes, check_matching, check_halt_state_context,
	proceed_next_node, sift_states_iter_mb, sift_states_backward,
	update_cur_sifted_state, sift_states_bkref, transit_state,
	transit_state_sb, transit_state_mb, transit_state_bkref,
	get_subexp, get_subexp_sub, check_arrival, expand_bkref_cache,
	build_trtable): Remove preg argument, add dfa argument instead
	and remove dfa = preg->buffer initialization in the body.
	Adjust all callers.
	(check_node_accept_bytes, group_nodes_into_DFAstates,
	check_node_accept): Likewise.  Use dfa->syntax instead of
	preg->syntax.
	(check_arrival_add_next_nodes): Remove preg argument.

	* posix/regex_internal.h (re_match_context_t): Make input
	re_string_t instead of a pointer to it.
	* posix/regex_internal.c (re_string_construct_common): Don't clear
	pstr here...
	(re_string_construct): ... but only here.
	* posix/regexec.c (match_ctx_init): Remove input argument.  Don't
	initialize fields to zero.
	(re_search_internal): Move input into mctx.input.
	(acquire_init_state_context, check_matching,
	check_halt_state_context, proceed_next_node,
	clean_state_log_if_needed, sift_states_bkref, sift_states_iter_mb,
	transit_state, transit_state_sb, transit_state_mb,
	transit_state_bkref, get_subexp, check_arrival,
	check_arrival_add_next_nodes, check_node_accept, extend_buffers):
	Change mctx->input into &mctx->input and mctx->input->field into
	mctx->input.field.

2004-01-02  Jakub Jelinek  <jakub@redhat.com>
	    Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex_internal.h (re_const_bitset_ptr_t): New type.
	(re_string_t): Add newline_anchor, word_char and word_ops_used fields.
	(re_dfa_t): Change word_char type to bitset.  Add word_ops_used field.
	(re_string_context_at, re_string_reconstruct): Remove last argument.
	* posix/regex_internal.c (re_string_allocate): Initialize
	pstr->word_char and pstr->word_ops_used.
	(re_string_context_at): Remove newline_anchor argument.
	Use input->newline_anchor instead, swap && conditions.
	Only use IS_WIDE_WORD_CHAR if input->word_ops_used != 0.
	Use input->word_char bitmap instead of IS_WORD_CHAR.
	(re_string_reconstruct): Likewise.
	Adjust re_string_context_at caller.
	* posix/regexec.c (acquire_init_state_context,
	check_halt_state_context, transit_state, transit_state_sb,
	transit_state_mb, transit_state_bkref, check_arrival,
	check_node_accept): Adjust re_string_context_at and
	re_string_reconstruct callers.
	(re_search_internal): Likewise.  Set input.newline_anchor.
	(build_trtable): Use dfa->word_char bitmap instead of IS_WORD_CHAR.
	* posix/regcomp.c (init_word_char): Change return type to void.
	Set dfa->word_ops_used.
	(free_dfa_content): Don't free dfa->word_char.
	(parse_expression): Remove error handling for init_word_char.
2004-01-02 21:20:51 +00:00
Ulrich Drepper
8503c987b6 Update.
2004-01-01  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex_internal.h (re_dfastate_t): Fix size of the CONTEXT
	bitfield.

	* posix/regex_internal.c (re_node_set_insert):  Rewrite.
2004-01-02 11:08:23 +00:00
Ulrich Drepper
8e597a18bd Update copyright year. 2004-01-01 20:42:01 +00:00
Ulrich Drepper
7c1be3ece5 Update.
* posix/regexec.c (get_subexp): Only set bkref_str after the first
	loop, use buf + bkref_str_off in the loop instead.
	* posix/bug-regex11.c (tests): Add 3 new tests.

	* posix/regexec.c (clean_state_log_if_need): Rename to...
	(clean_state_log_if_needed): ...this.
	(transit_state_mb, get_subexp_sub): Adjust callers.
2003-12-30 20:01:17 +00:00
Ulrich Drepper
447777715a Update.
2003-12-29  Jakub Jelinek  <jakub@redhat.com>

	* posix/regexec.c (re_copy_regs): Revert comment change.
	Avoid memory leak if realloc fails.
	(proceed_next_node): Return -2 if re_node_set_insert fails.
	Return -2 if push_fail_stack fails.
	(push_fail_stack): Change fs->alloc only after successful
	realloc.
	(pop_fail_stack): Formatting.
	(set_regs): If proceed_next_node returns -2, free eps_via_nodes
	and fs.
	(check_arrival_add_next_nodes): Merge identical statements
	from if branches.

	* signal/Makefile (tests): Add tst-raise.
	* signal/tst-raise.c: New test.
2003-12-29 17:59:41 +00:00
Ulrich Drepper
a96c63edd2 Update.
* posix/regcomp.c (mark_opt_subexp_iter): Declare IDX as int.

	* posix/regexec.c (re_copy_regs): Fix testing for failed allocation.
	_IO_peekc_unlocked, _IO_putc_unlocked, _IO_getwc_unlocked, and
2003-12-29 00:42:16 +00:00
Ulrich Drepper
5a299c962e Update.
* posix/regexec.c (re_copy_regs): Allocate start and end array in
	one block.
	(push_fail_stack): Add missing check for failed memory allocation.

	_IO_peekc_unlocked, _IO_ptc_unlocked, _IO_getwc_unlocked, and
	overflow for 0 as argument. Raise Invalid exception for negative args.
2003-12-28 23:33:48 +00:00
Ulrich Drepper
6b6557e8b3 Update.
2003-12-23  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex_internal.c (re_dfa_add_node): Initialize opt_subexp.
	* posix/regex_internal.h (re_token_type_t): Put OP_DUP_PLUS
	among the tokens, rather than among the epsilon-transiting nodes.
	(re_token_t): Add the opt_subexp flag.
	* posix/regcomp.c (optimize_utf8, calc_first,
	calc_next, calc_epsdest): Don't consider OP_DUP_PLUS.
	(mark_opt_subexp, mark_opt_subexp_iter): New functions.
	(parse_dup_op): Mostly rewritten, lowering OP_DUP_PLUS to
	OP_DUP_ASTERISK and marking optional subexpressions
	as such using mark_opt_subexp.
	* posix/regexec.c (set_regs): Initialize PREV_INDEX_MATCH
	and pass it to update_regs.
	(update_regs): Use the PREV_INDEX_MATCH parameter, together
	with the opt_subexp flag, in order to discard a final empty
	match of a repeated subexpression.
	* posix/BOOST.tests: Adjust test vectors.
	* posix/PCRE.tests: Likewise.
	* posix/rxspencer/tests: Likewise.

2003-12-17  Paolo Bonzini  <bonzini@gnu.org>
2003-12-16  Paolo Bonzini  <bonzini@gnu.org>
2003-12-17  Paolo Bonzini  <bonzini@gnu.org>
2003-12-16  Jakub Jelinek  <jakub@redhat.com>
2003-04-06  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2003-02-20  Paolo Bonzini  <bonzini@gnu.org>
2003-01-12  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
2003-01-09  Richard Henderson  <rth@redhat.com>
2003-01-09  Richard Henderson  <rth@redhat.com>
2003-01-03  Paul Eggert  <eggert@twinsun.com>
2003-12-27 23:40:06 +00:00
Ulrich Drepper
8cae99dba5 Update.
2003-12-22  Jakub Jelinek  <jakub@redhat.com>

	* posix/regcomp.c: Remove C99-ism.
	* posix/tst-rxspencer.c: Likewise.
	Based on a patch by Alex Davis <alex14641@yahoo.com>.

2002-12-17  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex_internal.h [!_LIBC] (internal_function): Define.
	(re_string_allocate, re_string_construct, re_string_reconstruct,
	re_string_realloc_buffers, build_wcs_buffer,
	build_wcs_upper_buffer, build_upper_buffer,
	re_string_translate_buffer, re_string_destruct,
	re_string_elem_size_at, re_string_char_size_at,
	re_string_wchar_at, re_string_context_at,
	re_node_set_alloc, re_node_set_init_1
	re_node_set_init_2, re_node_set_init_copy,
	re_node_set_add_intersect, re_node_set_init_union,
	re_node_set_merge, re_node_set_insert
	re_node_set_compare, re_node_set_contains
	re_node_set_remove_at, re_dfa_add_node,
	re_acquire_state, re_acquire_state_context,
	free_state): Add internal_function to declaration.

	* posix/regexec.c (match_ctx_init, match_ctx_clean,
	match_ctx_free, match_ctx_free_subtops,
	match_ctx_add_entry, search_cur_bkref_entry,
	match_ctx_clear_flag, match_ctx_add_subtop,
	match_ctx_add_sublast, sift_ctx_init,
	re_search_internal, re_search_2_stub, re_search_stub,
	re_copy_regs, acquire_init_state_context,
	prune_impossible_nodes, check_matching,
	check_halt_node_context, check_halt_state_context
	update_regs, proceed_next_node, push_fail_stack,
	pop_fail_stack, set_regs, free_fail_stack_return,
	sift_states_iter_mb, sift_states_backward
	update_cur_sifted_state, add_epsilon_src_nodes,
	sub_epsilon_src_nodes, check_dst_limits,
	check_dst_limits_calc_pos, check_subexp_limits,
	sift_states_bkref, clean_state_log_if_need,
	merge_state_array, transit_state,
	check_subexp_matching_top, transit_state_sb,
	transit_state_mb, transit_state_bkref,
	get_subexp, get_subexp_sub, find_subexp_node,
	check_arrival, check_arrival_add_next_nodes,
	find_collation_sequence_value, check_arrival_expand_ecl,
	check_arrival_expand_ecl_sub, expand_bkref_cache,
	build_trtable, check_node_accept_bytes, extend_buffers,
	group_nodes_into_DFAstates, check_node_accept): Likewise.

	* posix/regex_internal.c (re_string_construct_common,
	re_string_skip_chars, create_newstate_common,
	register_state, create_ci_newstate, create_cd_newstate,
	calc_state_hash): Likewise.
	(re_string_peek_byte_case, re_fetch_byte_case): Change
	declaration from ANSI to K&R.

2002-12-16  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regexec.c (build_trtable): Don't allocate the trtable
	until state->word_trtable is known.  Don't hardcode UINT_BITS
	iterations on each bitset item.
2003-12-23 02:29:44 +00:00
Ulrich Drepper
3ce12656a8 (build_trtable): Don't allocate the trtable until state->word_trtable is known. Don't hardcode UINT_BITS iterations on each bitset item.
(match_ctx_init, match_ctx_clean,
match_ctx_free, match_ctx_free_subtops,
match_ctx_add_entry, search_cur_bkref_entry,
match_ctx_clear_flag, match_ctx_add_subtop,
match_ctx_add_sublast, sift_ctx_init,
re_search_internal, re_search_2_stub, re_search_stub,
re_copy_regs, acquire_init_state_context,
prune_impossible_nodes, check_matching,
check_halt_node_context, check_halt_state_context
update_regs, proceed_next_node, push_fail_stack,
pop_fail_stack, set_regs, free_fail_stack_return,
sift_states_iter_mb, sift_states_backward
update_cur_sifted_state, add_epsilon_src_nodes,
sub_epsilon_src_nodes, check_dst_limits,
check_dst_limits_calc_pos, check_subexp_limits,
sift_states_bkref, clean_state_log_if_need,
merge_state_array, transit_state,
check_subexp_matching_top, transit_state_sb,
transit_state_mb, transit_state_bkref,
get_subexp, get_subexp_sub, find_subexp_node,
check_arrival, check_arrival_add_next_nodes,
find_collation_sequence_value, check_arrival_expand_ecl,
check_arrival_expand_ecl_sub, expand_bkref_cache,
build_trtable, check_node_accept_bytes, extend_buffers,
group_nodes_into_DFAstates, check_node_accept): Likewise.
2003-12-23 01:43:19 +00:00
Ulrich Drepper
1cef7b3cae Update.
2003-12-21  Jakub Jelinek  <jakub@redhat.com>

	* posix/regcomp.c (duplicate_node, duplicate_node_closure): Revert
	2003-11-24 changes.
	* posix/regexec.c (group_nodes_into_DFAstates): For CHARACTER with
	NEXT_{,NOT}WORD_CONSTRAINT check word_char bit.
	* posix/bug-regex19.c (tests): Add new tests.

	* posix/regexec.c (check_dst_limits_calc_pos): Fix formatting.

	* posix/regcomp.c (parse_dup_op): Return NULL if dup_elem is NULL,
	after checking syntax.  Optimize.
	(calc_first): Fix comment.
	* posix/bug-regex13.c (tests): Add new tests.
2003-12-22 06:52:35 +00:00
Ulrich Drepper
7de661083b (parse_dup_op): Return NULL if dup_elem is NULL, after checking syntax. Optimize. (calc_first): Fix comment.
(duplicate_node, duplicate_node_closure): Revert 2003-11-24 changes.
2003-12-22 06:45:04 +00:00
Ulrich Drepper
c70f81dd2c (re_search_internal): Limit search to the beginning of the buffer if the initial states are empty for contexts that do not include CONTEXT_BEGBUF or, if !preg->newline_anchor, that do not include any one of CONTEXT_BEGBUF and CONTEXT_NEWLINE. 2003-12-17 22:58:24 +00:00
Ulrich Drepper
93226feb21 Update.
2003-12-16  Petter Reinholdtsen  <pere@hungry.com>

	* posix/regex_internal.h: Make sure the regex code compile
	with non-GCC compilers by hiding attributes.
2003-12-16 19:52:22 +00:00
Ulrich Drepper
457beec8d7 Update.
2002-12-16  Jakub Jelinek  <jakub@redhat.com>
            Paolo Bonzini  <bonzini@gnu.org>

	* posix/regexec.c (group_nodes_into_DFAstates): Never produce
	dests_ch items that are empty.
2003-12-16 18:58:47 +00:00
Ulrich Drepper
c0d5034ed1 Update.
* posix/regexec.c (check_arrival): Remove duplicate test.

2003-12-15  Ulrich Drepper  <drepper@redhat.com>

	* posix/regcomp.c: Make !RE_ENABLE_I18N work again.
	* posix/regex_internal.c: Likewise.
	* posix/regexec.c: Likewise.
	Patch by Paolo Bonzini.

2003-12-14  Paolo Bonzini  <bonzini@gnu.org>
2003-12-16 06:16:27 +00:00
Ulrich Drepper
a0a8461cf9 Update.
2003-12-14  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex_internal.c (re_acquire_state_context):
        Compare the node sets after all the other comparisons.

2003-12-13  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regexec.c (find_subexp_node, check_arrival,
	check_arrival_add_next_nodes, check_arrival_expand_ecl,
	check_arrival_expand_ecl_sub, expand_bkref_cache):
	Rename the FL_OPEN parameter to TYPE, which is either
	OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP.  Callers adjusted.

	* Makeconfig (gnulib): If have-cc-with-libunwind is "yes", also
2003-11-12  David Mosberger  <davidm@hpl.hp.com>
2003-12-15 00:56:30 +00:00
Ulrich Drepper
0ce7f49c2f (find_subexp_node, check_arrival, check_arrival_add_next_nodes, check_arrival_expand_ecl, check_arrival_expand_ecl_sub, expand_bkref_cache): Rename the FL_OPEN parameter to TYPE, which is either OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP. Callers adjusted. 2003-12-14 23:40:44 +00:00
Ulrich Drepper
6c805a2b9d Update.
2003-12-03  Jakub Jelinek  <jakub@redhat.com>

	* posix/Makefile (distribute): Add BOOST.tests.
	(tests): Add tst-boost, depend on tst-boost-mem.
	(generated): Add tst-boost-mem and tst-boost.mtrace.
	(tst-boost-ARGS, tst-boost-ENV): Set.
	($(objpfx)tst-boost-mem): New.
	* posix/tst-boost.c: New test.
	* posix/BOOST.tests: New file.

	* posix/Makefile (distribute): Add PCRE.tests.
	(tests): Add tst-pcre, depend on tst-pcre-mem.
	(generated): Add tst-pcre-mem and tst-pcre.mtrace.
	(tst-pcre-ARGS, tst-pcre-ENV): Set.
	($(objpfx)tst-pcre-mem): New.
	* posix/tst-pcre.c: New test.
	* posix/PCRE.tests: New file.

2003-12-02  Jakub Jelinek  <jakub@redhat.com>

	* intl/locale.alias: Use nb_NO instead of no_NO for bokm.l.

	* sysdeps/powerpc/fpu/libm-test-ulps: Regenerated.
	* sysdeps/s390/fpu/libm-test-ulps: Regenerated.
2003-12-04 08:04:57 +00:00
Ulrich Drepper
37369d1cef Update.
* misc/mntent_r.c (decode_name): Fix decoding of tab, add decoding
	of newline.
	* manual/sysinfo.texi (mtab): Adjust description accordingly.
	Reported by Andries.Brouwer@cwi.nl.
2003-11-29 06:40:52 +00:00
Ulrich Drepper
bb3f4825c4 Update.
2003-11-28  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/x86_64/fpu/libm-test-ulps: Add some more minor changes
	to compensate other setup.

2003-11-27  Andreas Jaeger  <aj@suse.de>

	* sysdeps/x86_64/fpu/libm-test-ulps: Add ulps for new atan2 test.

	* math/libm-test.inc (atan2_test): Add test that run infinitly.
	Reported by "Willus" <etc231etc231@willus.com>.

2003-11-27  Michael Matz  <matz@suse.de>

	* sysdeps/ieee754/dbl-64/mpsqrt.c (fastiroot): Fix 64-bit problem
	with wrong types.

2003-11-28  Jakub Jelinek  <jakub@redhat.com>

	* posix/regexec.c (acquire_init_state_context): Make inline.
	Add always_inline attribute.
	(check_matching): Add BE macro.  Move if (cur_state->has_backref)
	into if (dfa->nbackref).
	(sift_states_backward): Fix comment.
	(transit_state): Add BE macro.  Move if (next_state->has_backref)
	into if (dfa->nbackref && next_state).  Don't check for next_state
	!= NULL twice.
	* posix/regcomp.c (peek_token): Use opr.ctx_type instead of opr.idx
	for ANCHOR.
	(parse_expression): Only call init_word_char if word context will be
	needed.

	* posix/bug-regex11.c (tests): Add new tests.

	* posix/tst-regex.c: Include getopt.h.
	(timing): New variable.
	(main): Set timing to 1 if --timing argument is present.
	Add 2 new tests.
	(run_test, run_test_backwards): Handle timing.

2003-11-27  Jakub Jelinek  <jakub@redhat.com>

	* posix/regex_internal.h (re_string_t): Remove mbs_case field.
	Add offsets, valid_raw_len, raw_len, raw_stop, mbs_allocated and
	offsets_needed fields.  Change icase, is_utf8 and map_notascii
	type from int bitfield to unsigned char.
	(MBS_ALLOCATED, MBS_CASE_ALLOCATED): Remove.
	(build_wcs_upper_buffer): Change prototype to return int.
	(re_string_peek_byte_case, re_string_fetch_byte_case): Remove
	defines, add prototypes.
	* posix/regex_internal.c (re_string_allocate): Don't initialize
	stop here.  Don't initialize mbs_case.  Set valid_raw_len.
	Use mbs_allocated instead of MBS_* macros.
	(re_string_construct): Don't initialize stop and valid_len here.
	Don't initialize mbs_case.  Use mbs_allocated instead of MBS_*
	macros.  Reallocate buffers if build_wcs_upper_buffer converted
	too few bytes.  Set valid_len to bufs_len only for single byte
	no translation and set in that case valid_raw_len as well.
	(re_string_realloc_buffers): Reallocate offsets if not NULL.
	Use mbs_allocated instead of MBS_ALLOCATED.  Don't reallocate
	mbs_case.
	(re_string_construct_common): Initialize raw_len, mbs_allocated,
	stop and raw_stop.
	(build_wcs_buffer): Apply pstr->trans before mbrtowc instead of
	after it.  Set valid_raw_len.  Don't set mbs_case.
	(build_wcs_upper_buffer): Return REG_NOERROR or REG_ESPACE.
	Only use the fast path if !pstr->offsets_needed.  Apply pstr->trans
	before mbrtowc instead of after it.  If upper case character
	uses different number of bytes than lower case, goto to the
	slow path.  Don't call towupper unnecessarily twice.  Set
	valid_raw_len as well.  Handle in the slow path the case if
	lower and upper case use different number of characters.
	Don't set mbs_case.
	(re_string_skip_chars): Use valid_raw_len instead of valid_len.
	(build_upper_buffer): Don't set mbs_case.  Add BE macro.  Set
	valid_raw_len.
	(re_string_translate_buffer): Set mbs instead of mbs_case.  Set
	valid_raw_len.
	(re_string_reconstruct): Use raw_len/raw_stop to initialize
	len/stop.  Clear valid_raw_len and offsets_needed when clearing
	valid_len.  Use mbs_allocated instead of MBS_* macros.
	Check original offset against valid_raw_len instead of valid_len.
	Remove mbs_case handling.  Adjust valid_raw_len together with
	valid_len.  If is_utf8 and looking for tip context, apply
	pstr->trans first.  If buffers start with partial multi-byte
	character, initialize mbs array as well if mbs_allocated.
	Check return value of build_wcs_upper_buffer.
	(re_string_peek_byte_case): New function.
	(re_string_fetch_byte_case): New function.
	(re_string_destruct): Use mbs_allocated instead of MBS_ALLOCATED.
	Don't free mbs_case.  Free offsets.
	* posix/regcomp.c (init_dfa): Only check if charset name is UTF-8
	if mb_cur_max == 6.
	* posix/regexec.c (re_search_internal): Initialize input.raw_stop
	as well.  Use valid_raw_len instead of valid_len when looking
	through fastmap.  Adjust registers through input.offsets.
	(extend_buffers): Allow build_wcs_upper_buffer to fail.
	* posix/bug-regex18.c (tests): Enable #ifdefed out tests.  Add new
	tests.
2003-11-29 06:13:09 +00:00