1998-09-06 23:45:24 +00:00
|
|
|
#ifndef _STDLIB_H
|
1998-09-14 11:43:26 +00:00
|
|
|
|
|
|
|
#ifdef __need_malloc_and_calloc
|
|
|
|
#define __Need_M_And_C
|
|
|
|
#endif
|
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
#include <stdlib/stdlib.h>
|
1998-08-09 17:39:48 +00:00
|
|
|
|
|
|
|
/* Now define the internal interfaces. */
|
1998-09-14 11:43:26 +00:00
|
|
|
#ifndef __Need_M_And_C
|
2001-01-27 08:21:42 +00:00
|
|
|
extern long int __random (void);
|
1999-11-23 17:22:17 +00:00
|
|
|
extern void __srandom (unsigned int __seed);
|
2000-02-24 19:12:31 +00:00
|
|
|
extern char *__initstate (unsigned int __seed, char *__statebuf,
|
1999-11-23 17:22:17 +00:00
|
|
|
size_t __statelen);
|
2000-02-24 19:12:31 +00:00
|
|
|
extern char *__setstate (char *__statebuf);
|
1999-11-23 17:22:17 +00:00
|
|
|
extern int __random_r (struct random_data *__buf, int32_t *__result);
|
|
|
|
extern int __srandom_r (unsigned int __seed, struct random_data *__buf);
|
2000-02-24 22:08:02 +00:00
|
|
|
extern int __initstate_r (unsigned int __seed, char *__statebuf,
|
1999-11-23 17:22:17 +00:00
|
|
|
size_t __statelen, struct random_data *__buf);
|
2000-02-24 22:08:02 +00:00
|
|
|
extern int __setstate_r (char *__statebuf, struct random_data *__buf);
|
1999-11-23 17:22:17 +00:00
|
|
|
extern int __rand_r (unsigned int *__seed);
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __erand48_r (unsigned short int __xsubi[3],
|
1999-11-23 17:22:17 +00:00
|
|
|
struct drand48_data *__buffer, double *__result);
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __nrand48_r (unsigned short int __xsubi[3],
|
|
|
|
struct drand48_data *__buffer,
|
1999-11-23 17:22:17 +00:00
|
|
|
long int *__result);
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __jrand48_r (unsigned short int __xsubi[3],
|
|
|
|
struct drand48_data *__buffer,
|
1999-11-23 17:22:17 +00:00
|
|
|
long int *__result);
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __srand48_r (long int __seedval,
|
1999-11-23 17:22:17 +00:00
|
|
|
struct drand48_data *__buffer);
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __seed48_r (unsigned short int __seed16v[3],
|
1999-11-23 17:22:17 +00:00
|
|
|
struct drand48_data *__buffer);
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __lcong48_r (unsigned short int __param[7],
|
1999-11-23 17:22:17 +00:00
|
|
|
struct drand48_data *__buffer);
|
1998-08-09 17:39:48 +00:00
|
|
|
|
|
|
|
/* Internal function to compute next state of the generator. */
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __drand48_iterate (unsigned short int __xsubi[3],
|
1999-11-23 17:22:17 +00:00
|
|
|
struct drand48_data *__buffer);
|
1998-08-09 17:39:48 +00:00
|
|
|
|
2002-03-12 20:04:56 +00:00
|
|
|
/* Global state for non-reentrant functions. Defined in drand48-iter.c. */
|
|
|
|
extern struct drand48_data __libc_drand48_data attribute_hidden;
|
|
|
|
|
1999-10-19 13:53:34 +00:00
|
|
|
extern int __setenv (__const char *__name, __const char *__value,
|
1999-11-23 17:22:17 +00:00
|
|
|
int __replace);
|
2001-01-27 08:17:38 +00:00
|
|
|
extern int __unsetenv (__const char *__name);
|
1999-11-23 17:22:17 +00:00
|
|
|
extern int __clearenv (void);
|
|
|
|
extern char *__canonicalize_file_name (__const char *__name);
|
|
|
|
extern char *__realpath (__const char *__name, char *__resolved);
|
|
|
|
extern int __ptsname_r (int __fd, char *__buf, size_t __buflen);
|
|
|
|
extern int __getpt (void);
|
2001-01-09 01:59:17 +00:00
|
|
|
extern int __posix_openpt (int __oflag);
|
1999-07-29 20:40:05 +00:00
|
|
|
|
|
|
|
extern int __add_to_environ (const char *name, const char *value,
|
|
|
|
const char *combines, int replace);
|
1999-10-28 21:38:59 +00:00
|
|
|
|
|
|
|
extern void _quicksort (void *const pbase, size_t total_elems,
|
|
|
|
size_t size, __compar_fn_t cmp);
|
|
|
|
|
2001-02-06 18:27:57 +00:00
|
|
|
extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg);
|
|
|
|
|
2000-03-20 07:07:18 +00:00
|
|
|
extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
|
Update.
* sysdeps/mach/hurd/chown.c: Use INTDEF for __chown.
* sysdeps/unix/sysv/aix/chown.c: Likewise.
* sysdeps/unix/grantpt.c: Use INTUSE for __chown calls.
* sysdeps/unix/sysv/linux/m68k/chown.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.
* sysdeps/unix/sysv/linux/i386/chown.c: Use INTDEF2 to define
__chown_internal.
* sysdeps/unix/sysv/linux/s390/s390-32//chown.c: Likewise.
* intl/dcngettext.c [_LIBC]: Use INTUSE for __dcngettext.
* intl/dngettext.c [_LIBC] (DCNGETTEXT): Use INTUSE.
* intl/ngettext.c: Likewise.
* include/sys/socket.h: Declare __connect_internal and define
__connect macro if not NOT_IN_libc.
* sysdeps/mach/hurd/connect.c: Use INTDEF for __connect.
* sysdeps/unix/sysv/aix/connect.c: Likewise.
* sysdeps/unix/sysv/linux/connect.S: Add __connect_internal alias.
* include/unistd.h: Declare __close_internal and define __close macro
if not NOT_IN_libc.
* libio/libioP.h (JUMO0, JUMP1, JUMP2, JUMP3, WJUMP0, WJUMP1, WJUMP2,
WJUMP3): Add extra parenthesis to avoid expanding element names with
macors like __close.
* sysdeps/unix/syscalls.list: Add __close_internal alias.
* include/unistd.h: Declare __dup2_internal and define __dup2 macro
if not NOT_IN_libc.
* sysdeps/mach/hurd/dup2.c: Use INTDEF for __dup2.
* sysdeps/posix/dup2.c: Use INTDEF for __dup2.
* sysdeps/unix/syscalls.list: Add __dup2_internal alias.
* include/unistd.h: Declare __fork_internal and define __fork macro
if not NOT_IN_libc.
* sysdeps/mach/hurd/fork.c: Use INTDEF for __fork.
* sysdeps/unix/sysv/aix/fork.c: Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add __fork_internal alias.
* include/stdio_ext.h: Declare __fsetlocking_internal and define
__fsetlocking macro to use it if not NOT_IN_libc.
* libio/__fsetlocking.c: Use INTDEF for __fsetlocking.
* libio/__fbufsize.c: Correct copyright.
* libio/__flbf.c: Likewise.
* libio/__fpending.c: Likewise.
* libio/__fpurge.c: Likewise.
* libio/__freadable.c: Likewise.
* libio/__freading.c: Likewise.
* libio/__fsetlocking.c: Likewise.
* libio/__fwritable.c: Likewise.
* libio/__fwriting.c: Likewise.
* include/stdio.h: Declare __asprintf_internal and define __asprintf
macro to use it if not NOT_IN_libc.
* stdio-common/asprintf.c: Use INTDEF for __asprintf.
* include/mntent.h: Declare __setmntent_internal,
__getmntent_r_internal, __endmntent_internal. Define __setmntent,
__getmntent_r, and __endmntent macros to use these functions if not
NOT_IN_libc.
* misc/mntent_r.c: Use INTDEF for __setmntent, __getmntent_r, and
__endmntent.
* include/math.h: Declare __finite_internal, __finitef_internal, and
__finitel_internal. Redefine isfinite macro if in libc or libm using
these functions.
* sysdeps/generic/s_ldexp.c: Use INTUSE for __finite calls.
* sysdeps/generic/s_ldexpf.c: Use INTUSE for __finitef calls.
* sysdeps/generic/s_ldexpl.c: Use INTUSE for __finitel calls.
* sysdeps/i386/fpu/s_finite.S: Define _internal alias.
* sysdeps/i386/fpu/s_finitef.S: Likewise.
* sysdeps/i386/fpu/s_finitel.S: Likewise.
* sysdeps/ieee754/dbl-64/s_finite.c: Likewise.
* sysdeps/ieee754/flt-32/s_finitef.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_finitel.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_finitel.c: Likewise.
* include/fcntl.h: Declare __fcntl_internal. Define __fcntl macro
to use this function if not NOT_IN_libc.
* libio/iofdopen.c (_IO_fcntl): Use INTUSE.
* sysdeps/generic/fcntl.c: Use INTDEF for __fcntl.
* sysdeps/mach/hurd/fcntl.c: Likewise.
* sysdeps/unix/sysv/aix/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* include/argz.h: Declare __argz_count_internal and
__argz_stringify_internal.
* intl/l10nflist.c [_LIBC]: Use INTUSE for __argz_count and
__argz_stringify.
* string/argz-count.c: Use INTDEF for __argz_count.
* string/argz-stringify.c: Use INTDEF for __argz_stringify.
* include/stdlib.h: Declare __cxa_atexit_internal and define
__cxa_atexit macro if not NOT_IN_libc.
* stdlib/cxa_atexit.c: Use INTDEF for __cxa_atexit.
* dlfcn/Makefile: Define NOT_IN_libc when compiling modcxaatexit.c.
* assert/assert.c: Use INTDEF for __assert_fail.
* assert/__assert.c: Use INTUSE for call to __assert_fail.
* include/assert.h: Declare __assert_fail_internal.
2002-04-09 20:36:24 +00:00
|
|
|
extern int __cxa_atexit_internal (void (*func) (void *), void *arg, void *d)
|
|
|
|
attribute_hidden;
|
2000-03-20 07:07:18 +00:00
|
|
|
|
2000-12-27 07:56:28 +00:00
|
|
|
extern void __cxa_finalize (void *d);
|
|
|
|
|
2000-08-23 07:22:48 +00:00
|
|
|
extern int __posix_memalign (void **memptr, size_t alignment, size_t size)
|
|
|
|
__attribute_malloc__;
|
2002-02-13 08:03:56 +00:00
|
|
|
extern void *__libc_memalign (size_t alignment, size_t size)
|
|
|
|
__attribute_malloc__;
|
2000-04-14 17:44:22 +00:00
|
|
|
|
2000-12-27 07:56:28 +00:00
|
|
|
extern int __libc_system (const char *line);
|
|
|
|
|
2002-01-02 06:25:51 +00:00
|
|
|
extern double ____strtod_l_internal (__const char *__restrict __nptr,
|
|
|
|
char **__restrict __endptr, int __group,
|
|
|
|
__locale_t __loc) __THROW;
|
|
|
|
extern float ____strtof_l_internal (__const char *__restrict __nptr,
|
|
|
|
char **__restrict __endptr, int __group,
|
|
|
|
__locale_t __loc) __THROW;
|
|
|
|
extern long double ____strtold_l_internal (__const char *__restrict __nptr,
|
|
|
|
char **__restrict __endptr,
|
|
|
|
int __group, __locale_t __loc)
|
|
|
|
__THROW;
|
|
|
|
extern long int ____strtol_l_internal (__const char *__restrict __nptr,
|
|
|
|
char **__restrict __endptr,
|
|
|
|
int __base, int __group,
|
|
|
|
__locale_t __loc) __THROW;
|
|
|
|
extern unsigned long int ____strtoul_l_internal (__const char *
|
|
|
|
__restrict __nptr,
|
|
|
|
char **__restrict __endptr,
|
|
|
|
int __base, int __group,
|
|
|
|
__locale_t __loc) __THROW;
|
|
|
|
__extension__
|
|
|
|
extern long long int ____strtoll_l_internal (__const char *__restrict __nptr,
|
|
|
|
char **__restrict __endptr,
|
|
|
|
int __base, int __group,
|
|
|
|
__locale_t __loc) __THROW;
|
|
|
|
__extension__
|
|
|
|
extern unsigned long long int ____strtoull_l_internal (__const char *
|
|
|
|
__restrict __nptr,
|
|
|
|
char **
|
|
|
|
__restrict __endptr,
|
|
|
|
int __base, int __group,
|
|
|
|
__locale_t __loc)
|
|
|
|
__THROW;
|
|
|
|
|
|
|
|
extern __inline double
|
|
|
|
__strtod_l (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
|
|
__locale_t __loc) __THROW
|
|
|
|
{
|
|
|
|
return ____strtod_l_internal (__nptr, __endptr, 0, __loc);
|
|
|
|
}
|
|
|
|
extern __inline long int
|
|
|
|
__strtol_l (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
|
|
int __base, __locale_t __loc) __THROW
|
|
|
|
{
|
|
|
|
return ____strtol_l_internal (__nptr, __endptr, __base, 0, __loc);
|
|
|
|
}
|
|
|
|
extern __inline unsigned long int
|
|
|
|
__strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
|
|
int __base, __locale_t __loc) __THROW
|
|
|
|
{
|
|
|
|
return ____strtoul_l_internal (__nptr, __endptr, __base, 0, __loc);
|
|
|
|
}
|
|
|
|
extern __inline float
|
|
|
|
__strtof_l (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
|
|
__locale_t __loc) __THROW
|
|
|
|
{
|
|
|
|
return ____strtof_l_internal (__nptr, __endptr, 0, __loc);
|
|
|
|
}
|
|
|
|
extern __inline long double
|
|
|
|
__strtold_l (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
|
|
__locale_t __loc) __THROW
|
|
|
|
{
|
|
|
|
return ____strtold_l_internal (__nptr, __endptr, 0, __loc);
|
|
|
|
}
|
|
|
|
__extension__ extern __inline long long int
|
|
|
|
__strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
|
|
int __base, __locale_t __loc) __THROW
|
|
|
|
{
|
|
|
|
return ____strtoll_l_internal (__nptr, __endptr, __base, 0, __loc);
|
|
|
|
}
|
|
|
|
__extension__ extern __inline unsigned long long int
|
|
|
|
__strtoull_l (__const char * __restrict __nptr, char **__restrict __endptr,
|
|
|
|
int __base, __locale_t __loc) __THROW
|
|
|
|
{
|
|
|
|
return ____strtoull_l_internal (__nptr, __endptr, __base, 0, __loc);
|
|
|
|
}
|
|
|
|
|
2002-04-08 18:26:37 +00:00
|
|
|
|
2002-04-08 18:50:41 +00:00
|
|
|
# ifndef NOT_IN_libc
|
2002-04-08 18:26:37 +00:00
|
|
|
# undef MB_CUR_MAX
|
|
|
|
# define MB_CUR_MAX (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX))
|
Update.
* sysdeps/mach/hurd/chown.c: Use INTDEF for __chown.
* sysdeps/unix/sysv/aix/chown.c: Likewise.
* sysdeps/unix/grantpt.c: Use INTUSE for __chown calls.
* sysdeps/unix/sysv/linux/m68k/chown.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.
* sysdeps/unix/sysv/linux/i386/chown.c: Use INTDEF2 to define
__chown_internal.
* sysdeps/unix/sysv/linux/s390/s390-32//chown.c: Likewise.
* intl/dcngettext.c [_LIBC]: Use INTUSE for __dcngettext.
* intl/dngettext.c [_LIBC] (DCNGETTEXT): Use INTUSE.
* intl/ngettext.c: Likewise.
* include/sys/socket.h: Declare __connect_internal and define
__connect macro if not NOT_IN_libc.
* sysdeps/mach/hurd/connect.c: Use INTDEF for __connect.
* sysdeps/unix/sysv/aix/connect.c: Likewise.
* sysdeps/unix/sysv/linux/connect.S: Add __connect_internal alias.
* include/unistd.h: Declare __close_internal and define __close macro
if not NOT_IN_libc.
* libio/libioP.h (JUMO0, JUMP1, JUMP2, JUMP3, WJUMP0, WJUMP1, WJUMP2,
WJUMP3): Add extra parenthesis to avoid expanding element names with
macors like __close.
* sysdeps/unix/syscalls.list: Add __close_internal alias.
* include/unistd.h: Declare __dup2_internal and define __dup2 macro
if not NOT_IN_libc.
* sysdeps/mach/hurd/dup2.c: Use INTDEF for __dup2.
* sysdeps/posix/dup2.c: Use INTDEF for __dup2.
* sysdeps/unix/syscalls.list: Add __dup2_internal alias.
* include/unistd.h: Declare __fork_internal and define __fork macro
if not NOT_IN_libc.
* sysdeps/mach/hurd/fork.c: Use INTDEF for __fork.
* sysdeps/unix/sysv/aix/fork.c: Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add __fork_internal alias.
* include/stdio_ext.h: Declare __fsetlocking_internal and define
__fsetlocking macro to use it if not NOT_IN_libc.
* libio/__fsetlocking.c: Use INTDEF for __fsetlocking.
* libio/__fbufsize.c: Correct copyright.
* libio/__flbf.c: Likewise.
* libio/__fpending.c: Likewise.
* libio/__fpurge.c: Likewise.
* libio/__freadable.c: Likewise.
* libio/__freading.c: Likewise.
* libio/__fsetlocking.c: Likewise.
* libio/__fwritable.c: Likewise.
* libio/__fwriting.c: Likewise.
* include/stdio.h: Declare __asprintf_internal and define __asprintf
macro to use it if not NOT_IN_libc.
* stdio-common/asprintf.c: Use INTDEF for __asprintf.
* include/mntent.h: Declare __setmntent_internal,
__getmntent_r_internal, __endmntent_internal. Define __setmntent,
__getmntent_r, and __endmntent macros to use these functions if not
NOT_IN_libc.
* misc/mntent_r.c: Use INTDEF for __setmntent, __getmntent_r, and
__endmntent.
* include/math.h: Declare __finite_internal, __finitef_internal, and
__finitel_internal. Redefine isfinite macro if in libc or libm using
these functions.
* sysdeps/generic/s_ldexp.c: Use INTUSE for __finite calls.
* sysdeps/generic/s_ldexpf.c: Use INTUSE for __finitef calls.
* sysdeps/generic/s_ldexpl.c: Use INTUSE for __finitel calls.
* sysdeps/i386/fpu/s_finite.S: Define _internal alias.
* sysdeps/i386/fpu/s_finitef.S: Likewise.
* sysdeps/i386/fpu/s_finitel.S: Likewise.
* sysdeps/ieee754/dbl-64/s_finite.c: Likewise.
* sysdeps/ieee754/flt-32/s_finitef.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_finitel.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_finitel.c: Likewise.
* include/fcntl.h: Declare __fcntl_internal. Define __fcntl macro
to use this function if not NOT_IN_libc.
* libio/iofdopen.c (_IO_fcntl): Use INTUSE.
* sysdeps/generic/fcntl.c: Use INTDEF for __fcntl.
* sysdeps/mach/hurd/fcntl.c: Likewise.
* sysdeps/unix/sysv/aix/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* include/argz.h: Declare __argz_count_internal and
__argz_stringify_internal.
* intl/l10nflist.c [_LIBC]: Use INTUSE for __argz_count and
__argz_stringify.
* string/argz-count.c: Use INTDEF for __argz_count.
* string/argz-stringify.c: Use INTDEF for __argz_stringify.
* include/stdlib.h: Declare __cxa_atexit_internal and define
__cxa_atexit macro if not NOT_IN_libc.
* stdlib/cxa_atexit.c: Use INTDEF for __cxa_atexit.
* dlfcn/Makefile: Define NOT_IN_libc when compiling modcxaatexit.c.
* assert/assert.c: Use INTDEF for __assert_fail.
* assert/__assert.c: Use INTUSE for call to __assert_fail.
* include/assert.h: Declare __assert_fail_internal.
2002-04-09 20:36:24 +00:00
|
|
|
|
|
|
|
# define __cxa_atexit(func, arg, d) INTUSE(__cxa_atexit) (func, arg, d)
|
2002-04-08 18:26:37 +00:00
|
|
|
# endif
|
|
|
|
|
1998-09-06 23:45:24 +00:00
|
|
|
#endif
|
1998-09-14 11:43:26 +00:00
|
|
|
#undef __Need_M_And_C
|
|
|
|
|
|
|
|
#endif /* include/stdlib.h */
|