diff --git a/include/string.h b/include/string.h index acd2fd818dee..dc0580798f52 100644 --- a/include/string.h +++ b/include/string.h @@ -36,8 +36,18 @@ #ifndef _STRING_H_ #define _STRING_H_ + +#include #include +/* + * Prototype functions which were historically defined in , but + * are required by POSIX to be prototyped in . + */ +#if __BSD_VISIBLE +#include +#endif + #ifdef _BSD_SIZE_T_ typedef _BSD_SIZE_T_ size_t; #undef _BSD_SIZE_T_ @@ -47,53 +57,45 @@ typedef _BSD_SIZE_T_ size_t; #define NULL 0 #endif -#include - __BEGIN_DECLS void *memchr(const void *, int, size_t); int memcmp(const void *, const void *, size_t); -void *memcpy(void *, const void *, size_t); +void *memcpy(void * __restrict, const void * __restrict, size_t); void *memmove(void *, const void *, size_t); void *memset(void *, int, size_t); -char *strcat(char *, const char *); +char *strcat(char * __restrict, const char * __restrict); char *strchr(const char *, int); int strcmp(const char *, const char *); int strcoll(const char *, const char *); -char *strcpy(char *, const char *); +char *strcpy(char * __restrict, const char * __restrict); size_t strcspn(const char *, const char *); char *strerror(int); size_t strlen(const char *); -char *strncat(char *, const char *, size_t); +char *strncat(char * __restrict, const char * __restrict, size_t); int strncmp(const char *, const char *, size_t); -char *strncpy(char *, const char *, size_t); +char *strncpy(char * __restrict, const char * __restrict, size_t); char *strpbrk(const char *, const char *); char *strrchr(const char *, int); size_t strspn(const char *, const char *); char *strstr(const char *, const char *); -char *strtok(char *, const char *); -size_t strxfrm(char *, const char *, size_t); +char *strtok(char * __restrict, const char * __restrict); +size_t strxfrm(char * __restrict, const char * __restrict, size_t); -/* Nonstandard routines */ -#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE) -int bcmp(const void *, const void *, size_t); -void bcopy(const void *, void *, size_t); -void bzero(void *, size_t); -int ffs(int); -char *index(const char *, int); -void *memccpy(void *, const void *, int, size_t); -char *rindex(const char *, int); -int strcasecmp(const char *, const char *); -char *strcasestr(const char *, const char *); +#if __POSIX_VISIBLE >= 200112 +void *memccpy(void * __restrict, const void * __restrict, int, size_t); char *strdup(const char *); int strerror_r(int, char *, size_t); +char *strtok_r(char *, const char *, char **); +#endif + +#if __BSD_VISIBLE +char *strcasestr(const char *, const char *); size_t strlcat(char *, const char *, size_t); size_t strlcpy(char *, const char *, size_t); void strmode(int, char *); -int strncasecmp(const char *, const char *, size_t); char *strnstr(const char *, const char *, size_t); char *strsep(char **, const char *); char *strsignal(int); -char *strtok_r(char *, const char *, char **); void swab(const void *, void *, size_t); #endif __END_DECLS diff --git a/include/strings.h b/include/strings.h index 2a63fa439b51..bc989cb67d42 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1,6 +1,6 @@ /*- - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. + * Copyright (c) 2002 Mike Barcroft + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,18 +10,11 @@ * 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. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * 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 REGENTS OR CONTRIBUTORS BE LIABLE + * 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) @@ -30,7 +23,29 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)strings.h 8.1 (Berkeley) 6/2/93 + * $FreeBSD$ */ -#include +#ifndef _STRINGS_H_ +#define _STRINGS_H_ + +#include +#include + +#ifdef _BSD_SIZE_T_ +typedef _BSD_SIZE_T_ size_t; +#undef _BSD_SIZE_T_ +#endif + +__BEGIN_DECLS +int bcmp(const void *, const void *, size_t); /* LEGACY */ +void bcopy(const void *, void *, size_t); /* LEGACY */ +void bzero(void *, size_t); /* LEGACY */ +int ffs(int); +char *index(const char *, int); /* LEGACY */ +char *rindex(const char *, int); /* LEGACY */ +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, size_t); +__END_DECLS + +#endif /* _STRINGS_H_ */