diff options
author | Andreas Ericsson <ae@op5.se> | 2007-11-10 12:55:48 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-11 12:10:35 -0800 |
commit | 9e79f00f06a5500b30941e6925adda070504e6cf (patch) | |
tree | 16c6e6ce8b4cbe33d845ae2ff0fe9bbd9873800b /git-compat-util.h | |
parent | b9c62321380374d09cc99570cdd1390674532832 (diff) | |
download | git-9e79f00f06a5500b30941e6925adda070504e6cf.tar.gz |
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 <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-compat-util.h')
-rw-r--r-- | git-compat-util.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/git-compat-util.h b/git-compat-util.h index e72654bc40..92d79673f8 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); |