2024-08-03 13:09:24 -07:00
|
|
|
/* $OpenBSD: stdlib.h,v 1.78 2024/08/03 20:09:24 guenther Exp $ */
|
1995-12-30 00:12:37 -08:00
|
|
|
/* $NetBSD: stdlib.h,v 1.25 1995/12/27 21:19:08 jtc Exp $ */
|
1995-10-18 01:37:01 -07:00
|
|
|
|
|
|
|
/*-
|
|
|
|
* Copyright (c) 1990 The Regents of the University of California.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
2003-06-02 12:34:12 -07:00
|
|
|
* 3. Neither the name of the University nor the names of its contributors
|
1995-10-18 01:37:01 -07:00
|
|
|
* may be used to endorse or promote products derived from this software
|
|
|
|
* without specific prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
* SUCH DAMAGE.
|
|
|
|
*
|
|
|
|
* @(#)stdlib.h 5.13 (Berkeley) 6/4/91
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _STDLIB_H_
|
|
|
|
#define _STDLIB_H_
|
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
#include <sys/cdefs.h>
|
2016-09-09 11:12:37 -07:00
|
|
|
#include <sys/_null.h>
|
2006-01-06 10:53:04 -08:00
|
|
|
#include <machine/_types.h>
|
|
|
|
#if __BSD_VISIBLE /* for quad_t, etc. (XXX - use protected types) */
|
1995-10-18 01:37:01 -07:00
|
|
|
#include <sys/types.h>
|
|
|
|
#endif
|
|
|
|
|
2006-01-06 10:53:04 -08:00
|
|
|
#ifndef _SIZE_T_DEFINED_
|
|
|
|
#define _SIZE_T_DEFINED_
|
|
|
|
typedef __size_t size_t;
|
1995-10-18 01:37:01 -07:00
|
|
|
#endif
|
|
|
|
|
1999-11-27 05:20:25 -08:00
|
|
|
/* in C++, wchar_t is a built-in type */
|
2006-01-06 10:53:04 -08:00
|
|
|
#if !defined(_WCHAR_T_DEFINED_) && !defined(__cplusplus)
|
|
|
|
#define _WCHAR_T_DEFINED_
|
|
|
|
typedef __wchar_t wchar_t;
|
1995-10-18 01:37:01 -07:00
|
|
|
#endif
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int quot; /* quotient */
|
|
|
|
int rem; /* remainder */
|
|
|
|
} div_t;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
long quot; /* quotient */
|
|
|
|
long rem; /* remainder */
|
|
|
|
} ldiv_t;
|
|
|
|
|
2006-01-13 09:58:09 -08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
|
|
|
typedef struct {
|
|
|
|
long long quot; /* quotient */
|
|
|
|
long long rem; /* remainder */
|
|
|
|
} lldiv_t;
|
|
|
|
#endif
|
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
#if __BSD_VISIBLE
|
1995-10-18 01:37:01 -07:00
|
|
|
typedef struct {
|
|
|
|
quad_t quot; /* quotient */
|
|
|
|
quad_t rem; /* remainder */
|
|
|
|
} qdiv_t;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define EXIT_FAILURE 1
|
|
|
|
#define EXIT_SUCCESS 0
|
|
|
|
|
|
|
|
#define RAND_MAX 0x7fffffff
|
|
|
|
|
2017-09-04 20:16:13 -07:00
|
|
|
#define MB_CUR_MAX __mb_cur_max()
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2002-02-20 10:11:04 -08:00
|
|
|
/*
|
|
|
|
* Some header files may define an abs macro.
|
|
|
|
* If defined, undef it to prevent a syntax error and issue a warning.
|
|
|
|
*/
|
|
|
|
#ifdef abs
|
|
|
|
#undef abs
|
|
|
|
#warning abs macro collides with abs() prototype, undefining
|
|
|
|
#endif
|
|
|
|
|
1995-10-18 01:37:01 -07:00
|
|
|
__BEGIN_DECLS
|
2002-02-16 13:27:05 -08:00
|
|
|
__dead void abort(void);
|
|
|
|
int abs(int);
|
2002-02-17 11:42:18 -08:00
|
|
|
int atexit(void (*)(void));
|
2002-02-16 13:27:05 -08:00
|
|
|
double atof(const char *);
|
|
|
|
int atoi(const char *);
|
|
|
|
long atol(const char *);
|
2002-02-17 11:42:18 -08:00
|
|
|
void *bsearch(const void *, const void *, size_t, size_t,
|
|
|
|
int (*)(const void *, const void *));
|
2002-02-16 13:27:05 -08:00
|
|
|
void *calloc(size_t, size_t);
|
|
|
|
div_t div(int, int);
|
|
|
|
__dead void exit(int);
|
2004-05-03 10:21:13 -07:00
|
|
|
__dead void _Exit(int);
|
2002-02-16 13:27:05 -08:00
|
|
|
void free(void *);
|
|
|
|
char *getenv(const char *);
|
|
|
|
long labs(long);
|
|
|
|
ldiv_t ldiv(long, long);
|
|
|
|
void *malloc(size_t);
|
2014-04-21 06:17:32 -07:00
|
|
|
#if __BSD_VISIBLE
|
2017-05-10 14:48:29 -07:00
|
|
|
void freezero(void *, size_t)
|
|
|
|
__attribute__ ((__bounded__(__buffer__,1,2)));
|
2019-05-10 08:03:24 -07:00
|
|
|
void *calloc_conceal(size_t, size_t);
|
|
|
|
void *malloc_conceal(size_t);
|
2017-03-06 10:50:28 -08:00
|
|
|
void *recallocarray(void *, size_t, size_t, size_t);
|
2014-04-21 06:17:32 -07:00
|
|
|
#endif /* __BSD_VISIBLE */
|
2002-02-17 11:42:18 -08:00
|
|
|
void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
|
2002-02-16 13:27:05 -08:00
|
|
|
int rand(void);
|
|
|
|
void *realloc(void *, size_t);
|
|
|
|
void srand(unsigned);
|
Change rand(), random(), drand48(), lrand48(), mrand48(), and srand48()
to returning strong random by default, source from arc4random(3).
Parameters to the seeding functions are ignored, and the subsystems remain
in strong random mode. If you wish the standardized deterministic mode,
call srand_deterministic(), srandom_determistic(), srand48_deterministic(),
seed48_deterministic() or lcong48_deterministic() instead.
The re-entrant functions rand_r(), erand48(), nrand48(), jrand48() are
unaffected by this change and remain in deterministic mode (for now).
Verified as a good roadmap forward by auditing 8800 pieces of software.
Roughly 60 pieces of software will need adaptation to request the
deterministic mode.
Violates POSIX and C89, which violate best practice in this century.
ok guenther tedu millert
2014-12-08 13:45:19 -08:00
|
|
|
void srand_deterministic(unsigned);
|
2015-02-07 18:58:50 -08:00
|
|
|
double strtod(const char *__restrict, char **__restrict);
|
|
|
|
float strtof(const char *__restrict, char **__restrict);
|
|
|
|
long strtol(const char *__restrict, char **__restrict, int);
|
- replace dtoa w/ David's gdtoa, version 2008-03-15
- provide proper dtoa locks
- use the real strtof implementation
- add strtold, __hdtoa, __hldtoa
- add %a/%A support
- don't lose precision in printf, don't round to double anymore
- implement extended-precision versions of libc functions: fpclassify,
isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is
fixed
- separate vax versions of strtof, and __hdtoa
- add complex math support. added functions: cacos, casin, catan,
ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp,
clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf,
casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf,
ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf,
cimagf, conjf, cprojf, crealf
- add fdim, fmax, fmin
- add log2. (adapted implementation e_log.c. could be more acruate
& faster, but it's good enough for now)
- remove wrappers & cruft in libm, supposed to work-around mistakes
in SVID, etc.; use ieee versions. fixes issues in python 2.6 for
djm@
- make _digittoint static
- proper definitions for i386, and amd64 in ieee.h
- sh, powerpc don't really have extended-precision
- add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h
for LDBL_*
- merge lead to frac for m{6,8}k, for gdtoa to work properly
- add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa
to use
- add EXT_IMPLICIT_NBIT definition, which indicates implicit
normalization bit
- add regression tests for libc: fpclassify and printf
- arith.h & gd_qnan.h definitions
- update ieee.h: hppa doesn't have quad-precision, hppa64 does
- add missing prototypes to gdtoaimp
- on 64-bit platforms make sure gdtoa doesn't use a long when it
really wants an int
- etc., what i may have forgotten...
- bump libm major, due to removed&changed symbols
- no libc bump, since this is riding on djm's libc major crank from
a day ago
discussed with / requested by / testing theo, sthen@, djm@, jsg@,
merdely@, jsing@, tedu@, brad@, jakemsr@, and others.
looks good to millert@
parts of the diff ok kettenis@
this commit does not include:
- man page changes
2008-09-07 13:36:06 -07:00
|
|
|
long double
|
2015-02-07 18:58:50 -08:00
|
|
|
strtold(const char *__restrict, char **__restrict);
|
1995-10-18 01:37:01 -07:00
|
|
|
unsigned long
|
2015-02-07 18:58:50 -08:00
|
|
|
strtoul(const char *__restrict, char **__restrict, int);
|
2002-02-16 13:27:05 -08:00
|
|
|
int system(const char *);
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2017-09-04 20:16:13 -07:00
|
|
|
size_t __mb_cur_max(void);
|
2002-02-16 13:27:05 -08:00
|
|
|
int mblen(const char *, size_t);
|
|
|
|
size_t mbstowcs(wchar_t *, const char *, size_t);
|
|
|
|
int wctomb(char *, wchar_t);
|
|
|
|
int mbtowc(wchar_t *, const char *, size_t);
|
|
|
|
size_t wcstombs(char *, const wchar_t *, size_t);
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
/*
|
|
|
|
* IEEE Std 1003.1c-95, also adopted by X/Open CAE Spec Issue 5 Version 2
|
|
|
|
*/
|
2012-05-31 18:01:57 -07:00
|
|
|
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 199506 || defined(_REENTRANT)
|
2005-12-12 16:35:22 -08:00
|
|
|
int rand_r(unsigned int *);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if __BSD_VISIBLE || __XPG_VISIBLE >= 400
|
|
|
|
double drand48(void);
|
|
|
|
double erand48(unsigned short[3]);
|
|
|
|
long jrand48(unsigned short[3]);
|
|
|
|
void lcong48(unsigned short[7]);
|
Change rand(), random(), drand48(), lrand48(), mrand48(), and srand48()
to returning strong random by default, source from arc4random(3).
Parameters to the seeding functions are ignored, and the subsystems remain
in strong random mode. If you wish the standardized deterministic mode,
call srand_deterministic(), srandom_determistic(), srand48_deterministic(),
seed48_deterministic() or lcong48_deterministic() instead.
The re-entrant functions rand_r(), erand48(), nrand48(), jrand48() are
unaffected by this change and remain in deterministic mode (for now).
Verified as a good roadmap forward by auditing 8800 pieces of software.
Roughly 60 pieces of software will need adaptation to request the
deterministic mode.
Violates POSIX and C89, which violate best practice in this century.
ok guenther tedu millert
2014-12-08 13:45:19 -08:00
|
|
|
void lcong48_deterministic(unsigned short[7]);
|
2005-12-12 16:35:22 -08:00
|
|
|
long lrand48(void);
|
|
|
|
long mrand48(void);
|
|
|
|
long nrand48(unsigned short[3]);
|
|
|
|
unsigned short *seed48(unsigned short[3]);
|
Change rand(), random(), drand48(), lrand48(), mrand48(), and srand48()
to returning strong random by default, source from arc4random(3).
Parameters to the seeding functions are ignored, and the subsystems remain
in strong random mode. If you wish the standardized deterministic mode,
call srand_deterministic(), srandom_determistic(), srand48_deterministic(),
seed48_deterministic() or lcong48_deterministic() instead.
The re-entrant functions rand_r(), erand48(), nrand48(), jrand48() are
unaffected by this change and remain in deterministic mode (for now).
Verified as a good roadmap forward by auditing 8800 pieces of software.
Roughly 60 pieces of software will need adaptation to request the
deterministic mode.
Violates POSIX and C89, which violate best practice in this century.
ok guenther tedu millert
2014-12-08 13:45:19 -08:00
|
|
|
unsigned short *seed48_deterministic(unsigned short[3]);
|
2005-12-12 16:35:22 -08:00
|
|
|
void srand48(long);
|
Change rand(), random(), drand48(), lrand48(), mrand48(), and srand48()
to returning strong random by default, source from arc4random(3).
Parameters to the seeding functions are ignored, and the subsystems remain
in strong random mode. If you wish the standardized deterministic mode,
call srand_deterministic(), srandom_determistic(), srand48_deterministic(),
seed48_deterministic() or lcong48_deterministic() instead.
The re-entrant functions rand_r(), erand48(), nrand48(), jrand48() are
unaffected by this change and remain in deterministic mode (for now).
Verified as a good roadmap forward by auditing 8800 pieces of software.
Roughly 60 pieces of software will need adaptation to request the
deterministic mode.
Violates POSIX and C89, which violate best practice in this century.
ok guenther tedu millert
2014-12-08 13:45:19 -08:00
|
|
|
void srand48_deterministic(long);
|
2005-12-12 16:35:22 -08:00
|
|
|
|
2009-06-03 08:52:16 -07:00
|
|
|
int putenv(char *);
|
2005-12-12 16:35:22 -08:00
|
|
|
#endif
|
|
|
|
|
2012-05-31 18:01:57 -07:00
|
|
|
/*
|
|
|
|
* XSI functions marked LEGACY in IEEE Std 1003.1-2001 (POSIX) and
|
|
|
|
* removed in IEEE Std 1003.1-2008
|
|
|
|
*/
|
|
|
|
#if __BSD_VISIBLE || __XPG_VISIBLE < 700
|
|
|
|
char *ecvt(double, int, int *, int *);
|
|
|
|
char *fcvt(double, int, int *, int *);
|
|
|
|
char *gcvt(double, int, char *);
|
|
|
|
#if __BSD_VISIBLE || __XPG_VISIBLE >= 420
|
|
|
|
char *mktemp(char *);
|
|
|
|
#endif
|
|
|
|
#endif /* __BSD_VISIBLE || __XPG_VISIBLE < 700 */
|
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
#if __BSD_VISIBLE || __XPG_VISIBLE >= 420
|
|
|
|
long a64l(const char *);
|
|
|
|
char *l64a(long);
|
|
|
|
|
|
|
|
char *initstate(unsigned int, char *, size_t)
|
|
|
|
__attribute__((__bounded__ (__string__,2,3)));
|
|
|
|
long random(void);
|
2012-05-31 18:01:57 -07:00
|
|
|
char *setstate(char *);
|
2005-12-12 16:35:22 -08:00
|
|
|
void srandom(unsigned int);
|
Change rand(), random(), drand48(), lrand48(), mrand48(), and srand48()
to returning strong random by default, source from arc4random(3).
Parameters to the seeding functions are ignored, and the subsystems remain
in strong random mode. If you wish the standardized deterministic mode,
call srand_deterministic(), srandom_determistic(), srand48_deterministic(),
seed48_deterministic() or lcong48_deterministic() instead.
The re-entrant functions rand_r(), erand48(), nrand48(), jrand48() are
unaffected by this change and remain in deterministic mode (for now).
Verified as a good roadmap forward by auditing 8800 pieces of software.
Roughly 60 pieces of software will need adaptation to request the
deterministic mode.
Violates POSIX and C89, which violate best practice in this century.
ok guenther tedu millert
2014-12-08 13:45:19 -08:00
|
|
|
void srandom_deterministic(unsigned int);
|
2005-12-12 16:35:22 -08:00
|
|
|
|
2013-12-27 17:51:53 -08:00
|
|
|
char *realpath(const char *, char *)
|
|
|
|
__attribute__((__bounded__ (__minbytes__,2,1024)));
|
2005-12-12 16:35:22 -08:00
|
|
|
|
2012-05-31 18:01:57 -07:00
|
|
|
/*
|
|
|
|
* XSI functions marked LEGACY in XPG5 and removed in IEEE Std 1003.1-2001
|
|
|
|
*/
|
|
|
|
#if __BSD_VISIBLE || __XPG_VISIBLE < 600
|
2005-12-12 16:35:22 -08:00
|
|
|
int ttyslot(void);
|
|
|
|
void *valloc(size_t); /* obsoleted by malloc() */
|
2012-05-31 18:01:57 -07:00
|
|
|
#endif
|
2005-12-12 16:35:22 -08:00
|
|
|
#endif /* __BSD_VISIBLE || __XPG_VISIBLE >= 420 */
|
|
|
|
|
2012-05-31 18:01:57 -07:00
|
|
|
/*
|
|
|
|
* 4.4BSD, then XSI in XPG4.2, then added to POSIX base in IEEE Std 1003.1-2008
|
|
|
|
*/
|
|
|
|
#if __BSD_VISIBLE || __XPG_VISIBLE >= 420 || __POSIX_VISIBLE >= 200809
|
|
|
|
int mkstemp(char *);
|
|
|
|
#endif
|
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
/*
|
|
|
|
* ISO C99
|
|
|
|
*/
|
2006-01-13 09:58:09 -08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2005-12-12 16:35:22 -08:00
|
|
|
long long
|
|
|
|
atoll(const char *);
|
|
|
|
long long
|
|
|
|
llabs(long long);
|
2006-09-17 09:48:04 -07:00
|
|
|
lldiv_t
|
|
|
|
lldiv(long long, long long);
|
2005-12-12 16:35:22 -08:00
|
|
|
long long
|
2015-02-07 18:58:50 -08:00
|
|
|
strtoll(const char *__restrict, char **__restrict, int);
|
2005-12-12 16:35:22 -08:00
|
|
|
unsigned long long
|
2015-02-07 18:58:50 -08:00
|
|
|
strtoull(const char *__restrict, char **__restrict, int);
|
2005-12-12 16:35:22 -08:00
|
|
|
#endif
|
|
|
|
|
2018-11-05 00:23:40 -08:00
|
|
|
#if __ISO_C_VISIBLE >= 2011
|
|
|
|
void *
|
|
|
|
aligned_alloc(size_t, size_t);
|
|
|
|
#endif
|
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
/*
|
|
|
|
* The Open Group Base Specifications, Issue 6; IEEE Std 1003.1-2001 (POSIX)
|
|
|
|
*/
|
2012-05-31 18:01:57 -07:00
|
|
|
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112
|
|
|
|
int posix_memalign(void **, size_t, size_t);
|
2005-12-12 16:35:22 -08:00
|
|
|
int setenv(const char *, const char *, int);
|
2009-06-03 08:52:16 -07:00
|
|
|
int unsetenv(const char *);
|
2005-12-12 16:35:22 -08:00
|
|
|
#endif
|
2012-12-03 12:08:33 -08:00
|
|
|
#if __XPG_VISIBLE >= 420 || __POSIX_VISIBLE >= 200112
|
|
|
|
char *ptsname(int);
|
|
|
|
int grantpt(int);
|
|
|
|
int unlockpt(int);
|
|
|
|
#endif
|
|
|
|
#if __POSIX_VISIBLE >= 200112
|
|
|
|
int posix_openpt(int);
|
|
|
|
#endif
|
2005-12-12 16:35:22 -08:00
|
|
|
|
2012-05-31 18:01:57 -07:00
|
|
|
/*
|
|
|
|
* The Open Group Base Specifications, Issue 7; IEEE Std 1003.1-2008 (POSIX)
|
|
|
|
*/
|
|
|
|
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809
|
|
|
|
char *mkdtemp(char *);
|
|
|
|
#endif
|
|
|
|
|
2013-12-13 12:48:39 -08:00
|
|
|
#if __XPG_VISIBLE >= 420 || __POSIX_VISIBLE >= 200809
|
2013-11-22 13:32:49 -08:00
|
|
|
int getsubopt(char **, char * const *, char **);
|
|
|
|
#endif
|
|
|
|
|
2014-08-30 19:21:18 -07:00
|
|
|
/*
|
2024-08-03 13:09:24 -07:00
|
|
|
* The Open Group Base Specifications, Issue 8
|
2014-08-30 19:21:18 -07:00
|
|
|
*/
|
2024-08-03 13:09:24 -07:00
|
|
|
#if __POSIX_VISIBLE >= 202405 || __BSD_VISIBLE
|
2014-08-30 19:21:18 -07:00
|
|
|
int mkostemp(char *, int);
|
2024-08-03 13:09:24 -07:00
|
|
|
void *reallocarray(void *, size_t, size_t);
|
2014-08-30 19:21:18 -07:00
|
|
|
#endif
|
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
#if __BSD_VISIBLE
|
2015-01-15 11:55:58 -08:00
|
|
|
#define alloca(n) __builtin_alloca(n)
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2002-02-16 13:27:05 -08:00
|
|
|
char *getbsize(int *, long *);
|
|
|
|
char *cgetcap(char *, const char *, int);
|
|
|
|
int cgetclose(void);
|
|
|
|
int cgetent(char **, char **, const char *);
|
|
|
|
int cgetfirst(char **, char **);
|
|
|
|
int cgetmatch(char *, const char *);
|
|
|
|
int cgetnext(char **, char **);
|
|
|
|
int cgetnum(char *, const char *, long *);
|
|
|
|
int cgetset(const char *);
|
|
|
|
int cgetusedb(int);
|
|
|
|
int cgetstr(char *, const char *, char **);
|
|
|
|
int cgetustr(char *, const char *, char **);
|
|
|
|
|
|
|
|
int daemon(int, int);
|
2015-07-14 12:05:11 -07:00
|
|
|
char *devname(dev_t, mode_t);
|
2002-02-16 13:27:05 -08:00
|
|
|
int getloadavg(double [], int);
|
|
|
|
|
2013-05-31 13:59:23 -07:00
|
|
|
const char *
|
|
|
|
getprogname(void);
|
|
|
|
void setprogname(const char *);
|
|
|
|
|
1995-10-18 01:37:01 -07:00
|
|
|
extern char *suboptarg; /* getsubopt(3) external variable */
|
|
|
|
|
2024-03-01 13:30:40 -08:00
|
|
|
char * mkdtemps(char *, int);
|
2005-12-12 16:35:22 -08:00
|
|
|
int mkstemps(char *, int);
|
2014-08-30 19:21:18 -07:00
|
|
|
int mkostemps(char *, int, int);
|
2005-12-12 16:35:22 -08:00
|
|
|
|
2002-02-17 11:42:18 -08:00
|
|
|
int heapsort(void *, size_t, size_t, int (*)(const void *, const void *));
|
|
|
|
int mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
|
|
|
|
int radixsort(const unsigned char **, int, const unsigned char *,
|
|
|
|
unsigned);
|
|
|
|
int sradixsort(const unsigned char **, int, const unsigned char *,
|
|
|
|
unsigned);
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2002-02-16 13:27:05 -08:00
|
|
|
void srandomdev(void);
|
2005-12-12 16:35:22 -08:00
|
|
|
long long
|
|
|
|
strtonum(const char *, long long, long long, const char **);
|
2002-02-16 13:27:05 -08:00
|
|
|
|
|
|
|
void setproctitle(const char *, ...)
|
2001-11-04 15:27:54 -08:00
|
|
|
__attribute__((__format__ (__printf__, 1, 2)));
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2002-02-16 13:27:05 -08:00
|
|
|
quad_t qabs(quad_t);
|
|
|
|
qdiv_t qdiv(quad_t, quad_t);
|
2015-02-07 18:58:50 -08:00
|
|
|
quad_t strtoq(const char *__restrict, char **__restrict, int);
|
|
|
|
u_quad_t strtouq(const char *__restrict, char **__restrict, int);
|
2002-02-16 13:27:05 -08:00
|
|
|
|
2014-07-09 09:57:49 -07:00
|
|
|
uint32_t arc4random(void);
|
|
|
|
uint32_t arc4random_uniform(uint32_t);
|
2008-03-16 12:47:43 -07:00
|
|
|
void arc4random_buf(void *, size_t)
|
2017-05-11 04:52:18 -07:00
|
|
|
__attribute__((__bounded__ (__buffer__,1,2)));
|
2008-03-16 12:47:43 -07:00
|
|
|
|
2005-12-12 16:35:22 -08:00
|
|
|
#endif /* __BSD_VISIBLE */
|
1995-10-18 01:37:01 -07:00
|
|
|
|
|
|
|
__END_DECLS
|
|
|
|
|
|
|
|
#endif /* _STDLIB_H_ */
|