git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC/PATCH 1/2] Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6

From
Junio C Hamano <gitster@pobox.com>
Date
May 23, 2009, 19:24 UTC
Message-ID
<1243106697-6424-2-git-send-email-gitster@pobox.com>
In-Reply-To
<1243106697-6424-1-git-send-email-gitster@pobox.com>
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 |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/git-compat-util.h b/git-compat-util.h
index c7cf2d5..4236647 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -41,8 +41,10 @@
 
 #if !defined(__APPLE__) && !defined(__FreeBSD__)  && !defined(__USLC__) && !defined(_M_UNIX)
 #define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 for S_ISLNK() */
+#ifndef __sun__
 #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
 #endif
+#endif
 #define _ALL_SOURCE 1
 #define _GNU_SOURCE 1
 #define _BSD_SOURCE 1
-- 
1.6.3.1.145.gb74d77
Previous: Junio C HamanoNext: Junio C Hamano
Message 2 of 15 in “OpenSolaris 2008.11 portability fixes”
  1. 0/2 OpenSolaris 2008.11 portability fixesJunio C Hamano, May 23, 2009
  2. 1/2 Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6Junio C Hamano, May 23, 2009
  3. 2/2 OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONVJunio C Hamano, May 23, 2009
  4. Brandon CaseyMay 28, 2009
  5. Jeff KingMay 28, 2009
  6. Brandon CaseyMay 28, 2009
  7. Jeff KingMay 28, 2009
  8. Junio C HamanoMay 28, 2009
  9. Tomas CarneckyJun 11, 2009
  10. Brandon CaseyJun 11, 2009
  11. Tomas CarneckyJun 11, 2009
  12. Brandon CaseyJun 11, 2009
  13. Tomas CarneckyJun 11, 2009
  14. Brandon CaseyJun 11, 2009
  15. Junio C HamanoJun 11, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.