diff options
author | mike <mike@FreeBSD.org> | 2002-04-04 05:41:57 +0000 |
---|---|---|
committer | mike <mike@FreeBSD.org> | 2002-04-04 05:41:57 +0000 |
commit | 1802268e809bb1895682a238b5d7c63858a55166 (patch) | |
tree | 5da2cc65f6136386264e8ff54faace1120b5099d /include | |
parent | d09a7d9089d854efef3c9e65f448f44856b5a0a6 (diff) | |
download | FreeBSD-src-1802268e809bb1895682a238b5d7c63858a55166.zip FreeBSD-src-1802268e809bb1895682a238b5d7c63858a55166.tar.gz |
o Move some function prototypes from <string.h> to the newly rewritten
<strings.h>, based on POSIX.1-2001's requirements.
o Add 'restrict' qualifier (spelled '__restrict') to functions in
<string.h>, as per C99 and POSIX.1-2001.
o Properly expose new POSIX.1-2001 functions in <string.h>.
Diffstat (limited to 'include')
-rw-r--r-- | include/string.h | 46 | ||||
-rw-r--r-- | include/strings.h | 41 |
2 files changed, 52 insertions, 35 deletions
diff --git a/include/string.h b/include/string.h index acd2fd8..dc05807 100644 --- a/include/string.h +++ b/include/string.h @@ -36,8 +36,18 @@ #ifndef _STRING_H_ #define _STRING_H_ + +#include <sys/cdefs.h> #include <machine/ansi.h> +/* + * Prototype functions which were historically defined in <string.h>, but + * are required by POSIX to be prototyped in <strings.h>. + */ +#if __BSD_VISIBLE +#include <strings.h> +#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 <sys/cdefs.h> - __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 2a63fa4..bc989cb 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 <mike@FreeBSD.org> + * 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 <string.h> +#ifndef _STRINGS_H_ +#define _STRINGS_H_ + +#include <sys/cdefs.h> +#include <machine/ansi.h> + +#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_ */ |