From: Sebastian Huber <sebastian.huber@embedded-brains.de>
To: newlib@sourceware.org
Subject: [PATCH 2/3] Synchronize <strings.h> with latest FreeBSD
Date: Tue, 04 Jul 2017 13:34:00 -0000 [thread overview]
Message-ID: <20170704133435.9840-2-sebastian.huber@embedded-brains.de> (raw)
In-Reply-To: <20170704133435.9840-1-sebastian.huber@embedded-brains.de>
Include <strings.h> in <string.h> if __BSD_VISIBLE like on FreeBSD.
Remove redundant declarations from <string.h>. Make ffsl(), ffsll(),
strncasecmp(), strcasecmp_l(), and strncasecmp_l() visible via
__BSD_VISIBLE instead of __GNU_VISIBLE. Add fls(), flsl(), and flsll()
to <strings.h> if __BSD_VISIBLE.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
---
newlib/libc/include/string.h | 32 ++--------------
newlib/libc/include/strings.h | 89 ++++++++++++++++++++++++++++---------------
2 files changed, 62 insertions(+), 59 deletions(-)
diff --git a/newlib/libc/include/string.h b/newlib/libc/include/string.h
index 75de50351..29e0d4476 100644
--- a/newlib/libc/include/string.h
+++ b/newlib/libc/include/string.h
@@ -20,6 +20,10 @@
#include <xlocale.h>
#endif
+#if __BSD_VISIBLE
+#include <strings.h>
+#endif
+
_BEGIN_STD_C
_PTR _EXFUN(memchr,(const _PTR, int, size_t));
@@ -52,27 +56,13 @@ int strcoll_l (const char *, const char *, locale_t);
char *strerror_l (int, locale_t);
size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
#endif
-#if __GNU_VISIBLE
-int strcasecmp_l (const char *, const char *, locale_t);
-int strncasecmp_l (const char *, const char *, size_t, locale_t);
-#endif
#if __MISC_VISIBLE || __POSIX_VISIBLE
char *_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict));
#endif
-#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));
-#endif
#if __BSD_VISIBLE
-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 __BSD_VISIBLE /* POSIX declaration is in <strings.h> */
-int _EXFUN(ffs,(int));
-char *_EXFUN(index,(const char *, int));
-#endif
#if __MISC_VISIBLE || __POSIX_VISIBLE
_PTR _EXFUN(memccpy,(_PTR __restrict, const _PTR __restrict, int, size_t));
#endif
@@ -82,16 +72,10 @@ _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 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));
#endif
-#if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */
-int _EXFUN(strcasecmp,(const char *, const char *));
-#endif
#if __GNU_VISIBLE
char *_EXFUN(strcasestr,(const char *, const char *));
char *_EXFUN(strchrnul,(const char *, int));
@@ -105,11 +89,6 @@ char *_EXFUN(strndup,(const char *, size_t));
#endif
char *_EXFUN(_strndup_r,(struct _reent *, const char *, size_t));
-#if __GNU_VISIBLE
-int _EXFUN(ffsl,(long));
-int _EXFUN(ffsll, (long long));
-#endif
-
/* There are two common strerror_r variants. If you request
_GNU_SOURCE, you get the GNU version; otherwise you get the POSIX
version. POSIX requires that #undef strerror_r will still let you
@@ -136,9 +115,6 @@ 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 declaration is in <strings.h> */
-int _EXFUN(strncasecmp,(const char *, const char *, size_t));
-#endif
#if __POSIX_VISIBLE >= 200809
size_t _EXFUN(strnlen,(const char *, size_t));
#endif
diff --git a/newlib/libc/include/strings.h b/newlib/libc/include/strings.h
index 3331611ab..35fcdc092 100644
--- a/newlib/libc/include/strings.h
+++ b/newlib/libc/include/strings.h
@@ -1,49 +1,76 @@
-/*
- * strings.h
+/*-
+ * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
+ * All rights reserved.
*
- * Definitions for string operations.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: head/include/strings.h 272673 2014-10-07 04:54:11Z delphij $
*/
#ifndef _STRINGS_H_
-#define _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>
-#include <sys/types.h> /* for size_t */
+#include <sys/_types.h>
#if __POSIX_VISIBLE >= 200809
#include <xlocale.h>
#endif
-_BEGIN_STD_C
-
-#if __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE < 200809)
-/*
- * Marked LEGACY in Open Group Base Specifications Issue 6/IEEE Std 1003.1-2004
- * Removed from Open Group Base Specifications Issue 7/IEEE Std 1003.1-2008
- */
-int _EXFUN(bcmp,(const void *, const void *, size_t));
-void _EXFUN(bcopy,(const void *, void *, size_t));
-void _EXFUN(bzero,(void *, size_t));
-char *_EXFUN(index,(const char *, int));
-char *_EXFUN(rindex,(const char *, int));
-#endif /* __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE < 200809) */
+#ifndef _SIZE_T_DECLARED
+typedef __size_t size_t;
+#define _SIZE_T_DECLARED
+#endif
-int _EXFUN(ffs,(int));
-int _EXFUN(strcasecmp,(const char *, const char *));
-int _EXFUN(strncasecmp,(const char *, const char *, size_t));
+__BEGIN_DECLS
+#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
+int bcmp(const void *, const void *, size_t) __pure; /* LEGACY */
+void bcopy(const void *, void *, size_t); /* LEGACY */
+void bzero(void *, size_t); /* LEGACY */
+#endif
+#if __BSD_VISIBLE
+void explicit_bzero(void *, size_t);
+#endif
+#if __XSI_VISIBLE
+int ffs(int) __pure2;
+#endif
+#if __BSD_VISIBLE
+int ffsl(long) __pure2;
+int ffsll(long long) __pure2;
+int fls(int) __pure2;
+int flsl(long) __pure2;
+int flsll(long long) __pure2;
+#endif
+#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
+char *index(const char *, int) __pure; /* LEGACY */
+char *rindex(const char *, int) __pure; /* LEGACY */
+#endif
+int strcasecmp(const char *, const char *) __pure;
+int strncasecmp(const char *, const char *, size_t) __pure;
#if __POSIX_VISIBLE >= 200809
int strcasecmp_l (const char *, const char *, locale_t);
int strncasecmp_l (const char *, const char *, size_t, locale_t);
-#endif /* __POSIX_VISIBLE >= 200809 */
-
-_END_STD_C
-
-#endif /* !(_STRING_H_ && __BSD_VISIBLE) */
+#endif
+__END_DECLS
#endif /* _STRINGS_H_ */
--
2.12.3
next prev parent reply other threads:[~2017-07-04 13:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-04 13:34 [PATCH 1/3] Implement bzero() via memset() Sebastian Huber
2017-07-04 13:34 ` Sebastian Huber [this message]
2017-07-04 13:34 ` [PATCH 3/3] Add ffsl(), ffsll(), fls(), flsl(), flsll() Sebastian Huber
2017-07-05 6:06 ` Sebastian Huber
2017-07-05 8:42 ` Corinna Vinschen
2017-07-05 8:54 ` [PATCH v2 " Sebastian Huber
2017-07-05 11:26 ` Corinna Vinschen
2017-07-27 1:40 ` Kito Cheng
2017-07-27 5:47 ` Sebastian Huber
2017-07-27 6:21 ` Sebastian Huber
2017-07-27 6:38 ` Kito Cheng
2017-07-27 6:40 ` Kito Cheng
2017-07-27 6:50 ` Sebastian Huber
2017-07-27 6:53 ` Kito Cheng
2017-07-27 7:09 ` Sebastian Huber
2017-07-27 7:21 ` Sebastian Huber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170704133435.9840-2-sebastian.huber@embedded-brains.de \
--to=sebastian.huber@embedded-brains.de \
--cc=newlib@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).