</Command>\r
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>\r
</CustomBuild>\r
+ <ClInclude Include="uposixdefs.h" />\r
<CustomBuild Include="unicode\urename.h">\r
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode\r
</Command>\r
<ClInclude Include="umutex.h">\r
<Filter>configuration</Filter>\r
</ClInclude>\r
+ <ClInclude Include="uposixdefs.h">\r
+ <Filter>configuration</Filter>\r
+ </ClInclude>\r
<ClInclude Include="utracimp.h">\r
<Filter>configuration</Filter>\r
</ClInclude>\r
******************************************************************************
*/
-/* Define _XOPEN_SOURCE for Solaris and friends. */
-/* NetBSD needs it to be >= 4 */
-#if !defined(_XOPEN_SOURCE)
-#if __STDC_VERSION__ >= 199901L
-/* It is invalid to compile an XPG3, XPG4, XPG4v2 or XPG5 application using c99 on Solaris */
-#define _XOPEN_SOURCE 600
-#else
-#define _XOPEN_SOURCE 4
-#endif
-#endif
-
-/* Make sure things like readlink and such functions work.
-Poorly upgraded Solaris machines can't have this defined.
-Cleanly installed Solaris can use this #define.
-*/
-#if !defined(_XOPEN_SOURCE_EXTENDED) && ((!defined(__STDC_VERSION__) || __STDC_VERSION__ >= 199901L) || defined(__xlc__))
-#define _XOPEN_SOURCE_EXTENDED 1
-#endif
+// Defines _XOPEN_SOURCE for access to POSIX functions.
+// Must be before any other #includes.
+#include "uposixdefs.h"
/* include ICU headers */
#include "unicode/utypes.h"
--- /dev/null
+/*
+*******************************************************************************
+* Copyright (C) 2011, International Business Machines
+* Corporation and others. All Rights Reserved.
+*******************************************************************************
+* file name: uposixdefs.h
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created on: 2011jul25
+* created by: Markus W. Scherer
+*
+* Common definitions for implementation files working with POSIX functions.
+* *Important*: #include this file before any other header files!
+*/
+
+#ifndef __UPOSIXDEFS_H__
+#define __UPOSIXDEFS_H__
+
+/*
+ * Define _XOPEN_SOURCE for access to POSIX functions.
+ *
+ * We cannot use U_PLATFORM from platform.h/utypes.h because
+ * "The Open Group Base Specifications"
+ * chapter "2.2 The Compilation Environment" says:
+ * "In the compilation of an application that #defines a feature test macro
+ * specified by IEEE Std 1003.1-2001,
+ * no header defined by IEEE Std 1003.1-2001 shall be included prior to
+ * the definition of the feature test macro."
+ */
+#ifdef _XOPEN_SOURCE
+ /* Use the predefined value. */
+#else
+ /*
+ * Version 6.0:
+ * The Open Group Base Specifications Issue 6 (IEEE Std 1003.1, 2004 Edition)
+ * also known as
+ * SUSv3 = Open Group Single UNIX Specification, Version 3 (UNIX03)
+ *
+ * Note: This definition used to be in C source code (e.g., putil.c)
+ * and define _XOPEN_SOURCE to different values depending on __STDC_VERSION__.
+ * In C++ source code (e.g., putil.cpp), __STDC_VERSION__ is not defined at all.
+ */
+# define _XOPEN_SOURCE 600
+#endif
+
+/*
+ * Make sure things like readlink and such functions work.
+ * Poorly upgraded Solaris machines can't have this defined.
+ * Cleanly installed Solaris can use this #define.
+ *
+ * z/OS needs this definition for timeval and to get usleep.
+ */
+#if !defined(_XOPEN_SOURCE_EXTENDED)
+# define _XOPEN_SOURCE_EXTENDED 1
+#endif
+
+/*
+ * There is an issue with turning on _XOPEN_SOURCE_EXTENDED on certain platforms.
+ * A compatibility issue exists between turning on _XOPEN_SOURCE_EXTENDED and using
+ * standard C++ string class. As a result, standard C++ string class needs to be
+ * turned off for the follwing platforms:
+ * -AIX/VACPP
+ * -Solaris/GCC
+ */
+#if (U_PLATFORM == U_PF_AIX && !defined(__GNUC__)) || (U_PLATFORM == U_PF_SOLARIS && defined(__GNUC__))
+# if _XOPEN_SOURCE_EXTENDED && !defined(U_HAVE_STD_STRING)
+# define U_HAVE_STD_STRING 0
+# endif
+#endif
+
+#endif /* __UPOSIXDEFS_H__ */
******************************************************************************
*/
-/* define for fileno. */
-#ifndef _XOPEN_SOURCE
-#if __STDC_VERSION__ >= 199901L
-/* It is invalid to compile an XPG3, XPG4, XPG4v2 or XPG5 application using c99 */
-#define _XOPEN_SOURCE 600
-#else
-#define _XOPEN_SOURCE 4
-#endif
-#endif
+/*
+ * Defines _XOPEN_SOURCE for access to POSIX functions.
+ * Must be before any other #includes.
+ */
+#include "uposixdefs.h"
#include "locmap.h"
#include "unicode/ustdio.h"
# endif
#endif
+// Defines _XOPEN_SOURCE for access to POSIX functions.
+// Must be before any other #includes.
+#include "uposixdefs.h"
+
#include "simplethread.h"
#include "unicode/utypes.h"
#if U_PLATFORM == U_PF_OS390
#define __DOT1 1
#define __UU
-#define _XOPEN_SOURCE_EXTENDED 1
#ifndef _XPG4_2
#define _XPG4_2
#endif
#include <unistd.h>
-/*#include "platform_xopen_source_extended.h"*/
#endif
#if defined(POSIX)
#if U_PLATFORM == U_PF_OS390
#define __DOT1 1
#define __UU
-#define _XOPEN_SOURCE_EXTENDED 1
#ifndef _XPG4_2
#define _XPG4_2
#endif
#include <unistd.h>
-/*#include "platform_xopen_source_extended.h"*/
#endif
#if defined(POSIX)
* others. All Rights Reserved.
********************************************************************/
-/* z/OS needs this definition for timeval */
-#include "platform_xopen_source_extended.h"
+// Defines _XOPEN_SOURCE for access to POSIX functions.
+// Must be before any other #includes.
+#include "uposixdefs.h"
#include "unicode/uperf.h"
#include "uoptions.h"
* Copyright (C) 2000-2011, International Business Machines
* Corporation and others. All Rights Reserved.
*******************************************************************************
- * file name: pkgdata.c
+ * file name: pkgdata.cpp
* encoding: ANSI X3.4 (1968)
* tab size: 8 (not used)
* indentation:4
* (DLL, common data, etc.)
*/
-/*
- * We define _XOPEN_SOURCE so that we can get popen and pclose.
- */
-#if !defined(_XOPEN_SOURCE)
-#if __STDC_VERSION__ >= 199901L
-/* It is invalid to compile an XPG3, XPG4, XPG4v2 or XPG5 application using c99 on Solaris */
-#define _XOPEN_SOURCE 600
-#else
-#define _XOPEN_SOURCE 4
-#endif
-#endif
-
+// Defines _XOPEN_SOURCE for access to POSIX functions.
+// Must be before any other #includes.
+#include "uposixdefs.h"
#include "unicode/utypes.h"
+++ /dev/null
-/*
-**********************************************************************
-* Copyright (c) 2009-2011, International Business Machines
-* Corporation and others. All Rights Reserved.
-**********************************************************************
-*/
-#ifndef _PLATFORM_XOPEN_SOURCE_EXTENDED_H
-#define _PLATFORM_XOPEN_SOURCE_EXTENDED_H
-
-#include "unicode/utypes.h"
-
-/*
- * z/OS needs this definition for timeval and to get usleep.
- * We move this definition out of the various source files because
- * there might be some platform issues when this is defined.
- * See below.
- */
-#if !defined(_XOPEN_SOURCE_EXTENDED)
-#define _XOPEN_SOURCE_EXTENDED 1
-#endif
-
-/*
- * There is an issue with turning on _XOPEN_SOURCE_EXTENDED on certain platforms.
- * A compatibility issue exists between turning on _XOPEN_SOURCE_EXTENDED and using
- * standard C++ string class. As a result, standard C++ string class needs to be
- * turned off for the follwing platforms:
- * -AIX/VACPP
- * -Solaris/GCC
- */
-#if (U_PLATFORM == U_PF_AIX && !defined(__GNUC__)) || (U_PLATFORM == U_PF_SOLARIS && defined(__GNUC__))
-# if _XOPEN_SOURCE_EXTENDED && !defined(U_HAVE_STD_STRING)
-# define U_HAVE_STD_STRING 0
-# endif
-#endif
-
-#endif /* _PLATFORM_XOPEN_SOURCE_EXTENDED_H */
<ClInclude Include="pkg_gencmn.h" />\r
<ClInclude Include="pkg_icu.h" />\r
<ClInclude Include="pkg_imp.h" />\r
- <ClInclude Include="platform_xopen_source_extended.h" />\r
<ClInclude Include="swapimpl.h" />\r
<ClInclude Include="toolutil.h" />\r
<ClInclude Include="ucbuf.h" />\r