File: /usr/include/stdlib.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, 2002 - 2008 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:  *    @(#)stdlib.h    8.5 (Berkeley) 5/19/95
      56:  */
      57: 
      58: #ifndef _STDLIB_H_
      59: #define _STDLIB_H_
      60: 
      61: #include <Availability.h>
      62: 
      63: #include <_types.h>
      64: #if !defined(_ANSI_SOURCE)
      65: #include <sys/wait.h>
      66: #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
      67: #include <alloca.h>
      68: #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
      69: #endif /* !_ANSI_SOURCE */
      70: 
      71: /* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:
      72:  * _GCC_SIZE_T */
      73: #include <sys/_types/_size_t.h>
      74: 
      75: #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
      76: #include <sys/_types/_ct_rune_t.h>
      77: #include <sys/_types/_rune_t.h>
      78: #endif    /* !_ANSI_SOURCE && (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
      79: 
      80: #include <sys/_types/_wchar_t.h>
      81: 
      82: typedef struct {
      83:     int quot;        /* quotient */
      84:     int rem;        /* remainder */
      85: } div_t;
      86: 
      87: typedef struct {
      88:     long quot;        /* quotient */
      89:     long rem;        /* remainder */
      90: } ldiv_t;
      91: 
      92: #if !__DARWIN_NO_LONG_LONG
      93: typedef struct {
      94:     long long quot;
      95:     long long rem;
      96: } lldiv_t;
      97: #endif /* !__DARWIN_NO_LONG_LONG */
      98: 
      99: #include <sys/_types/_null.h>
     100: 
     101: #define    EXIT_FAILURE    1
     102: #define    EXIT_SUCCESS    0
     103: 
     104: #define    RAND_MAX    0x7fffffff
     105: 
     106: #ifdef _USE_EXTENDED_LOCALES_
     107: #include <_xlocale.h>
     108: #endif /* _USE_EXTENDED_LOCALES_ */
     109: 
     110: #ifndef MB_CUR_MAX
     111: #ifdef _USE_EXTENDED_LOCALES_
     112: #define    MB_CUR_MAX    (___mb_cur_max())
     113: #ifndef MB_CUR_MAX_L
     114: #define    MB_CUR_MAX_L(x)    (___mb_cur_max_l(x))
     115: #endif /* !MB_CUR_MAX_L */
     116: #else /* !_USE_EXTENDED_LOCALES_ */
     117: extern int __mb_cur_max;
     118: #define    MB_CUR_MAX    __mb_cur_max
     119: #endif /* _USE_EXTENDED_LOCALES_ */
     120: #endif /* MB_CUR_MAX */
     121: 
     122: #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) \
     123:     && defined(_USE_EXTENDED_LOCALES_) && !defined(MB_CUR_MAX_L)
     124: #define    MB_CUR_MAX_L(x)    (___mb_cur_max_l(x))
     125: #endif
     126: 
     127: __BEGIN_DECLS
     128: void     abort(void) __dead2;
     129: int     abs(int) __pure2;
     130: int     atexit(void (*)(void));
     131: double     atof(const char *);
     132: int     atoi(const char *);
     133: long     atol(const char *);
     134: #if !__DARWIN_NO_LONG_LONG
     135: long long
     136:      atoll(const char *);
     137: #endif /* !__DARWIN_NO_LONG_LONG */
     138: void    *bsearch(const void *, const void *, size_t,
     139:         size_t, int (*)(const void *, const void *));
     140: void    *calloc(size_t, size_t);
     141: div_t     div(int, int) __pure2;
     142: void     exit(int) __dead2;
     143: void     free(void *);
     144: char    *getenv(const char *);
     145: long     labs(long) __pure2;
     146: ldiv_t     ldiv(long, long) __pure2;
     147: #if !__DARWIN_NO_LONG_LONG
     148: long long
     149:      llabs(long long);
     150: lldiv_t     lldiv(long long, long long);
     151: #endif /* !__DARWIN_NO_LONG_LONG */
     152: void    *malloc(size_t);
     153: int     mblen(const char *, size_t);
     154: size_t     mbstowcs(wchar_t * __restrict , const char * __restrict, size_t);
     155: int     mbtowc(wchar_t * __restrict, const char * __restrict, size_t);
     156: int      posix_memalign(void **, size_t, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
     157: void     qsort(void *, size_t, size_t,
     158:         int (*)(const void *, const void *));
     159: int     rand(void);
     160: void    *realloc(void *, size_t);
     161: void     srand(unsigned);
     162: double     strtod(const char *, char **) __DARWIN_ALIAS(strtod);
     163: float     strtof(const char *, char **) __DARWIN_ALIAS(strtof);
     164: long     strtol(const char *, char **, int);
     165: long double
     166:      strtold(const char *, char **);
     167: #if !__DARWIN_NO_LONG_LONG
     168: long long 
     169:      strtoll(const char *, char **, int);
     170: #endif /* !__DARWIN_NO_LONG_LONG */
     171: unsigned long
     172:      strtoul(const char *, char **, int);
     173: #if !__DARWIN_NO_LONG_LONG
     174: unsigned long long
     175:      strtoull(const char *, char **, int);
     176: #endif /* !__DARWIN_NO_LONG_LONG */
     177: int     system(const char *) __DARWIN_ALIAS_C(system) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_0,__MAC_NA,__IPHONE_2_0,__IPHONE_8_0, "Use posix_spawn APIs instead.") __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
     178: size_t     wcstombs(char * __restrict, const wchar_t * __restrict, size_t);
     179: int     wctomb(char *, wchar_t);
     180: 
     181: #ifndef _ANSI_SOURCE
     182: void    _Exit(int) __dead2;
     183: long     a64l(const char *);
     184: double     drand48(void);
     185: char    *ecvt(double, int, int *__restrict, int *__restrict); /* LEGACY */
     186: double     erand48(unsigned short[3]); 
     187: char    *fcvt(double, int, int *__restrict, int *__restrict); /* LEGACY */
     188: char    *gcvt(double, int, char *); /* LEGACY */
     189: int     getsubopt(char **, char * const *, char **);
     190: int     grantpt(int);
     191: #if __DARWIN_UNIX03
     192: char    *initstate(unsigned, char *, size_t); /* no  __DARWIN_ALIAS needed */
     193: #else /* !__DARWIN_UNIX03 */
     194: char    *initstate(unsigned long, char *, long);
     195: #endif /* __DARWIN_UNIX03 */
     196: long     jrand48(unsigned short[3]);
     197: char    *l64a(long);
     198: void     lcong48(unsigned short[7]);
     199: long     lrand48(void);
     200: char    *mktemp(char *);
     201: int     mkstemp(char *);
     202: long     mrand48(void); 
     203: long     nrand48(unsigned short[3]);
     204: int     posix_openpt(int);
     205: char    *ptsname(int);
     206: int     putenv(char *) __DARWIN_ALIAS(putenv);
     207: long     random(void);
     208: int     rand_r(unsigned *);
     209: #if (__DARWIN_UNIX03 && !defined(_POSIX_C_SOURCE)) || defined(_DARWIN_C_SOURCE) || defined(_DARWIN_BETTER_REALPATH)
     210: char    *realpath(const char * __restrict, char * __restrict) __DARWIN_EXTSN(realpath);
     211: #else /* (!__DARWIN_UNIX03 || _POSIX_C_SOURCE) && !_DARWIN_C_SOURCE && !_DARWIN_BETTER_REALPATH */
     212: char    *realpath(const char * __restrict, char * __restrict) __DARWIN_ALIAS(realpath);
     213: #endif /* (__DARWIN_UNIX03 && _POSIX_C_SOURCE) || _DARWIN_C_SOURCE || _DARWIN_BETTER_REALPATH */
     214: unsigned short
     215:     *seed48(unsigned short[3]);
     216: int     setenv(const char *, const char *, int) __DARWIN_ALIAS(setenv);
     217: #if __DARWIN_UNIX03
     218: void     setkey(const char *) __DARWIN_ALIAS(setkey);
     219: #else /* !__DARWIN_UNIX03 */
     220: int     setkey(const char *);
     221: #endif /* __DARWIN_UNIX03 */
     222: char    *setstate(const char *);
     223: void     srand48(long);
     224: #if __DARWIN_UNIX03
     225: void     srandom(unsigned);
     226: #else /* !__DARWIN_UNIX03 */
     227: void     srandom(unsigned long);
     228: #endif /* __DARWIN_UNIX03 */
     229: int     unlockpt(int);
     230: #if __DARWIN_UNIX03
     231: int     unsetenv(const char *) __DARWIN_ALIAS(unsetenv);
     232: #else /* !__DARWIN_UNIX03 */
     233: void     unsetenv(const char *);
     234: #endif /* __DARWIN_UNIX03 */
     235: #endif    /* !_ANSI_SOURCE */
     236: 
     237: #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
     238: #include <machine/types.h>
     239: 
     240: #include <sys/_types/_dev_t.h>
     241: #include <sys/_types/_mode_t.h>
     242: 
     243: u_int32_t    arc4random(void);
     244: void     arc4random_addrandom(unsigned char * /*dat*/, int /*datlen*/);
     245: void     arc4random_buf(void * /*buf*/, size_t /*nbytes*/) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     246: void     arc4random_stir(void);
     247: u_int32_t
     248:      arc4random_uniform(u_int32_t /*upper_bound*/) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     249: #ifdef __BLOCKS__
     250: int     atexit_b(void (^)(void)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     251: void    *bsearch_b(const void *, const void *, size_t,
     252:         size_t, int (^)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     253: #endif /* __BLOCKS__ */
     254: 
     255:      /* getcap(3) functions */
     256: char    *cgetcap(char *, const char *, int);
     257: int     cgetclose(void);
     258: int     cgetent(char **, char **, const char *);
     259: int     cgetfirst(char **, char **);
     260: int     cgetmatch(const char *, const char *);
     261: int     cgetnext(char **, char **);
     262: int     cgetnum(char *, const char *, long *);
     263: int     cgetset(const char *);
     264: int     cgetstr(char *, const char *, char **);
     265: int     cgetustr(char *, const char *, char **);
     266: 
     267: int     daemon(int, int) __DARWIN_1050(daemon) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_0, __MAC_10_5, __IPHONE_2_0, __IPHONE_2_0, "Use posix_spawn APIs instead.") __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
     268: char    *devname(dev_t, mode_t);
     269: char    *devname_r(dev_t, mode_t, char *buf, int len);
     270: char    *getbsize(int *, long *);
     271: int     getloadavg(double [], int);
     272: const char
     273:     *getprogname(void);
     274: 
     275: int     heapsort(void *, size_t, size_t,
     276:         int (*)(const void *, const void *));
     277: #ifdef __BLOCKS__
     278: int     heapsort_b(void *, size_t, size_t,
     279:         int (^)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     280: #endif /* __BLOCKS__ */
     281: int     mergesort(void *, size_t, size_t,
     282:         int (*)(const void *, const void *));
     283: #ifdef __BLOCKS__
     284: int     mergesort_b(void *, size_t, size_t,
     285:         int (^)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     286: #endif /* __BLOCKS__ */
     287: void     psort(void *, size_t, size_t,
     288:         int (*)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     289: #ifdef __BLOCKS__
     290: void     psort_b(void *, size_t, size_t,
     291:         int (^)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     292: #endif /* __BLOCKS__ */
     293: void     psort_r(void *, size_t, size_t, void *,
     294:         int (*)(void *, const void *, const void *))  __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     295: #ifdef __BLOCKS__
     296: void     qsort_b(void *, size_t, size_t,
     297:         int (^)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
     298: #endif /* __BLOCKS__ */
     299: void     qsort_r(void *, size_t, size_t, void *,
     300:         int (*)(void *, const void *, const void *));
     301: int     radixsort(const unsigned char **, int, const unsigned char *,
     302:         unsigned);
     303: void     setprogname(const char *);
     304: int     sradixsort(const unsigned char **, int, const unsigned char *,
     305:         unsigned);
     306: void     sranddev(void);
     307: void     srandomdev(void);
     308: void    *reallocf(void *, size_t);
     309: #if !__DARWIN_NO_LONG_LONG
     310: long long
     311:      strtoq(const char *, char **, int);
     312: unsigned long long
     313:      strtouq(const char *, char **, int);
     314: #endif /* !__DARWIN_NO_LONG_LONG */
     315: extern char *suboptarg;        /* getsubopt(3) external variable */
     316: void    *valloc(size_t);
     317: #endif    /* !_ANSI_SOURCE && !_POSIX_SOURCE */
     318: 
     319: /* Poison the following routines if -fshort-wchar is set */
     320: #if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
     321: #pragma GCC poison mbstowcs mbtowc wcstombs wctomb
     322: #endif
     323: __END_DECLS
     324: 
     325: #ifdef _USE_EXTENDED_LOCALES_
     326: #include <xlocale/_stdlib.h>
     327: #endif /* _USE_EXTENDED_LOCALES_ */
     328: 
     329: #endif /* _STDLIB_H_ */
     330: