Browse Source

Use compatibility regex library for OSX/Darwin

The standard libc regex library on OSX does not support alternation
in POSIX Basic Regular Expression mode.  This breaks the diff.funcname
functionality on OSX.

To fix this, we use the GNU regex library which is already present in
the compat/ diretory for the MinGW port.  However, simply adding compat/
to the COMPAT_CFLAGS variable causes a conflict between the system
fnmatch.h and the one present in compat/.  To remedy this, move the
regex and fnmatch functionality to their own subdirectories in compat/
so they can be included seperately.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Tested-by: Mike Ralphson <mike@abacus.co.uk> (AIX)
Tested-by: Johannes Sixt <johannes.sixt@telecom.at> (MinGW)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Arjen Laarhoven 17 years ago committed by Junio C Hamano
parent
commit
3632cfc248
  1. 6
      Makefile
  2. 0
      compat/fnmatch/fnmatch.c
  3. 0
      compat/fnmatch/fnmatch.h
  4. 0
      compat/regex/regex.c
  5. 0
      compat/regex/regex.h
  6. 6
      t/t4018-diff-funcname.sh

6
Makefile

@ -626,6 +626,8 @@ ifeq ($(uname_S),Darwin) @@ -626,6 +626,8 @@ ifeq ($(uname_S),Darwin)
endif
NO_STRLCPY = YesPlease
NO_MEMMEM = YesPlease
COMPAT_CFLAGS += -Icompat/regex
COMPAT_OBJS += compat/regex/regex.o
endif
ifeq ($(uname_S),SunOS)
NEEDS_SOCKET = YesPlease
@ -750,10 +752,10 @@ ifneq (,$(findstring MINGW,$(uname_S))) @@ -750,10 +752,10 @@ ifneq (,$(findstring MINGW,$(uname_S)))
NO_SVN_TESTS = YesPlease
NO_PERL_MAKEMAKER = YesPlease
NO_POSIX_ONLY_PROGRAMS = YesPlease
COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat
COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/regex -Icompat/fnmatch
COMPAT_CFLAGS += -DSNPRINTF_SIZE_CORR=1
COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
COMPAT_OBJS += compat/mingw.o compat/fnmatch.o compat/regex.o compat/winansi.o
COMPAT_OBJS += compat/mingw.o compat/fnmatch/fnmatch.o compat/regex/regex.o compat/winansi.o
EXTLIBS += -lws2_32
X = .exe
gitexecdir = ../libexec/git-core

0
compat/fnmatch.c → compat/fnmatch/fnmatch.c

0
compat/fnmatch.h → compat/fnmatch/fnmatch.h

0
compat/regex.c → compat/regex/regex.c

0
compat/regex.h → compat/regex/regex.h

6
t/t4018-diff-funcname.sh

@ -57,4 +57,10 @@ test_expect_success 'last regexp must not be negated' ' @@ -57,4 +57,10 @@ test_expect_success 'last regexp must not be negated' '
test_must_fail git diff --no-index Beer.java Beer-correct.java
'

test_expect_success 'alternation in pattern' '
git config diff.java.funcname "^[ ]*\\(\\(public\\|static\\).*\\)$"
git diff --no-index Beer.java Beer-correct.java |
grep "^@@.*@@ public static void main("
'

test_done

Loading…
Cancel
Save