mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
Remove support for v1 of the PCRE library
Remove support for using version 1 of the PCRE library. Its use has been discouraged by upstream for a long time, and it's in a bugfix-only state. Anyone who was relying on v1 in particular got a nudge to move to v2 ine6c531b808
(Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1, 2018-03-11), which was first released as part of v2.18.0. With this the LIBPCRE2 test prerequisites is redundant to PCRE. But I'm keeping it for self-documentation purposes, and to avoid conflict with other in-flight PCRE patches. I'm also not changing all of our own "pcre2" names to "pcre", i.e. the inverse of6d4b5747f0
(grep: change internal *pcre* variable & function names to be *pcre1*, 2017-05-25). I don't see the point, and it makes the history/blame harder to read. Maybe if there's ever a PCRE v3... Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0205bb13d0
commit
7599730b7e
7 changed files with 18 additions and 217 deletions
32
Makefile
32
Makefile
|
@ -29,18 +29,11 @@ all::
|
||||||
# Perl-compatible regular expressions instead of standard or extended
|
# Perl-compatible regular expressions instead of standard or extended
|
||||||
# POSIX regular expressions.
|
# POSIX regular expressions.
|
||||||
#
|
#
|
||||||
# USE_LIBPCRE is a synonym for USE_LIBPCRE2, define USE_LIBPCRE1
|
# Only libpcre version 2 is supported. USE_LIBPCRE2 is a synonym for
|
||||||
# instead if you'd like to use the legacy version 1 of the PCRE
|
# USE_LIBPCRE, support for the old USE_LIBPCRE1 has been removed.
|
||||||
# library. Support for version 1 will likely be removed in some future
|
|
||||||
# release of Git, as upstream has all but abandoned it.
|
|
||||||
#
|
|
||||||
# When using USE_LIBPCRE1, define NO_LIBPCRE1_JIT if you want to
|
|
||||||
# disable JIT even if supported by your library.
|
|
||||||
#
|
#
|
||||||
# Define LIBPCREDIR=/foo/bar if your PCRE header and library files are
|
# Define LIBPCREDIR=/foo/bar if your PCRE header and library files are
|
||||||
# in /foo/bar/include and /foo/bar/lib directories. Which version of
|
# in /foo/bar/include and /foo/bar/lib directories.
|
||||||
# PCRE this points to determined by the USE_LIBPCRE1 and USE_LIBPCRE2
|
|
||||||
# variables.
|
|
||||||
#
|
#
|
||||||
# Define HAVE_ALLOCA_H if you have working alloca(3) defined in that header.
|
# Define HAVE_ALLOCA_H if you have working alloca(3) defined in that header.
|
||||||
#
|
#
|
||||||
|
@ -1359,26 +1352,17 @@ ifdef NO_LIBGEN_H
|
||||||
COMPAT_OBJS += compat/basename.o
|
COMPAT_OBJS += compat/basename.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef USE_LIBPCRE1
|
||||||
|
$(error The USE_LIBPCRE1 build option has been removed, use version 2 with USE_LIBPCRE)
|
||||||
|
endif
|
||||||
|
|
||||||
USE_LIBPCRE2 ?= $(USE_LIBPCRE)
|
USE_LIBPCRE2 ?= $(USE_LIBPCRE)
|
||||||
|
|
||||||
ifneq (,$(USE_LIBPCRE2))
|
ifneq (,$(USE_LIBPCRE2))
|
||||||
ifdef USE_LIBPCRE1
|
|
||||||
$(error Only set USE_LIBPCRE2 (or its alias USE_LIBPCRE) or USE_LIBPCRE1, not both!)
|
|
||||||
endif
|
|
||||||
|
|
||||||
BASIC_CFLAGS += -DUSE_LIBPCRE2
|
BASIC_CFLAGS += -DUSE_LIBPCRE2
|
||||||
EXTLIBS += -lpcre2-8
|
EXTLIBS += -lpcre2-8
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef USE_LIBPCRE1
|
|
||||||
BASIC_CFLAGS += -DUSE_LIBPCRE1
|
|
||||||
EXTLIBS += -lpcre
|
|
||||||
|
|
||||||
ifdef NO_LIBPCRE1_JIT
|
|
||||||
BASIC_CFLAGS += -DNO_LIBPCRE1_JIT
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef LIBPCREDIR
|
ifdef LIBPCREDIR
|
||||||
BASIC_CFLAGS += -I$(LIBPCREDIR)/include
|
BASIC_CFLAGS += -I$(LIBPCREDIR)/include
|
||||||
EXTLIBS += -L$(LIBPCREDIR)/$(lib) $(CC_LD_DYNPATH)$(LIBPCREDIR)/$(lib)
|
EXTLIBS += -L$(LIBPCREDIR)/$(lib) $(CC_LD_DYNPATH)$(LIBPCREDIR)/$(lib)
|
||||||
|
@ -2726,9 +2710,7 @@ GIT-BUILD-OPTIONS: FORCE
|
||||||
@echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@+
|
@echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@+
|
||||||
@echo NO_CURL=\''$(subst ','\'',$(subst ','\'',$(NO_CURL)))'\' >>$@+
|
@echo NO_CURL=\''$(subst ','\'',$(subst ','\'',$(NO_CURL)))'\' >>$@+
|
||||||
@echo NO_EXPAT=\''$(subst ','\'',$(subst ','\'',$(NO_EXPAT)))'\' >>$@+
|
@echo NO_EXPAT=\''$(subst ','\'',$(subst ','\'',$(NO_EXPAT)))'\' >>$@+
|
||||||
@echo USE_LIBPCRE1=\''$(subst ','\'',$(subst ','\'',$(USE_LIBPCRE1)))'\' >>$@+
|
|
||||||
@echo USE_LIBPCRE2=\''$(subst ','\'',$(subst ','\'',$(USE_LIBPCRE2)))'\' >>$@+
|
@echo USE_LIBPCRE2=\''$(subst ','\'',$(subst ','\'',$(USE_LIBPCRE2)))'\' >>$@+
|
||||||
@echo NO_LIBPCRE1_JIT=\''$(subst ','\'',$(subst ','\'',$(NO_LIBPCRE1_JIT)))'\' >>$@+
|
|
||||||
@echo NO_PERL=\''$(subst ','\'',$(subst ','\'',$(NO_PERL)))'\' >>$@+
|
@echo NO_PERL=\''$(subst ','\'',$(subst ','\'',$(NO_PERL)))'\' >>$@+
|
||||||
@echo NO_PTHREADS=\''$(subst ','\'',$(subst ','\'',$(NO_PTHREADS)))'\' >>$@+
|
@echo NO_PTHREADS=\''$(subst ','\'',$(subst ','\'',$(NO_PTHREADS)))'\' >>$@+
|
||||||
@echo NO_PYTHON=\''$(subst ','\'',$(subst ','\'',$(NO_PYTHON)))'\' >>$@+
|
@echo NO_PYTHON=\''$(subst ','\'',$(subst ','\'',$(NO_PYTHON)))'\' >>$@+
|
||||||
|
|
51
configure.ac
51
configure.ac
|
@ -252,16 +252,17 @@ GIT_PARSE_WITH([openssl]))
|
||||||
# Define USE_LIBPCRE if you have and want to use libpcre. Various
|
# Define USE_LIBPCRE if you have and want to use libpcre. Various
|
||||||
# commands such as log and grep offer runtime options to use
|
# commands such as log and grep offer runtime options to use
|
||||||
# Perl-compatible regular expressions instead of standard or extended
|
# Perl-compatible regular expressions instead of standard or extended
|
||||||
# POSIX regular expressions.
|
# POSIX regular expressions. Only libpcre version 2 is supported.
|
||||||
#
|
|
||||||
# USE_LIBPCRE is a synonym for USE_LIBPCRE2, define USE_LIBPCRE1
|
|
||||||
# instead if you'd like to use the legacy version 1 of the PCRE
|
|
||||||
# library. Support for version 1 will likely be removed in some future
|
|
||||||
# release of Git, as upstream has all but abandoned it.
|
|
||||||
#
|
#
|
||||||
# Define LIBPCREDIR=/foo/bar if your PCRE header and library files are in
|
# Define LIBPCREDIR=/foo/bar if your PCRE header and library files are in
|
||||||
# /foo/bar/include and /foo/bar/lib directories.
|
# /foo/bar/include and /foo/bar/lib directories.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
AC_ARG_WITH(libpcre1,
|
||||||
|
AS_HELP_STRING([--with-libpcre1],[DEPRECATED]),
|
||||||
|
AC_MSG_ERROR([support for --with-libpcre1 has been removed. Use --with-libpcre2!])
|
||||||
|
)
|
||||||
|
|
||||||
AC_ARG_WITH(libpcre,
|
AC_ARG_WITH(libpcre,
|
||||||
AS_HELP_STRING([--with-libpcre],[synonym for --with-libpcre2]),
|
AS_HELP_STRING([--with-libpcre],[synonym for --with-libpcre2]),
|
||||||
if test "$withval" = "no"; then
|
if test "$withval" = "no"; then
|
||||||
|
@ -277,22 +278,6 @@ AS_HELP_STRING([--with-libpcre],[synonym for --with-libpcre2]),
|
||||||
GIT_CONF_SUBST([LIBPCREDIR])
|
GIT_CONF_SUBST([LIBPCREDIR])
|
||||||
fi)
|
fi)
|
||||||
|
|
||||||
AC_ARG_WITH(libpcre1,
|
|
||||||
AS_HELP_STRING([--with-libpcre1],[support Perl-compatible regexes via libpcre1 (default is NO)])
|
|
||||||
AS_HELP_STRING([], [ARG can be also prefix for libpcre library and headers]),
|
|
||||||
if test "$withval" = "no"; then
|
|
||||||
USE_LIBPCRE1=
|
|
||||||
elif test "$withval" = "yes"; then
|
|
||||||
USE_LIBPCRE1=YesPlease
|
|
||||||
else
|
|
||||||
USE_LIBPCRE1=YesPlease
|
|
||||||
LIBPCREDIR=$withval
|
|
||||||
AC_MSG_NOTICE([Setting LIBPCREDIR to $LIBPCREDIR])
|
|
||||||
dnl USE_LIBPCRE1 can still be modified below, so don't substitute
|
|
||||||
dnl it yet.
|
|
||||||
GIT_CONF_SUBST([LIBPCREDIR])
|
|
||||||
fi)
|
|
||||||
|
|
||||||
AC_ARG_WITH(libpcre2,
|
AC_ARG_WITH(libpcre2,
|
||||||
AS_HELP_STRING([--with-libpcre2],[support Perl-compatible regexes via libpcre2 (default is NO)])
|
AS_HELP_STRING([--with-libpcre2],[support Perl-compatible regexes via libpcre2 (default is NO)])
|
||||||
AS_HELP_STRING([], [ARG can be also prefix for libpcre library and headers]),
|
AS_HELP_STRING([], [ARG can be also prefix for libpcre library and headers]),
|
||||||
|
@ -300,10 +285,6 @@ AS_HELP_STRING([], [ARG can be also prefix for libpcre library and hea
|
||||||
AC_MSG_ERROR([Only supply one of --with-libpcre or its synonym --with-libpcre2!])
|
AC_MSG_ERROR([Only supply one of --with-libpcre or its synonym --with-libpcre2!])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$USE_LIBPCRE1"; then
|
|
||||||
AC_MSG_ERROR([Only supply one of --with-libpcre1 or --with-libpcre2!])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$withval" = "no"; then
|
if test "$withval" = "no"; then
|
||||||
USE_LIBPCRE2=
|
USE_LIBPCRE2=
|
||||||
elif test "$withval" = "yes"; then
|
elif test "$withval" = "yes"; then
|
||||||
|
@ -554,25 +535,9 @@ GIT_CONF_SUBST([NEEDS_SSL_WITH_CRYPTO])
|
||||||
GIT_CONF_SUBST([NO_OPENSSL])
|
GIT_CONF_SUBST([NO_OPENSSL])
|
||||||
|
|
||||||
#
|
#
|
||||||
# Handle the USE_LIBPCRE1 and USE_LIBPCRE2 options potentially set
|
# Handle the USE_LIBPCRE options potentially set above.
|
||||||
# above.
|
|
||||||
#
|
#
|
||||||
|
|
||||||
if test -n "$USE_LIBPCRE1"; then
|
|
||||||
|
|
||||||
GIT_STASH_FLAGS($LIBPCREDIR)
|
|
||||||
|
|
||||||
AC_CHECK_LIB([pcre], [pcre_version],
|
|
||||||
[USE_LIBPCRE1=YesPlease],
|
|
||||||
[USE_LIBPCRE1=])
|
|
||||||
|
|
||||||
GIT_UNSTASH_FLAGS($LIBPCREDIR)
|
|
||||||
|
|
||||||
GIT_CONF_SUBST([USE_LIBPCRE1])
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if test -n "$USE_LIBPCRE2"; then
|
if test -n "$USE_LIBPCRE2"; then
|
||||||
|
|
||||||
GIT_STASH_FLAGS($LIBPCREDIR)
|
GIT_STASH_FLAGS($LIBPCREDIR)
|
||||||
|
|
|
@ -910,9 +910,7 @@ set(PYTHON_PATH /usr/bin/python)
|
||||||
set(TAR tar)
|
set(TAR tar)
|
||||||
set(NO_CURL )
|
set(NO_CURL )
|
||||||
set(NO_EXPAT )
|
set(NO_EXPAT )
|
||||||
set(USE_LIBPCRE1 )
|
|
||||||
set(USE_LIBPCRE2 )
|
set(USE_LIBPCRE2 )
|
||||||
set(NO_LIBPCRE1_JIT )
|
|
||||||
set(NO_PERL )
|
set(NO_PERL )
|
||||||
set(NO_PTHREADS )
|
set(NO_PTHREADS )
|
||||||
set(NO_PYTHON )
|
set(NO_PYTHON )
|
||||||
|
@ -949,8 +947,6 @@ file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PYTHON_PATH='${PYTHON_PATH}'\
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "TAR='${TAR}'\n")
|
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "TAR='${TAR}'\n")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_CURL='${NO_CURL}'\n")
|
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_CURL='${NO_CURL}'\n")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_EXPAT='${NO_EXPAT}'\n")
|
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_EXPAT='${NO_EXPAT}'\n")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "USE_LIBPCRE1='${USE_LIBPCRE1}'\n")
|
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_LIBPCRE1_JIT='${NO_LIBPCRE1_JIT}'\n")
|
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PERL='${NO_PERL}'\n")
|
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PERL='${NO_PERL}'\n")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PTHREADS='${NO_PTHREADS}'\n")
|
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PTHREADS='${NO_PTHREADS}'\n")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_UNIX_SOCKETS='${NO_UNIX_SOCKETS}'\n")
|
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_UNIX_SOCKETS='${NO_UNIX_SOCKETS}'\n")
|
||||||
|
|
119
grep.c
119
grep.c
|
@ -166,11 +166,6 @@ void grep_init(struct grep_opt *opt, struct repository *repo, const char *prefix
|
||||||
pcre2_malloc, pcre2_free, NULL);
|
pcre2_malloc, pcre2_free, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_LIBPCRE1
|
|
||||||
pcre_malloc = malloc;
|
|
||||||
pcre_free = free;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*opt = grep_defaults;
|
*opt = grep_defaults;
|
||||||
|
|
||||||
opt->repo = repo;
|
opt->repo = repo;
|
||||||
|
@ -223,17 +218,7 @@ static void grep_set_pattern_type_option(enum grep_pattern_type pattern_type, st
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GREP_PATTERN_TYPE_PCRE:
|
case GREP_PATTERN_TYPE_PCRE:
|
||||||
#ifdef USE_LIBPCRE2
|
|
||||||
opt->pcre2 = 1;
|
opt->pcre2 = 1;
|
||||||
#else
|
|
||||||
/*
|
|
||||||
* It's important that pcre1 always be assigned to
|
|
||||||
* even when there's no USE_LIBPCRE* defined. We still
|
|
||||||
* call the PCRE stub function, it just dies with
|
|
||||||
* "cannot use Perl-compatible regexes[...]".
|
|
||||||
*/
|
|
||||||
opt->pcre1 = 1;
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -377,92 +362,6 @@ static int is_fixed(const char *s, size_t len)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_LIBPCRE1
|
|
||||||
static void compile_pcre1_regexp(struct grep_pat *p, const struct grep_opt *opt)
|
|
||||||
{
|
|
||||||
const char *error;
|
|
||||||
int erroffset;
|
|
||||||
int options = PCRE_MULTILINE;
|
|
||||||
int study_options = 0;
|
|
||||||
|
|
||||||
if (opt->ignore_case) {
|
|
||||||
if (!opt->ignore_locale && has_non_ascii(p->pattern))
|
|
||||||
p->pcre1_tables = pcre_maketables();
|
|
||||||
options |= PCRE_CASELESS;
|
|
||||||
}
|
|
||||||
if (!opt->ignore_locale && is_utf8_locale() && has_non_ascii(p->pattern))
|
|
||||||
options |= PCRE_UTF8;
|
|
||||||
|
|
||||||
p->pcre1_regexp = pcre_compile(p->pattern, options, &error, &erroffset,
|
|
||||||
p->pcre1_tables);
|
|
||||||
if (!p->pcre1_regexp)
|
|
||||||
compile_regexp_failed(p, error);
|
|
||||||
|
|
||||||
#if defined(PCRE_CONFIG_JIT) && !defined(NO_LIBPCRE1_JIT)
|
|
||||||
pcre_config(PCRE_CONFIG_JIT, &p->pcre1_jit_on);
|
|
||||||
if (opt->debug)
|
|
||||||
fprintf(stderr, "pcre1_jit_on=%d\n", p->pcre1_jit_on);
|
|
||||||
|
|
||||||
if (p->pcre1_jit_on)
|
|
||||||
study_options = PCRE_STUDY_JIT_COMPILE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
p->pcre1_extra_info = pcre_study(p->pcre1_regexp, study_options, &error);
|
|
||||||
if (!p->pcre1_extra_info && error)
|
|
||||||
die("%s", error);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int pcre1match(struct grep_pat *p, const char *line, const char *eol,
|
|
||||||
regmatch_t *match, int eflags)
|
|
||||||
{
|
|
||||||
int ovector[30], ret, flags = PCRE_NO_UTF8_CHECK;
|
|
||||||
|
|
||||||
if (eflags & REG_NOTBOL)
|
|
||||||
flags |= PCRE_NOTBOL;
|
|
||||||
|
|
||||||
ret = pcre_exec(p->pcre1_regexp, p->pcre1_extra_info, line,
|
|
||||||
eol - line, 0, flags, ovector,
|
|
||||||
ARRAY_SIZE(ovector));
|
|
||||||
|
|
||||||
if (ret < 0 && ret != PCRE_ERROR_NOMATCH)
|
|
||||||
die("pcre_exec failed with error code %d", ret);
|
|
||||||
if (ret > 0) {
|
|
||||||
ret = 0;
|
|
||||||
match->rm_so = ovector[0];
|
|
||||||
match->rm_eo = ovector[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_pcre1_regexp(struct grep_pat *p)
|
|
||||||
{
|
|
||||||
pcre_free(p->pcre1_regexp);
|
|
||||||
#ifdef PCRE_CONFIG_JIT
|
|
||||||
if (p->pcre1_jit_on)
|
|
||||||
pcre_free_study(p->pcre1_extra_info);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
pcre_free(p->pcre1_extra_info);
|
|
||||||
pcre_free((void *)p->pcre1_tables);
|
|
||||||
}
|
|
||||||
#else /* !USE_LIBPCRE1 */
|
|
||||||
static void compile_pcre1_regexp(struct grep_pat *p, const struct grep_opt *opt)
|
|
||||||
{
|
|
||||||
die("cannot use Perl-compatible regexes when not compiled with USE_LIBPCRE");
|
|
||||||
}
|
|
||||||
|
|
||||||
static int pcre1match(struct grep_pat *p, const char *line, const char *eol,
|
|
||||||
regmatch_t *match, int eflags)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_pcre1_regexp(struct grep_pat *p)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif /* !USE_LIBPCRE1 */
|
|
||||||
|
|
||||||
#ifdef USE_LIBPCRE2
|
#ifdef USE_LIBPCRE2
|
||||||
static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt)
|
static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt)
|
||||||
{
|
{
|
||||||
|
@ -588,11 +487,6 @@ static void free_pcre2_pattern(struct grep_pat *p)
|
||||||
#else /* !USE_LIBPCRE2 */
|
#else /* !USE_LIBPCRE2 */
|
||||||
static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt)
|
static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* Unreachable until USE_LIBPCRE2 becomes synonymous with
|
|
||||||
* USE_LIBPCRE. See the sibling comment in
|
|
||||||
* grep_set_pattern_type_option().
|
|
||||||
*/
|
|
||||||
die("cannot use Perl-compatible regexes when not compiled with USE_LIBPCRE");
|
die("cannot use Perl-compatible regexes when not compiled with USE_LIBPCRE");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -693,11 +587,6 @@ static void compile_regexp(struct grep_pat *p, struct grep_opt *opt)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt->pcre1) {
|
|
||||||
compile_pcre1_regexp(p, opt);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (p->ignore_case)
|
if (p->ignore_case)
|
||||||
regflags |= REG_ICASE;
|
regflags |= REG_ICASE;
|
||||||
if (opt->extended_regexp_option)
|
if (opt->extended_regexp_option)
|
||||||
|
@ -1051,9 +940,7 @@ void free_grep_patterns(struct grep_opt *opt)
|
||||||
case GREP_PATTERN: /* atom */
|
case GREP_PATTERN: /* atom */
|
||||||
case GREP_PATTERN_HEAD:
|
case GREP_PATTERN_HEAD:
|
||||||
case GREP_PATTERN_BODY:
|
case GREP_PATTERN_BODY:
|
||||||
if (p->pcre1_regexp)
|
if (p->pcre2_pattern)
|
||||||
free_pcre1_regexp(p);
|
|
||||||
else if (p->pcre2_pattern)
|
|
||||||
free_pcre2_pattern(p);
|
free_pcre2_pattern(p);
|
||||||
else
|
else
|
||||||
regfree(&p->regexp);
|
regfree(&p->regexp);
|
||||||
|
@ -1116,9 +1003,7 @@ static int patmatch(struct grep_pat *p, char *line, char *eol,
|
||||||
{
|
{
|
||||||
int hit;
|
int hit;
|
||||||
|
|
||||||
if (p->pcre1_regexp)
|
if (p->pcre2_pattern)
|
||||||
hit = !pcre1match(p, line, eol, match, eflags);
|
|
||||||
else if (p->pcre2_pattern)
|
|
||||||
hit = !pcre2match(p, line, eol, match, eflags);
|
hit = !pcre2match(p, line, eol, match, eflags);
|
||||||
else
|
else
|
||||||
hit = !regexec_buf(&p->regexp, line, eol - line, 1, match,
|
hit = !regexec_buf(&p->regexp, line, eol - line, 1, match,
|
||||||
|
|
14
grep.h
14
grep.h
|
@ -1,15 +1,6 @@
|
||||||
#ifndef GREP_H
|
#ifndef GREP_H
|
||||||
#define GREP_H
|
#define GREP_H
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
#ifdef USE_LIBPCRE1
|
|
||||||
#include <pcre.h>
|
|
||||||
#ifndef PCRE_NO_UTF8_CHECK
|
|
||||||
#define PCRE_NO_UTF8_CHECK 0
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
typedef int pcre;
|
|
||||||
typedef int pcre_extra;
|
|
||||||
#endif
|
|
||||||
#ifdef USE_LIBPCRE2
|
#ifdef USE_LIBPCRE2
|
||||||
#define PCRE2_CODE_UNIT_WIDTH 8
|
#define PCRE2_CODE_UNIT_WIDTH 8
|
||||||
#include <pcre2.h>
|
#include <pcre2.h>
|
||||||
|
@ -71,10 +62,6 @@ struct grep_pat {
|
||||||
size_t patternlen;
|
size_t patternlen;
|
||||||
enum grep_header_field field;
|
enum grep_header_field field;
|
||||||
regex_t regexp;
|
regex_t regexp;
|
||||||
pcre *pcre1_regexp;
|
|
||||||
pcre_extra *pcre1_extra_info;
|
|
||||||
const unsigned char *pcre1_tables;
|
|
||||||
int pcre1_jit_on;
|
|
||||||
pcre2_code *pcre2_pattern;
|
pcre2_code *pcre2_pattern;
|
||||||
pcre2_match_data *pcre2_match_data;
|
pcre2_match_data *pcre2_match_data;
|
||||||
pcre2_compile_context *pcre2_compile_context;
|
pcre2_compile_context *pcre2_compile_context;
|
||||||
|
@ -144,7 +131,6 @@ struct grep_opt {
|
||||||
int allow_textconv;
|
int allow_textconv;
|
||||||
int extended;
|
int extended;
|
||||||
int use_reflog_filter;
|
int use_reflog_filter;
|
||||||
int pcre1;
|
|
||||||
int pcre2;
|
int pcre2;
|
||||||
int relative;
|
int relative;
|
||||||
int pathname;
|
int pathname;
|
||||||
|
|
12
t/README
12
t/README
|
@ -1104,18 +1104,6 @@ use these, and "test_set_prereq" for how to define your own.
|
||||||
Git was compiled with support for PCRE. Wrap any tests
|
Git was compiled with support for PCRE. Wrap any tests
|
||||||
that use git-grep --perl-regexp or git-grep -P in these.
|
that use git-grep --perl-regexp or git-grep -P in these.
|
||||||
|
|
||||||
- LIBPCRE1
|
|
||||||
|
|
||||||
Git was compiled with PCRE v1 support via
|
|
||||||
USE_LIBPCRE1=YesPlease. Wrap any PCRE using tests that for some
|
|
||||||
reason need v1 of the PCRE library instead of v2 in these.
|
|
||||||
|
|
||||||
- LIBPCRE2
|
|
||||||
|
|
||||||
Git was compiled with PCRE v2 support via
|
|
||||||
USE_LIBPCRE2=YesPlease. Wrap any PCRE using tests that for some
|
|
||||||
reason need v2 of the PCRE library instead of v1 in these.
|
|
||||||
|
|
||||||
- CASE_INSENSITIVE_FS
|
- CASE_INSENSITIVE_FS
|
||||||
|
|
||||||
Test is run on a case insensitive file system.
|
Test is run on a case insensitive file system.
|
||||||
|
|
|
@ -1524,8 +1524,7 @@ esac
|
||||||
test -z "$NO_PERL" && test_set_prereq PERL
|
test -z "$NO_PERL" && test_set_prereq PERL
|
||||||
test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
|
test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
|
||||||
test -z "$NO_PYTHON" && test_set_prereq PYTHON
|
test -z "$NO_PYTHON" && test_set_prereq PYTHON
|
||||||
test -n "$USE_LIBPCRE1$USE_LIBPCRE2" && test_set_prereq PCRE
|
test -n "$USE_LIBPCRE2" && test_set_prereq PCRE
|
||||||
test -n "$USE_LIBPCRE1" && test_set_prereq LIBPCRE1
|
|
||||||
test -n "$USE_LIBPCRE2" && test_set_prereq LIBPCRE2
|
test -n "$USE_LIBPCRE2" && test_set_prereq LIBPCRE2
|
||||||
test -z "$NO_GETTEXT" && test_set_prereq GETTEXT
|
test -z "$NO_GETTEXT" && test_set_prereq GETTEXT
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue