X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/70ad1dc8a19d6edd9b97aa81f32cfd65758ae97d..refs/heads/master:/include/stdlib.h diff --git a/include/stdlib.h b/include/stdlib.h index 5be3e04..fdc95ad 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -63,7 +63,9 @@ #include <_types.h> #if !defined(_ANSI_SOURCE) +#ifndef UNIFDEF_DRIVERKIT #include +#endif /* UNIFDEF_DRIVERKIT */ #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) #include #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ @@ -99,8 +101,10 @@ typedef struct { #include +#ifndef UNIFDEF_DRIVERKIT #define EXIT_FAILURE 1 #define EXIT_SUCCESS 0 +#endif /* UNIFDEF_DRIVERKIT */ #define RAND_MAX 0x7fffffff @@ -130,12 +134,16 @@ extern int __mb_cur_max; #define LIBC_ABORT(f,...) abort_report_np("%s:%s:%u: " f, __FILE__, __func__, __LINE__, ## __VA_ARGS__) //End-Libc +#ifndef UNIFDEF_DRIVERKIT #include +#endif /* UNIFDEF_DRIVERKIT */ __BEGIN_DECLS -void abort(void) __dead2; +void abort(void) __cold __dead2; int abs(int) __pure2; +#ifndef UNIFDEF_DRIVERKIT int atexit(void (* _Nonnull)(void)); +#endif /* UNIFDEF_DRIVERKIT */ double atof(const char *); int atoi(const char *); long atol(const char *); @@ -145,11 +153,15 @@ long long #endif /* !__DARWIN_NO_LONG_LONG */ void *bsearch(const void *__key, const void *__base, size_t __nel, size_t __width, int (* _Nonnull __compar)(const void *, const void *)); +#ifndef UNIFDEF_DRIVERKIT /* calloc is now declared in _malloc.h */ +#endif /* UNIFDEF_DRIVERKIT */ div_t div(int, int) __pure2; +#ifndef UNIFDEF_DRIVERKIT void exit(int) __dead2; /* free is now declared in _malloc.h */ char *getenv(const char *); +#endif /* UNIFDEF_DRIVERKIT */ long labs(long) __pure2; ldiv_t ldiv(long, long) __pure2; #if !__DARWIN_NO_LONG_LONG @@ -157,16 +169,22 @@ long long llabs(long long); lldiv_t lldiv(long long, long long); #endif /* !__DARWIN_NO_LONG_LONG */ +#ifndef UNIFDEF_DRIVERKIT /* malloc is now declared in _malloc.h */ +#endif /* UNIFDEF_DRIVERKIT */ int mblen(const char *__s, size_t __n); size_t mbstowcs(wchar_t * __restrict , const char * __restrict, size_t); int mbtowc(wchar_t * __restrict, const char * __restrict, size_t); +#ifndef UNIFDEF_DRIVERKIT /* posix_memalign is now declared in _malloc.h */ +#endif /* UNIFDEF_DRIVERKIT */ void qsort(void *__base, size_t __nel, size_t __width, int (* _Nonnull __compar)(const void *, const void *)); +#ifndef UNIFDEF_DRIVERKIT int rand(void) __swift_unavailable("Use arc4random instead."); /* realloc is now declared in _malloc.h */ void srand(unsigned) __swift_unavailable("Use arc4random instead."); +#endif /* UNIFDEF_DRIVERKIT */ double strtod(const char *, char **) __DARWIN_ALIAS(strtod); float strtof(const char *, char **) __DARWIN_ALIAS(strtof); long strtol(const char *__str, char **__endptr, int __base); @@ -182,11 +200,12 @@ unsigned long unsigned long long strtoull(const char *__str, char **__endptr, int __base); #endif /* !__DARWIN_NO_LONG_LONG */ +#ifndef UNIFDEF_DRIVERKIT //Begin-Libc #ifndef LIBC_ALIAS_SYSTEM //End-Libc -#if TARGET_OS_EMBEDDED +#if TARGET_OS_IPHONE #define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(ios_msg) #else #define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(osx_msg) @@ -203,10 +222,12 @@ int system(const char *) LIBC_ALIAS_C(system); //End-Libc #undef __swift_unavailable_on +#endif /* UNIFDEF_DRIVERKIT */ size_t wcstombs(char * __restrict, const wchar_t * __restrict, size_t); int wctomb(char *, wchar_t); +#ifndef UNIFDEF_DRIVERKIT #ifndef _ANSI_SOURCE void _Exit(int) __dead2; long a64l(const char *); @@ -315,30 +336,37 @@ int unsetenv(const char *) LIBC_ALIAS(unsetenv); void unsetenv(const char *); #endif /* __DARWIN_UNIX03 */ #endif /* !_ANSI_SOURCE */ +#endif /* UNIFDEF_DRIVERKIT */ #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) #include - +#ifndef UNIFDEF_DRIVERKIT #include #include +#endif /* UNIFDEF_DRIVERKIT */ #include <_types/_uint32_t.h> uint32_t arc4random(void); +#ifndef UNIFDEF_DRIVERKIT void arc4random_addrandom(unsigned char * /*dat*/, int /*datlen*/) __OSX_DEPRECATED(10.0, 10.12, "use arc4random_stir") __IOS_DEPRECATED(2.0, 10.0, "use arc4random_stir") __TVOS_DEPRECATED(2.0, 10.0, "use arc4random_stir") __WATCHOS_DEPRECATED(1.0, 3.0, "use arc4random_stir"); +#endif /* UNIFDEF_DRIVERKIT */ void arc4random_buf(void * __buf, size_t __nbytes) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3); void arc4random_stir(void); uint32_t arc4random_uniform(uint32_t __upper_bound) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3); #ifdef __BLOCKS__ +#ifndef UNIFDEF_DRIVERKIT int atexit_b(void (^ _Nonnull)(void)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +#endif /* UNIFDEF_DRIVERKIT */ void *bsearch_b(const void *__key, const void *__base, size_t __nel, size_t __width, int (^ _Nonnull __compar)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); #endif /* __BLOCKS__ */ +#ifndef UNIFDEF_DRIVERKIT /* getcap(3) functions */ char *cgetcap(char *, const char *, int); int cgetclose(void); @@ -358,49 +386,75 @@ char *getbsize(int *, long *); int getloadavg(double [], int); const char *getprogname(void); +void setprogname(const char *); +#endif /* UNIFDEF_DRIVERKIT */ + +#ifdef __BLOCKS__ +#if __has_attribute(noescape) +#define __sort_noescape __attribute__((__noescape__)) +#else +#define __sort_noescape +#endif +#endif /* __BLOCKS__ */ int heapsort(void *__base, size_t __nel, size_t __width, int (* _Nonnull __compar)(const void *, const void *)); #ifdef __BLOCKS__ int heapsort_b(void *__base, size_t __nel, size_t __width, - int (^ _Nonnull __compar)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); + int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape) + __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); #endif /* __BLOCKS__ */ int mergesort(void *__base, size_t __nel, size_t __width, int (* _Nonnull __compar)(const void *, const void *)); #ifdef __BLOCKS__ int mergesort_b(void *__base, size_t __nel, size_t __width, - int (^ _Nonnull __compar)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); + int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape) + __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); #endif /* __BLOCKS__ */ +#ifndef UNIFDEF_DRIVERKIT void psort(void *__base, size_t __nel, size_t __width, - int (* _Nonnull __compar)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); + int (* _Nonnull __compar)(const void *, const void *)) + __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); #ifdef __BLOCKS__ void psort_b(void *__base, size_t __nel, size_t __width, - int (^ _Nonnull __compar)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); + int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape) + __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); #endif /* __BLOCKS__ */ void psort_r(void *__base, size_t __nel, size_t __width, void *, - int (* _Nonnull __compar)(void *, const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); + int (* _Nonnull __compar)(void *, const void *, const void *)) + __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +#endif /* UNIFDEF_DRIVERKIT */ #ifdef __BLOCKS__ void qsort_b(void *__base, size_t __nel, size_t __width, - int (^ _Nonnull __compar)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); + int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape) + __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); #endif /* __BLOCKS__ */ void qsort_r(void *__base, size_t __nel, size_t __width, void *, int (* _Nonnull __compar)(void *, const void *, const void *)); int radixsort(const unsigned char **__base, int __nel, const unsigned char *__table, unsigned __endbyte); -void setprogname(const char *); +int rpmatch(const char *) + __API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)); int sradixsort(const unsigned char **__base, int __nel, const unsigned char *__table, unsigned __endbyte); +#ifndef UNIFDEF_DRIVERKIT void sranddev(void); void srandomdev(void); void *reallocf(void *__ptr, size_t __size) __alloc_size(2); +long long + strtonum(const char *__numstr, long long __minval, long long __maxval, const char **__errstrp) + __API_AVAILABLE(macos(10.16), ios(14.0), tvos(14.0), watchos(7.0)); +#endif /* UNIFDEF_DRIVERKIT */ #if !__DARWIN_NO_LONG_LONG long long strtoq(const char *__str, char **__endptr, int __base); unsigned long long strtouq(const char *__str, char **__endptr, int __base); #endif /* !__DARWIN_NO_LONG_LONG */ +#ifndef UNIFDEF_DRIVERKIT extern char *suboptarg; /* getsubopt(3) external variable */ /* valloc is now declared in _malloc.h */ +#endif /* UNIFDEF_DRIVERKIT */ #endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */ /* Poison the following routines if -fshort-wchar is set */