string.h
  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 *__s, int __c, size_t __n);
 71  int	 memcmp(const void *__s1, const void *__s2, size_t __n);
 72  void	*memcpy(void *__dst, const void *__src, size_t __n);
 73  void	*memmove(void *__dst, const void *__src, size_t __len);
 74  void	*memset(void *__b, int __c, size_t __len);
 75  #ifndef UNIFDEF_DRIVERKIT
 76  char	*strcat(char *__s1, const char *__s2);
 77  #endif /* UNIFDEF_DRIVERKIT */
 78  char	*strchr(const char *__s, int __c);
 79  int	 strcmp(const char *__s1, const char *__s2);
 80  int	 strcoll(const char *__s1, const char *__s2);
 81  #ifndef UNIFDEF_DRIVERKIT
 82  char	*strcpy(char *__dst, const char *__src);
 83  #endif /* UNIFDEF_DRIVERKIT */
 84  size_t	 strcspn(const char *__s, const char *__charset);
 85  //Begin-Libc
 86  #ifndef LIBC_ALIAS_STRERROR
 87  //End-Libc
 88  char	*strerror(int __errnum) __DARWIN_ALIAS(strerror);
 89  //Begin-Libc
 90  #else /* LIBC_ALIAS_STRERROR */
 91  char	*strerror(int __errnum) LIBC_ALIAS(strerror);
 92  #endif /* !LIBC_ALIAS_STRERROR */
 93  //End-Libc
 94  size_t	 strlen(const char *__s);
 95  char	*strncat(char *__s1, const char *__s2, size_t __n);
 96  int	 strncmp(const char *__s1, const char *__s2, size_t __n);
 97  char	*strncpy(char *__dst, const char *__src, size_t __n);
 98  char	*strpbrk(const char *__s, const char *__charset);
 99  char	*strrchr(const char *__s, int __c);
100  size_t	 strspn(const char *__s, const char *__charset);
101  char	*strstr(const char *__big, const char *__little);
102  char	*strtok(char *__str, const char *__sep);
103  size_t	 strxfrm(char *__s1, const char *__s2, size_t __n);
104  __END_DECLS
105  
106  
107  
108  /* Additional functionality provided by:
109   * POSIX.1c-1995,
110   * POSIX.1i-1995,
111   * and the omnibus ISO/IEC 9945-1: 1996
112   */
113  
114  #if __DARWIN_C_LEVEL >= 199506L
115  __BEGIN_DECLS
116  char	*strtok_r(char *__str, const char *__sep, char **__lasts);
117  __END_DECLS
118  #endif /* __DARWIN_C_LEVEL >= 199506L */
119  
120  
121  
122  /* Additional functionality provided by:
123   * POSIX.1-2001
124   */
125  
126  #if __DARWIN_C_LEVEL >= 200112L
127  __BEGIN_DECLS
128  int	 strerror_r(int __errnum, char *__strerrbuf, size_t __buflen);
129  char	*strdup(const char *__s1);
130  void	*memccpy(void *__dst, const void *__src, int __c, size_t __n);
131  __END_DECLS
132  #endif /* __DARWIN_C_LEVEL >= 200112L */
133  
134  
135  
136  /* Additional functionality provided by:
137   * POSIX.1-2008
138   */
139  
140  #if __DARWIN_C_LEVEL >= 200809L
141  __BEGIN_DECLS
142  #ifndef UNIFDEF_DRIVERKIT
143  char	*stpcpy(char *__dst, const char *__src);
144  #endif /* UNIFDEF_DRIVERKIT */
145  char    *stpncpy(char *__dst, const char *__src, size_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
146  char	*strndup(const char *__s1, size_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
147  size_t   strnlen(const char *__s1, size_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
148  char	*strsignal(int __sig);
149  __END_DECLS
150  #endif /* __DARWIN_C_LEVEL >= 200809L */
151  
152  /* C11 Annex K */
153  
154  #if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
155  #include <sys/_types/_rsize_t.h>
156  #include <sys/_types/_errno_t.h>
157  
158  __BEGIN_DECLS
159  errno_t	memset_s(void *__s, rsize_t __smax, int __c, rsize_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
160  __END_DECLS
161  #endif
162  
163  /* Darwin extensions */
164  
165  #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
166  #include <sys/_types/_ssize_t.h>
167  
168  __BEGIN_DECLS
169  void	*memmem(const void *__big, size_t __big_len, const void *__little, size_t __little_len) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
170  void     memset_pattern4(void *__b, const void *__pattern4, size_t __len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
171  void     memset_pattern8(void *__b, const void *__pattern8, size_t __len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
172  void     memset_pattern16(void *__b, const void *__pattern16, size_t __len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
173  
174  char	*strcasestr(const char *__big, const char *__little);
175  char	*strnstr(const char *__big, const char *__little, size_t __len);
176  size_t	 strlcat(char *__dst, const char *__source, size_t __size);
177  size_t	 strlcpy(char *__dst, const char *__source, size_t __size);
178  void	 strmode(int __mode, char *__bp);
179  char	*strsep(char **__stringp, const char *__delim);
180  
181  /* SUS places swab() in unistd.h.  It is listed here for source compatibility */
182  void	 swab(const void * __restrict, void * __restrict, ssize_t);
183  
184  __OSX_AVAILABLE(10.12.1) __IOS_AVAILABLE(10.1)
185  __TVOS_AVAILABLE(10.0.1) __WATCHOS_AVAILABLE(3.1)
186  int	timingsafe_bcmp(const void *__b1, const void *__b2, size_t __len);
187  
188  __OSX_AVAILABLE(10.16) __IOS_AVAILABLE(14.0)
189  __TVOS_AVAILABLE(14.0) __WATCHOS_AVAILABLE(7.0)
190  int 	 strsignal_r(int __sig, char *__strsignalbuf, size_t __buflen);
191  __END_DECLS
192  
193  /* Some functions historically defined in string.h were placed in strings.h
194   * by SUS.  We are using "strings.h" instead of <strings.h> to avoid an issue
195   * where /Developer/Headers/FlatCarbon/Strings.h could be included instead on
196   * case-insensitive file systems.
197   */
198  #include "strings.h"
199  #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
200  
201  
202  #ifdef _USE_EXTENDED_LOCALES_
203  #include <xlocale/_string.h>
204  #endif /* _USE_EXTENDED_LOCALES_ */
205  
206  #if defined (__GNUC__) && _FORTIFY_SOURCE > 0 && !defined (__cplusplus)
207  /* Security checking functions.  */
208  #include <secure/_string.h>
209  #endif
210  
211  #endif /* _STRING_H_ */