use enhanced basic regular expressions on macOS
When 1819ad327b
(grep: fix multibyte regex handling under macOS,
2022-08-26) started to use the native regex library instead of Git's
own (compat/regex/), it lost support for alternation in basic
regular expressions.
Bring it back by enabling the flag REG_ENHANCED on macOS when
compiling basic regular expressions.
Reported-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c48035d29b
commit
54463d32ef
9
Makefile
9
Makefile
@ -289,6 +289,10 @@ include shared.mak
|
||||
# Define NO_REGEX if your C library lacks regex support with REG_STARTEND
|
||||
# feature.
|
||||
#
|
||||
# Define USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS if your C library provides
|
||||
# the flag REG_ENHANCED and you'd like to use it to enable enhanced basic
|
||||
# regular expressions.
|
||||
#
|
||||
# Define HAVE_DEV_TTY if your system can open /dev/tty to interact with the
|
||||
# user.
|
||||
#
|
||||
@ -2040,6 +2044,11 @@ endif
|
||||
ifdef NO_REGEX
|
||||
COMPAT_CFLAGS += -Icompat/regex
|
||||
COMPAT_OBJS += compat/regex/regex.o
|
||||
else
|
||||
ifdef USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS
|
||||
COMPAT_CFLAGS += -DUSE_ENHANCED_BASIC_REGULAR_EXPRESSIONS
|
||||
COMPAT_OBJS += compat/regcomp_enhanced.o
|
||||
endif
|
||||
endif
|
||||
ifdef NATIVE_CRLF
|
||||
BASIC_CFLAGS += -DNATIVE_CRLF
|
||||
|
9
compat/regcomp_enhanced.c
Normal file
9
compat/regcomp_enhanced.c
Normal file
@ -0,0 +1,9 @@
|
||||
#include "../git-compat-util.h"
|
||||
#undef regcomp
|
||||
|
||||
int git_regcomp(regex_t *preg, const char *pattern, int cflags)
|
||||
{
|
||||
if (!(cflags & REG_EXTENDED))
|
||||
cflags |= REG_ENHANCED;
|
||||
return regcomp(preg, pattern, cflags);
|
||||
}
|
@ -147,6 +147,7 @@ ifeq ($(uname_S),Darwin)
|
||||
FREAD_READS_DIRECTORIES = UnfortunatelyYes
|
||||
HAVE_NS_GET_EXECUTABLE_PATH = YesPlease
|
||||
CSPRNG_METHOD = arc4random
|
||||
USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS = YesPlease
|
||||
|
||||
# Workaround for `gettext` being keg-only and not even being linked via
|
||||
# `brew link --force gettext`, should be obsolete as of
|
||||
|
@ -1336,6 +1336,11 @@ static inline int regexec_buf(const regex_t *preg, const char *buf, size_t size,
|
||||
return regexec(preg, buf, nmatch, pmatch, eflags | REG_STARTEND);
|
||||
}
|
||||
|
||||
#ifdef USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS
|
||||
int git_regcomp(regex_t *preg, const char *pattern, int cflags);
|
||||
#define regcomp git_regcomp
|
||||
#endif
|
||||
|
||||
#ifndef DIR_HAS_BSD_GROUP_SEMANTICS
|
||||
# define FORCE_DIR_SET_GID S_ISGID
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user