File: /usr/include/string.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /*
       2:  * Copyright (c) 2000, 2007, 2010 Apple Inc. All rights reserved.
       3:  *
       4:  * @APPLE_LICENSE_HEADER_START@
       5:  *
       6:  * This file contains Original Code and/or Modifications of Original Code
       7:  * as defined in and that are subject to the Apple Public Source License
       8:  * Version 2.0 (the 'License'). You may not use this file except in
       9:  * compliance with the License. Please obtain a copy of the License at
      10:  * http://www.opensource.apple.com/apsl/ and read it before using this
      11:  * file.
      12:  *
      13:  * The Original Code and all software distributed under the License are
      14:  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
      15:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
      16:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
      17:  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
      18:  * Please see the License for the specific language governing rights and
      19:  * limitations under the License.
      20:  *
      21:  * @APPLE_LICENSE_HEADER_END@
      22:  */
      23: /*-
      24:  * Copyright (c) 1990, 1993
      25:  *    The Regents of the University of California.  All rights reserved.
      26:  *
      27:  * Redistribution and use in source and binary forms, with or without
      28:  * modification, are permitted provided that the following conditions
      29:  * are met:
      30:  * 1. Redistributions of source code must retain the above copyright
      31:  *    notice, this list of conditions and the following disclaimer.
      32:  * 2. Redistributions in binary form must reproduce the above copyright
      33:  *    notice, this list of conditions and the following disclaimer in the
      34:  *    documentation and/or other materials provided with the distribution.
      35:  * 3. All advertising materials mentioning features or use of this software
      36:  *    must display the following acknowledgement:
      37:  *    This product includes software developed by the University of
      38:  *    California, Berkeley and its contributors.
      39:  * 4. Neither the name of the University nor the names of its contributors
      40:  *    may be used to endorse or promote products derived from this software
      41:  *    without specific prior written permission.
      42:  *
      43:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      44:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      45:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      46:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      47:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      48:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      49:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      50:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      51:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      52:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      53:  * SUCH DAMAGE.
      54:  *
      55:  *    @(#)string.h    8.1 (Berkeley) 6/2/93
      56:  */
      57: 
      58: #ifndef _STRING_H_
      59: #define    _STRING_H_
      60: 
      61: #include <_types.h>
      62: #include <sys/cdefs.h>
      63: #include <Availability.h>
      64: #include <sys/_types/_size_t.h>
      65: #include <sys/_types/_null.h>
      66: 
      67: /* ANSI-C */
      68: 
      69: __BEGIN_DECLS
      70: void    *memchr(const void *, int, size_t);
      71: int     memcmp(const void *, const void *, size_t);
      72: void    *memcpy(void *, const void *, size_t);
      73: void    *memmove(void *, const void *, size_t);
      74: void    *memset(void *, int, size_t);
      75: char    *strcat(char *, const char *);
      76: char    *strchr(const char *, int);
      77: int     strcmp(const char *, const char *);
      78: int     strcoll(const char *, const char *);
      79: char    *strcpy(char *, const char *);
      80: size_t     strcspn(const char *, const char *);
      81: char    *strerror(int) __DARWIN_ALIAS(strerror);
      82: size_t     strlen(const char *);
      83: char    *strncat(char *, const char *, size_t);
      84: int     strncmp(const char *, const char *, size_t);
      85: char    *strncpy(char *, const char *, size_t);
      86: char    *strpbrk(const char *, const char *);
      87: char    *strrchr(const char *, int);
      88: size_t     strspn(const char *, const char *);
      89: char    *strstr(const char *, const char *);
      90: char    *strtok(char *, const char *);
      91: size_t     strxfrm(char *, const char *, size_t);
      92: __END_DECLS
      93: 
      94: 
      95: 
      96: /* Additional functionality provided by:
      97:  * POSIX.1c-1995,
      98:  * POSIX.1i-1995,
      99:  * and the omnibus ISO/IEC 9945-1: 1996
     100:  */
     101: 
     102: #if __DARWIN_C_LEVEL >= 199506L
     103: __BEGIN_DECLS
     104: char    *strtok_r(char *, const char *, char **);
     105: __END_DECLS
     106: #endif /* __DARWIN_C_LEVEL >= 199506L */
     107: 
     108: 
     109: 
     110: /* Additional functionality provided by:
     111:  * POSIX.1-2001
     112:  */
     113: 
     114: #if __DARWIN_C_LEVEL >= 200112L
     115: __BEGIN_DECLS
     116: int     strerror_r(int, char *, size_t);
     117: char    *strdup(const char *);
     118: void    *memccpy(void *, const void *, int, size_t);
     119: __END_DECLS
     120: #endif /* __DARWIN_C_LEVEL >= 200112L */
     121: 
     122: 
     123: 
     124: /* Additional functionality provided by:
     125:  * POSIX.1-2008
     126:  */
     127: 
     128: #if __DARWIN_C_LEVEL >= 200809L
     129: __BEGIN_DECLS
     130: char    *stpcpy(char *, const char *);
     131: char    *stpncpy(char *, const char *, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     132: char    *strndup(const char *, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     133: size_t   strnlen(const char *, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     134: char    *strsignal(int sig);
     135: __END_DECLS
     136: #endif /* __DARWIN_C_LEVEL >= 200809L */
     137: 
     138: /* C11 Annex K */
     139: 
     140: #if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
     141: #include <sys/_types/_rsize_t.h>
     142: #include <sys/_types/_errno_t.h>
     143: 
     144: __BEGIN_DECLS
     145: errno_t    memset_s(void *, rsize_t, int, rsize_t) __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
     146: __END_DECLS
     147: #endif
     148: 
     149: /* Darwin extensions */
     150: 
     151: #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
     152: #include <sys/_types/_ssize_t.h>
     153: 
     154: __BEGIN_DECLS
     155: void    *memmem(const void *, size_t, const void *, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     156: void     memset_pattern4(void *, const void *, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
     157: void     memset_pattern8(void *, const void *, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
     158: void     memset_pattern16(void *, const void *, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
     159: 
     160: char    *strcasestr(const char *, const char *);
     161: char    *strnstr(const char *, const char *, size_t);
     162: size_t     strlcat(char *, const char *, size_t);
     163: size_t     strlcpy(char *, const char *, size_t);
     164: void     strmode(int, char *);
     165: char    *strsep(char **, const char *);
     166: 
     167: /* SUS places swab() in unistd.h.  It is listed here for source compatibility */
     168: void     swab(const void * __restrict, void * __restrict, ssize_t);
     169: __END_DECLS
     170: 
     171: /* Some functions historically defined in string.h were placed in strings.h
     172:  * by SUS.  We are using "strings.h" instead of <strings.h> to avoid an issue
     173:  * where /Developer/Headers/FlatCarbon/Strings.h could be included instead on
     174:  * case-insensitive file systems.
     175:  */
     176: #include "strings.h"
     177: #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
     178: 
     179: 
     180: #ifdef _USE_EXTENDED_LOCALES_
     181: #include <xlocale/_string.h>
     182: #endif /* _USE_EXTENDED_LOCALES_ */
     183: 
     184: #if defined (__GNUC__) && _FORTIFY_SOURCE > 0 && !defined (__cplusplus)
     185: /* Security checking functions.  */
     186: #include <secure/_string.h>
     187: #endif
     188: 
     189: #endif /* _STRING_H_ */
     190: