From: Andreas Ericsson Date: Sat, 10 Nov 2007 11:55:48 +0000 (+0100) Subject: Simplify strchrnul() compat code X-Git-Tag: v1.5.4-rc0~213^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=9e79f00f06a5500b30941e6925adda070504e6cf;p=git.git Simplify strchrnul() compat code strchrnul() was introduced in glibc in April 1999 and included in glibc-2.1. Checking for that version means the majority of all git users would get to use the optimized version in glibc. Of the remaining few some might get to use a slightly slower version than necessary but probably not slower than what we have today. Unfortunately, __GLIBC_PREREQ() macro was not available in glibc 2.1.1 which was short lived but already supported strchrnul(). Odd minority users of that library needs to live with our compatibility inline version. Rediffed-against-next-by: Rene Scharfe Signed-off-by: Junio C Hamano --- diff --git a/Makefile b/Makefile index 69dcbb227..621270f62 100644 --- a/Makefile +++ b/Makefile @@ -30,8 +30,6 @@ all:: # # Define NO_MEMMEM if you don't have memmem. # -# Define NO_STRCHRNUL if you don't have strchrnul. -# # Define NO_STRLCPY if you don't have strlcpy. # # Define NO_STRTOUMAX if you don't have strtoumax in the C library. @@ -408,7 +406,6 @@ ifeq ($(uname_S),Darwin) OLD_ICONV = UnfortunatelyYes NO_STRLCPY = YesPlease NO_MEMMEM = YesPlease - NO_STRCHRNUL = YesPlease endif ifeq ($(uname_S),SunOS) NEEDS_SOCKET = YesPlease @@ -416,7 +413,6 @@ ifeq ($(uname_S),SunOS) SHELL_PATH = /bin/bash NO_STRCASESTR = YesPlease NO_MEMMEM = YesPlease - NO_STRCHRNUL = YesPlease NO_HSTRERROR = YesPlease ifeq ($(uname_R),5.8) NEEDS_LIBICONV = YesPlease @@ -442,7 +438,6 @@ ifeq ($(uname_O),Cygwin) NO_D_INO_IN_DIRENT = YesPlease NO_STRCASESTR = YesPlease NO_MEMMEM = YesPlease - NO_STRCHRNUL = YesPlease NO_SYMLINK_HEAD = YesPlease NEEDS_LIBICONV = YesPlease NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes @@ -457,14 +452,12 @@ endif ifeq ($(uname_S),FreeBSD) NEEDS_LIBICONV = YesPlease NO_MEMMEM = YesPlease - NO_STRCHRNUL = YesPlease BASIC_CFLAGS += -I/usr/local/include BASIC_LDFLAGS += -L/usr/local/lib endif ifeq ($(uname_S),OpenBSD) NO_STRCASESTR = YesPlease NO_MEMMEM = YesPlease - NO_STRCHRNUL = YesPlease NEEDS_LIBICONV = YesPlease BASIC_CFLAGS += -I/usr/local/include BASIC_LDFLAGS += -L/usr/local/lib @@ -480,7 +473,6 @@ endif ifeq ($(uname_S),AIX) NO_STRCASESTR=YesPlease NO_MEMMEM = YesPlease - NO_STRCHRNUL = YesPlease NO_STRLCPY = YesPlease NEEDS_LIBICONV=YesPlease endif @@ -493,7 +485,6 @@ ifeq ($(uname_S),IRIX64) NO_SETENV=YesPlease NO_STRCASESTR=YesPlease NO_MEMMEM = YesPlease - NO_STRCHRNUL = YesPlease NO_STRLCPY = YesPlease NO_SOCKADDR_STORAGE=YesPlease SHELL_PATH=/usr/gnu/bin/bash @@ -704,10 +695,6 @@ ifdef NO_MEMMEM COMPAT_CFLAGS += -DNO_MEMMEM COMPAT_OBJS += compat/memmem.o endif -ifdef NO_STRCHRNUL - COMPAT_CFLAGS += -DNO_STRCHRNUL - COMPAT_OBJS += compat/strchrnul.o -endif ifdef THREADED_DELTA_SEARCH BASIC_CFLAGS += -DTHREADED_DELTA_SEARCH diff --git a/compat/strchrnul.c b/compat/strchrnul.c deleted file mode 100644 index 51839feb6..000000000 --- a/compat/strchrnul.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "../git-compat-util.h" - -char *gitstrchrnul(const char *s, int c) -{ - while (*s && *s != c) - s++; - return (char *)s; -} diff --git a/git-compat-util.h b/git-compat-util.h index e72654bc4..92d79673f 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -183,9 +183,14 @@ void *gitmemmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen); #endif -#ifdef NO_STRCHRNUL +#if !defined(__GLIBC_PREREQ) && !__GLIBC_PREREQ(2, 1) #define strchrnul gitstrchrnul -char *gitstrchrnul(const char *s, int c); +static inline char *gitstrchrnul(const char *s, int c) +{ + while (*s && *s != c) + s++; + return (char *)s; +} #endif extern void release_pack_memory(size_t, int);