Synchronize <strings.h> with latest FreeBSD
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>
This commit is contained in:
		
							parent
							
								
									d736941a51
								
							
						
					
					
						commit
						2390e71a42
					
				|  | @ -20,6 +20,10 @@ | ||||||
| #include <xlocale.h> | #include <xlocale.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if __BSD_VISIBLE | ||||||
|  | #include <strings.h> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| _BEGIN_STD_C | _BEGIN_STD_C | ||||||
| 
 | 
 | ||||||
| _PTR 	 _EXFUN(memchr,(const _PTR, int, size_t)); | _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); | char	*strerror_l (int, locale_t); | ||||||
| size_t	 strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); | size_t	 strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); | ||||||
| #endif | #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 | #if __MISC_VISIBLE || __POSIX_VISIBLE | ||||||
| char 	*_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict)); | char 	*_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict)); | ||||||
| #endif | #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 | #if __BSD_VISIBLE | ||||||
| void	 _EXFUN(explicit_bzero,(void *, size_t)); |  | ||||||
| int	 _EXFUN(timingsafe_bcmp,(const void *, const void *, size_t)); | int	 _EXFUN(timingsafe_bcmp,(const void *, const void *, size_t)); | ||||||
| int	 _EXFUN(timingsafe_memcmp,(const void *, const void *, size_t)); | int	 _EXFUN(timingsafe_memcmp,(const void *, const void *, size_t)); | ||||||
| #endif | #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 | #if __MISC_VISIBLE || __POSIX_VISIBLE | ||||||
| _PTR	 _EXFUN(memccpy,(_PTR __restrict, const _PTR __restrict, int, size_t)); | _PTR	 _EXFUN(memccpy,(_PTR __restrict, const _PTR __restrict, int, size_t)); | ||||||
| #endif | #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(memrchr,(const _PTR, int, size_t)); | ||||||
| _PTR 	 _EXFUN(rawmemchr,(const _PTR, int)); | _PTR 	 _EXFUN(rawmemchr,(const _PTR, int)); | ||||||
| #endif | #endif | ||||||
| #if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */ |  | ||||||
| char 	*_EXFUN(rindex,(const char *, int)); |  | ||||||
| #endif |  | ||||||
| #if __POSIX_VISIBLE >= 200809 | #if __POSIX_VISIBLE >= 200809 | ||||||
| char 	*_EXFUN(stpcpy,(char *__restrict, const char *__restrict)); | char 	*_EXFUN(stpcpy,(char *__restrict, const char *__restrict)); | ||||||
| char 	*_EXFUN(stpncpy,(char *__restrict, const char *__restrict, size_t)); | char 	*_EXFUN(stpncpy,(char *__restrict, const char *__restrict, size_t)); | ||||||
| #endif | #endif | ||||||
| #if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */ |  | ||||||
| int	 _EXFUN(strcasecmp,(const char *, const char *)); |  | ||||||
| #endif |  | ||||||
| #if __GNU_VISIBLE | #if __GNU_VISIBLE | ||||||
| char	*_EXFUN(strcasestr,(const char *, const char *)); | char	*_EXFUN(strcasestr,(const char *, const char *)); | ||||||
| char 	*_EXFUN(strchrnul,(const char *, int)); | char 	*_EXFUN(strchrnul,(const char *, int)); | ||||||
|  | @ -105,11 +89,6 @@ char 	*_EXFUN(strndup,(const char *, size_t)); | ||||||
| #endif | #endif | ||||||
| char 	*_EXFUN(_strndup_r,(struct _reent *, const char *, size_t)); | 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
 | /* There are two common strerror_r variants.  If you request
 | ||||||
|    _GNU_SOURCE, you get the GNU version; otherwise you get the POSIX |    _GNU_SOURCE, you get the GNU version; otherwise you get the POSIX | ||||||
|    version.  POSIX requires that #undef strerror_r will still let you |    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(strlcat,(char *, const char *, size_t)); | ||||||
| size_t	_EXFUN(strlcpy,(char *, const char *, size_t)); | size_t	_EXFUN(strlcpy,(char *, const char *, size_t)); | ||||||
| #endif | #endif | ||||||
| #if __BSD_VISIBLE /* POSIX declaration is in <strings.h> */ |  | ||||||
| int	_EXFUN(strncasecmp,(const char *, const char *, size_t)); |  | ||||||
| #endif |  | ||||||
| #if __POSIX_VISIBLE >= 200809 | #if __POSIX_VISIBLE >= 200809 | ||||||
| size_t	 _EXFUN(strnlen,(const char *, size_t)); | size_t	 _EXFUN(strnlen,(const char *, size_t)); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -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_ | #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/cdefs.h> | ||||||
| #include <sys/types.h> /* for size_t */ | #include <sys/_types.h> | ||||||
| 
 | 
 | ||||||
| #if __POSIX_VISIBLE >= 200809 | #if __POSIX_VISIBLE >= 200809 | ||||||
| #include <xlocale.h> | #include <xlocale.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| _BEGIN_STD_C | #ifndef _SIZE_T_DECLARED | ||||||
|  | typedef	__size_t	size_t; | ||||||
|  | #define	_SIZE_T_DECLARED | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #if __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE < 200809) | __BEGIN_DECLS | ||||||
| /* 
 | #if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112 | ||||||
|  * Marked LEGACY in Open Group Base Specifications Issue 6/IEEE Std 1003.1-2004 | int	 bcmp(const void *, const void *, size_t) __pure;	/* LEGACY */ | ||||||
|  * Removed from Open Group Base Specifications Issue 7/IEEE Std 1003.1-2008 | void	 bcopy(const void *, void *, size_t);			/* LEGACY */ | ||||||
|  */ | void	 bzero(void *, size_t);					/* LEGACY */ | ||||||
| int	 _EXFUN(bcmp,(const void *, const void *, size_t)); | #endif | ||||||
| void	 _EXFUN(bcopy,(const void *, void *, size_t)); | #if __BSD_VISIBLE | ||||||
| void	 _EXFUN(bzero,(void *, size_t)); | void	 explicit_bzero(void *, size_t); | ||||||
| char 	*_EXFUN(index,(const char *, int)); | #endif | ||||||
| char 	*_EXFUN(rindex,(const char *, int)); | #if __XSI_VISIBLE | ||||||
| #endif /* __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE < 200809) */ | int	 ffs(int) __pure2; | ||||||
| 
 | #endif | ||||||
| int	 _EXFUN(ffs,(int)); | #if __BSD_VISIBLE | ||||||
| int	 _EXFUN(strcasecmp,(const char *, const char *)); | int	 ffsl(long) __pure2; | ||||||
| int	 _EXFUN(strncasecmp,(const char *, const char *, size_t)); | 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 | #if __POSIX_VISIBLE >= 200809 | ||||||
| int	 strcasecmp_l (const char *, const char *, locale_t); | int	 strcasecmp_l (const char *, const char *, locale_t); | ||||||
| int	 strncasecmp_l (const char *, const char *, size_t, locale_t); | int	 strncasecmp_l (const char *, const char *, size_t, locale_t); | ||||||
| #endif /* __POSIX_VISIBLE >= 200809 */ | #endif | ||||||
| 
 | __END_DECLS | ||||||
| _END_STD_C |  | ||||||
| 
 |  | ||||||
| #endif /* !(_STRING_H_ && __BSD_VISIBLE) */ |  | ||||||
| 
 | 
 | ||||||
| #endif /* _STRINGS_H_ */ | #endif /* _STRINGS_H_ */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue