stdlib.h revision 11cd02dfb91661c65134cac258cf5924270e9d2
111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (C) 2008 The Android Open Source Project 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * All rights reserved. 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Redistribution and use in source and binary forms, with or without 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * modification, are permitted provided that the following conditions 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * are met: 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * * Redistributions of source code must retain the above copyright 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * notice, this list of conditions and the following disclaimer. 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * * Redistributions in binary form must reproduce the above copyright 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * notice, this list of conditions and the following disclaimer in 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * the documentation and/or other materials provided with the 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * distribution. 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * SUCH DAMAGE. 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STDLIB_H_ 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STDLIB_H_ 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/cdefs.h> 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stddef.h> 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <string.h> 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <alloca.h> 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <strings.h> 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <memory.h> 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__BEGIN_DECLS 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EXIT_FAILURE 1 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EXIT_SUCCESS 0 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern __noreturn void abort(void); 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern __noreturn void exit(int); 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern __noreturn void _Exit(int); 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int atexit(void (*)(void)); 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint at_quick_exit(void (*)(void)); 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid quick_exit(int) __noreturn; 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern char* getenv(const char*); 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int putenv(char*); 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int setenv(const char*, const char*, int); 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int unsetenv(const char*); 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int clearenv(void); 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern char* mkdtemp(char*); 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern char* mktemp(char*) __warnattr("mktemp possibly used unsafely; consider using mkstemp"); 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int mkstemp(char*); 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int mkstemp64(char*); 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long strtol(const char *, char **, int); 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long long strtoll(const char *, char **, int); 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern unsigned long strtoul(const char *, char **, int); 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern unsigned long long strtoull(const char *, char **, int); 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int posix_memalign(void **memptr, size_t alignment, size_t size); 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern double atof(const char*) __NDK_FPABI__; 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern double strtod(const char*, char**) __LIBC_ABI_PUBLIC__ __NDK_FPABI__; 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern float strtof(const char*, char**) __LIBC_ABI_PUBLIC__ __NDK_FPABI__; 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long double strtold(const char*, char**) __LIBC_ABI_PUBLIC__ __NDK_FPABI__; 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long double strtold_l(const char *, char **, locale_t) __LIBC_ABI_PUBLIC__ __NDK_FPABI__; 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long long strtoll_l(const char *, char **, int, locale_t) __LIBC_ABI_PUBLIC__; 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern unsigned long long strtoull_l(const char *, char **, int, locale_t) __LIBC_ABI_PUBLIC__; 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int atoi(const char*) __purefunc; 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long atol(const char*) __purefunc; 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long long atoll(const char*) __purefunc; 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int abs(int) __pure2; 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long labs(long) __pure2; 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long long llabs(long long) __pure2; 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern char * realpath(const char *path, char *resolved); 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int system(const char * string); 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern void * bsearch(const void *key, const void *base0, 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t nmemb, size_t size, 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*compar)(const void *, const void *)); 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long jrand48(unsigned short *); 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long mrand48(void); 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long nrand48(unsigned short *); 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern long lrand48(void); 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern unsigned short *seed48(unsigned short*); 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern double erand48(unsigned short xsubi[3]) __NDK_FPABI__; 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern double drand48(void) __NDK_FPABI__; 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern void srand48(long); 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertunsigned int arc4random(void); 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertunsigned int arc4random_uniform(unsigned int); 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid arc4random_buf(void*, size_t); 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RAND_MAX 0x7fffffff 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint rand(void); 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint rand_r(unsigned int*); 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid srand(unsigned int); 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* initstate(unsigned int, char*, size_t); 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong random(void); 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* setstate(char*); 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid srandom(unsigned int); 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint getpt(void); 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint grantpt(int); 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint posix_openpt(int); 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* ptsname(int) __warnattr("ptsname is not thread-safe; use ptsname_r instead"); 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ptsname_r(int, char*, size_t); 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint unlockpt(int); 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct { 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int quot; 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int rem; 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} div_t; 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern div_t div(int, int) __pure2; 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct { 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long int quot; 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long int rem; 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} ldiv_t; 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern ldiv_t ldiv(long, long) __pure2; 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct { 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long long int quot; 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long long int rem; 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} lldiv_t; 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern lldiv_t lldiv(long long, long long) __pure2; 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* BSD compatibility. */ 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern const char* getprogname(void); 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern void setprogname(const char*); 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* make STLPort happy */ 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int mblen(const char *, size_t); 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern size_t mbstowcs(wchar_t *, const char *, size_t); 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int mbtowc(wchar_t *, const char *, size_t); 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Likewise, make libstdc++-v3 happy. */ 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int wctomb(char *, wchar_t); 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern size_t wcstombs(char *, const wchar_t *, size_t); 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern size_t __ctype_get_mb_cur_max(void); 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MB_CUR_MAX __ctype_get_mb_cur_max() 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__END_DECLS 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STDLIB_H_ */ 170