Re: [PATCH] git-compat-util: Avoid strcasecmp() being inlined
- From
Sebastian Schuberth <sschuberth@gmail.com>
- Date
- Sep 13, 2013, 19:53 UTC
- Message-ID
- <CAHGBnuMNDJhAqNfgVRHRE-7R=UZbd+fMExYeKDWWCFjyQJYYTQ@mail.gmail.com>
- In-Reply-To
- <xmqqppsckcsd.fsf@gitster.dls.corp.google.com>
On Fri, Sep 13, 2013 at 4:37 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Which means people who do want to see that macro defined will be > broken after that section of the header file which unconditionally > undefs it, right?
Right, but luckily you've fixed that in our proposed patch :-)
> That is certainly better than the unconditional one, but I wonder if > it is an option to add compat/mingw/string.h without doing the > above, though.
I don't like the idea of introducing a compat/mingw/string.h because of two reasons: You would have to add a conditional to include that string.h instead of the system one anyway, so we could just as well keep the conditional in git-compat-util.h along with the logic. And I don't like the include_next GCC-ism, especially as I was planning to take a look at compiling Git with LLVM / clang under Windows. So how about this:
--- a/git-compat-util.h +++ b/git-compat-util.h @@ -85,6 +85,25 @@ #define _NETBSD_SOURCE 1 #define _SGI_SOURCE 1 +#ifdef __MINGW32__ +#ifdef __NO_INLINE__ +#define __NO_INLINE_ALREADY_DEFINED +#else +#define __NO_INLINE__ /* do not inline strcasecmp() */ +#endif +#endif +#include <string.h> +#ifdef __MINGW32__ +#ifdef __NO_INLINE_ALREADY_DEFINED +#undef __NO_INLINE_ALREADY_DEFINED +#else +#undef __NO_INLINE__ +#endif +#endif +#ifdef HAVE_STRINGS_H +#include <strings.h> /* for strcasecmp() */ +#endif + #ifdef WIN32 /* Both MinGW and MSVC */ #define _WIN32_WINNT 0x0502 #define WIN32_LEAN_AND_MEAN /* stops windows.h including winsock.h */ @@ -99,10 +118,6 @@ #include <stddef.h> #include <stdlib.h> #include <stdarg.h> -#include <string.h> -#ifdef HAVE_STRINGS_H -#include <strings.h> /* for strcasecmp() */ -#endif #include <errno.h> #include <limits.h> #ifdef NEEDS_SYS_PARAM_H
-- Sebastian Schuberth