From: Randal L. Schwartz Date: Wed, 20 Dec 2006 23:25:27 GMT Subject: Re: [BUG] daemon.c blows up on OSX Message-ID: <86r6uuxi8o.fsf@blue.stonehenge.com> In-Reply-To: <7v1wmu6ugr.fsf@assigned-by-dhcp.cox.net> >>>>> "Junio" == Junio C Hamano writes: Junio> This unfortunately violates the "all common system headers in Junio> git-compat-util.h" rule, which is needed to define _XOPEN_SOURCE Junio> and friends before including the system header files. Junio> And string.h, netdb.h and unistd.h are already included there, Junio> so there is something deeper going on on OSX. Junio> Is the declaration of strncasecmp in on OSX Junio> conditional to some macro (and the same question about other Junio> symbols you did not get)? We need to find out what feature Junio> macros are expected on that platform and define them as needed. If one of those defines _POSIX_C_SOURCE (or _ANSI_SOURCE), then does *not* define "strncasecmp", because it has those under a comment of "Nonstandard routines". Is anything earlier defining one of these? And yes, netdb.h also has a lot of those depending on _POSIX_C_SOURCE, and so does unistd.h So that's your culprit. You're defining _POSIX_C_SOURCE when you're not really proper _POSIX_C compliant. Can you just remove that? And sys/cdefs.h for darwin has this: /* Deal with various X/Open Portability Guides and Single UNIX Spec. */ #ifdef _XOPEN_SOURCE #if _XOPEN_SOURCE - 0L >= 600L #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200112L #elif _XOPEN_SOURCE - 0L >= 500L #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 199506L #endif #endif So that's likely how _POSIX_C_SOURCE is getting defined for the rest. -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.