Code

Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6
authorJunio C Hamano <gitster@pobox.com>
Sat, 23 May 2009 01:06:06 +0000 (18:06 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 23 May 2009 05:52:00 +0000 (22:52 -0700)
commit30d8080ca76432a60142f6af04e477bfa24b7f4c
treee103476c574d9cd6240a18d230b38366c7673254
parenta80aad7b85fc560451e07792d64ab6cb15a39914
Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6

In git-compat-util.h, we do

    #define _XOPEN_SOURCE 600
    #define _XOPEN_SOURCE_EXTENDED 1

unless we are on BSD or SCO.

On OpenSolaris (200811), /usr/include/sys/feature_tests.h has this nice
table:

    Feature Test Macro      Specification
    ------------------------------------------------  -------------
    _XOPEN_SOURCE                                         XPG3
    _XOPEN_SOURCE && _XOPEN_VERSION = 4                   XPG4
    _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED = 1           XPG4v2
    _XOPEN_SOURCE = 500                                   XPG5
    _XOPEN_SOURCE = 600  (or POSIX_C_SOURCE=200112L)      XPG6

Later in the same header, compilation with -c99 is made to fail if _XPG6 is
not set, like this:

    #if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && !defined(_XPG6))
    #error "Compiler or options invalid for pre-UNIX 03 X/Open applications \
            and pre-2001 POSIX applications"
    #elif ...

The problem is that they check things in an order that is inconvenient for
us.  When they see _XOPEN_SOURCE_EXTENDED, they declare that we are XPG4v2,
regardless of the value of _XOPEN_SOURCE.

To work around this problem, do not define _XOPEN_SOURCE_EXTENDED on
Sun's.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-compat-util.h