From 6fc25b2d1e77e48241219400fe840249697c6a56 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 2 Mar 2010 19:28:39 +0000 Subject: [PATCH] 2010-03-02 Craig Howland * libc/include/sys/features.h: Add POSIX.1-permitted definition of _POSIX_C_SOURCE if not already defined and _XOPEN_SOURCE has an appropriate value. Specifically, check for POSIX.1-2008 & 2001 values. * libc/include/sys/config.h: Add #include so that all includes get the new check added to it. --- newlib/ChangeLog | 8 ++++++++ newlib/libc/include/sys/config.h | 1 + newlib/libc/include/sys/features.h | 13 +++++++++++++ 3 files changed, 22 insertions(+) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 14be98efb..be249d8b7 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,11 @@ +2010-03-02 Craig Howland + + * libc/include/sys/features.h: Add POSIX.1-permitted definition of + _POSIX_C_SOURCE if not already defined and _XOPEN_SOURCE has an + appropriate value. Specifically, check for POSIX.1-2008 & 2001 values. + * libc/include/sys/config.h: Add #include so that all + includes get the new check added to it. + 2010-03-02 Charles Wilson * libc/xdr/README: Correct grammatical errors. diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h index 49a3d8ac7..71f9d281d 100644 --- a/newlib/libc/include/sys/config.h +++ b/newlib/libc/include/sys/config.h @@ -2,6 +2,7 @@ #define __SYS_CONFIG_H__ #include /* floating point macros */ +#include /* POSIX defs */ /* exceptions first */ #if defined(__H8500__) || defined(__W65__) diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h index bc40f0068..e7968e05a 100644 --- a/newlib/libc/include/sys/features.h +++ b/newlib/libc/include/sys/features.h @@ -180,6 +180,19 @@ extern "C" { #endif /* !__STRICT_ANSI__ || __cplusplus || __STDC_VERSION__ >= 199901L */ #endif /* __CYGWIN__ */ +/* Per the permission given in POSIX.1-2008 section 2.2.1, define + * _POSIX_C_SOURCE if _XOPEN_SOURCE is defined and _POSIX_C_SOURCE is not. + * (_XOPEN_SOURCE indicates that XSI extensions are desired by an application.) + * This permission is first granted in 2008, but it is used for 2001, anyway. + */ +#if !defined(_POSIX_C_SOURCE) && defined(_XOPEN_SOURCE) + #if _XOPEN_SOURCE == 700 /* POSIX.1-2008 */ + #define _POSIX_C_SOURCE 200809L + #elif _XOPEN_SOURCE == 600 /* POSIX.1-2001 */ + #define _POSIX_C_SOURCE 200112L + #endif +#endif + #ifdef __cplusplus } #endif