This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Feature test macros overhaul: string.h and strings.h overlaps


strings.h is the header mandated for these functions in POSIX.1 prior to
2008 (when most of these were removed).  The declarations in string.h are
only for BSD compatibility.  But when both headers are included, avoid
duplicate declarations.

Also, mark stpcpy and stpncpy as POSIX.1-2008.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
---
 newlib/libc/include/string.h  | 14 +++++++-------
 newlib/libc/include/strings.h |  5 +++++
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/newlib/libc/include/string.h b/newlib/libc/include/string.h
index 68ee412..56c7fc2 100644
--- a/newlib/libc/include/string.h
+++ b/newlib/libc/include/string.h
@@ -46,7 +46,7 @@ size_t	 _EXFUN(strxfrm,(char *__restrict, const char *__restrict, size_t));
 #if __MISC_VISIBLE || __POSIX_VISIBLE
 char 	*_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict));
 #endif
-#if __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE < 200809)
+#if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */
 int	 _EXFUN(bcmp,(const void *, const void *, size_t));
 void	 _EXFUN(bcopy,(const void *, void *, size_t));
 void	 _EXFUN(bzero,(void *, size_t));
@@ -56,10 +56,8 @@ void	 _EXFUN(explicit_bzero,(void *, size_t));
 int	 _EXFUN(timingsafe_bcmp,(const void *, const void *, size_t));
 int	 _EXFUN(timingsafe_memcmp,(const void *, const void *, size_t));
 #endif
-#if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809
+#if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */
 int	 _EXFUN(ffs,(int));
-#endif
-#if __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE < 200809)
 char 	*_EXFUN(index,(const char *, int));
 #endif
 #if __MISC_VISIBLE || __POSIX_VISIBLE
@@ -71,12 +69,14 @@ _PTR	 _EXFUN(memmem, (const _PTR, size_t, const _PTR, size_t));
 _PTR 	 _EXFUN(memrchr,(const _PTR, int, size_t));
 _PTR 	 _EXFUN(rawmemchr,(const _PTR, int));
 #endif
-#if __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE < 200809)
+#if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */
 char 	*_EXFUN(rindex,(const char *, int));
 #endif
+#if __POSIX_VISIBLE >= 200809
 char 	*_EXFUN(stpcpy,(char *__restrict, const char *__restrict));
 char 	*_EXFUN(stpncpy,(char *__restrict, const char *__restrict, size_t));
-#if __BSD_VISIBLE || __POSIX_VISIBLE
+#endif
+#if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */
 int	 _EXFUN(strcasecmp,(const char *, const char *));
 #endif
 #if __GNU_VISIBLE
@@ -123,7 +123,7 @@ char *	_EXFUN(_strerror_r, (struct _reent *, int, int, int *));
 size_t	_EXFUN(strlcat,(char *, const char *, size_t));
 size_t	_EXFUN(strlcpy,(char *, const char *, size_t));
 #endif
-#if __BSD_VISIBLE || __POSIX_VISIBLE
+#if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */
 int	_EXFUN(strncasecmp,(const char *, const char *, size_t));
 #endif
 #if __POSIX_VISIBLE >= 200809
diff --git a/newlib/libc/include/strings.h b/newlib/libc/include/strings.h
index fdccfca..e467467 100644
--- a/newlib/libc/include/strings.h
+++ b/newlib/libc/include/strings.h
@@ -7,6 +7,9 @@
 #ifndef _STRINGS_H_
 #define _STRINGS_H_
 
+/* These functions are already declared in <string.h> with __BSD_VISIBLE */
+#if !(defined(_STRING_H_) && __BSD_VISIBLE)
+
 #include "_ansi.h"
 #include <sys/reent.h>
 #include <sys/cdefs.h>
@@ -32,4 +35,6 @@ int	 _EXFUN(strncasecmp,(const char *, const char *, size_t));
 
 _END_STD_C
 
+#endif /* !(_STRING_H_ && __BSD_VISIBLE) */
+
 #endif /* _STRINGS_H_ */
-- 
2.8.0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]