Jim Meyering [Fri, 28 Apr 2000 16:49:38 +0000 (16:49 +0000)]
[HAVE_LIMITS_H]: Include limits.h before regex.h to avoid
redefinition warning on some systems (HPUX). Otherwise, regex.h is
included first, then limits.h is included by locale.h by libintl.h.
From John David Anglin.
Jim Meyering [Mon, 17 Apr 2000 09:55:53 +0000 (09:55 +0000)]
Get it right :-)
(jm_CHECK_ALL_TYPES) [_GNU_SOURCE]: Emit the
actual #define via AH_VERBATIM. Don't need separate AC_DEFINE.
Suggestion from Akim Demaille.
Jim Meyering [Sat, 15 Apr 2000 21:54:46 +0000 (21:54 +0000)]
Use `C' to denote so-called `contiguous' files, the same way that tar does.
* filemode.c (S_ISCTG) [!S_ISCTG && S_IFCTG]: Define.
(ftypelet): Use S_ISCTG.
Jim Meyering [Mon, 3 Apr 2000 07:48:06 +0000 (07:48 +0000)]
(AC_CHECK_HEADERS): Add langinfo.h (moved here from
textutils/configure.in). Suggestion from Paul Eggert.
(AC_CHECK_FUNCS): Add nl_langinfo. (also from textutils/configure.in)
Jim Meyering [Mon, 3 Apr 2000 06:24:20 +0000 (06:24 +0000)]
(jm_FUNC_GNU_STRFTIME): Set TZ environment
variable in the shell rather than using putenv, which isn't
portable. This avoids the configure-time inter-test dependency
on the potentially-renamed putenv function.
Stefan Monnier [Sun, 2 Apr 2000 23:56:45 +0000 (23:56 +0000)]
* regex.c (PTR_TO_OFFSET) [!emacs]: Remove.
(RE_MULTIBYTE_P, RE_STRING_CHAR_AND_LENGTH): New macros.
(GET_CHAR_BEFORE_2): Moved from charset.h plus fixed minor bug when
we are between str1 and str2.
(MAX_MULTIBYTE_LENGTH, CHAR_STRING) [!emacs]: Provide trivial default.
(PATFETCH): Use `TRANSLATE'.
(PATFETCH_RAW): Fetch multibyte char if applicable.
(PATUNFETCH): Remove.
(regex_compile): Rely on PATFETCH to do most of the multibyte magic.
When writing a char, write it directly into the pattern buffer rather
than going needlessly through a temp char-array.
(re_match_2_internal): Similarly, rely on RE_STRING_CHAR to do the
multibyte magic and remove the useless `#ifdef emacs'.
(bcmp_translate): Don't compare as multibyte chars when in a unibyte
buffer.
* regex.h (struct re_pattern_buffer): Make field `multibyte'
conditional on `emacs'.
* charset.h (GET_CHAR_BEFORE_2): Moved to regex.c.
Stefan Monnier [Wed, 29 Mar 2000 04:01:25 +0000 (04:01 +0000)]
(analyse_first): New function obtained by ripping out most
of re_compile_fastmap and generalizing it a little bit so that it
can also just return whether a given (sub)pattern can match the empty
string or not.
(regex_compile): Use `analyse_first' to decide whether the loop-check
needs to be done or not for *, +, *? and +? (the loop check is costly
for non-greedy repetition).
(re_compile_fastmap): Delegate the actual work to `analyse_first'.
Stefan Monnier [Mon, 27 Mar 2000 22:26:37 +0000 (22:26 +0000)]
(REGEX_FREE_STACK, RESET_FAIL_STACK): Make them usable as an expression.
(enum re_opcode_t): Update description of succeed_n.
(PATFETCH): Always define.
(regex_compile): Use lookahead rather than PATUNFETCH (for repetition
operators, char classes, shy-groups and intervals).
Optimize special cases of intervals so as to only use succeed_n and
jump_n when really needed.
(re_compile_fastmap): Simplify handling of jump_n and succeed_n now
that we don't have to handle the special cases any more.
Simplify on_failure_jump handling as well.
Stefan Monnier [Sun, 26 Mar 2000 23:05:51 +0000 (23:05 +0000)]
(enum re_opcode_t): New opcode on_failure_jump_nastyloop.
(print_partial_compiled_pattern, re_compile_fastmap): Handle new opcode.
(regex_compile): Use on_failure_jump_nastyloop for non-greedy loops.
(re_match_2_internal): Add code for on_failure_jump_nastyloop when
executing it as well as when popping it off the stack to find infinite
loops in non-greedy repetition operators.