Blame stdlib/stdlib.h

Packit Service 82fcde
/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
/*
Packit Service 82fcde
 *	ISO C99 Standard: 7.20 General utilities	<stdlib.h>
Packit Service 82fcde
 */
Packit Service 82fcde
Packit Service 82fcde
#ifndef	_STDLIB_H
Packit Service 82fcde
Packit Service 82fcde
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
Packit Service 82fcde
#include <bits/libc-header-start.h>
Packit Service 82fcde
Packit Service 82fcde
/* Get size_t, wchar_t and NULL from <stddef.h>.  */
Packit Service 82fcde
#define __need_size_t
Packit Service 82fcde
#define __need_wchar_t
Packit Service 82fcde
#define __need_NULL
Packit Service 82fcde
#include <stddef.h>
Packit Service 82fcde
Packit Service 82fcde
__BEGIN_DECLS
Packit Service 82fcde
Packit Service 82fcde
#define	_STDLIB_H	1
Packit Service 82fcde
Packit Service 82fcde
#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H
Packit Service 82fcde
/* XPG requires a few symbols from <sys/wait.h> being defined.  */
Packit Service 82fcde
# include <bits/waitflags.h>
Packit Service 82fcde
# include <bits/waitstatus.h>
Packit Service 82fcde
Packit Service 82fcde
/* Define the macros <sys/wait.h> also would define this way.  */
Packit Service 82fcde
# define WEXITSTATUS(status)	__WEXITSTATUS (status)
Packit Service 82fcde
# define WTERMSIG(status)	__WTERMSIG (status)
Packit Service 82fcde
# define WSTOPSIG(status)	__WSTOPSIG (status)
Packit Service 82fcde
# define WIFEXITED(status)	__WIFEXITED (status)
Packit Service 82fcde
# define WIFSIGNALED(status)	__WIFSIGNALED (status)
Packit Service 82fcde
# define WIFSTOPPED(status)	__WIFSTOPPED (status)
Packit Service 82fcde
# ifdef __WIFCONTINUED
Packit Service 82fcde
#  define WIFCONTINUED(status)	__WIFCONTINUED (status)
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif	/* X/Open or XPG7 and <sys/wait.h> not included.  */
Packit Service 82fcde
Packit Service 82fcde
/* _FloatN API tests for enablement.  */
Packit Service 82fcde
#include <bits/floatn.h>
Packit Service 82fcde
Packit Service 82fcde
/* Returned by `div'.  */
Packit Service 82fcde
typedef struct
Packit Service 82fcde
  {
Packit Service 82fcde
    int quot;			/* Quotient.  */
Packit Service 82fcde
    int rem;			/* Remainder.  */
Packit Service 82fcde
  } div_t;
Packit Service 82fcde
Packit Service 82fcde
/* Returned by `ldiv'.  */
Packit Service 82fcde
#ifndef __ldiv_t_defined
Packit Service 82fcde
typedef struct
Packit Service 82fcde
  {
Packit Service 82fcde
    long int quot;		/* Quotient.  */
Packit Service 82fcde
    long int rem;		/* Remainder.  */
Packit Service 82fcde
  } ldiv_t;
Packit Service 82fcde
# define __ldiv_t_defined	1
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_ISOC99 && !defined __lldiv_t_defined
Packit Service 82fcde
/* Returned by `lldiv'.  */
Packit Service 82fcde
__extension__ typedef struct
Packit Service 82fcde
  {
Packit Service 82fcde
    long long int quot;		/* Quotient.  */
Packit Service 82fcde
    long long int rem;		/* Remainder.  */
Packit Service 82fcde
  } lldiv_t;
Packit Service 82fcde
# define __lldiv_t_defined	1
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* The largest number rand will return (same as INT_MAX).  */
Packit Service 82fcde
#define	RAND_MAX	2147483647
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* We define these the same for all machines.
Packit Service 82fcde
   Changes from this to the outside world should be done in `_exit'.  */
Packit Service 82fcde
#define	EXIT_FAILURE	1	/* Failing exit status.  */
Packit Service 82fcde
#define	EXIT_SUCCESS	0	/* Successful exit status.  */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Maximum length of a multibyte character in the current locale.  */
Packit Service 82fcde
#define	MB_CUR_MAX	(__ctype_get_mb_cur_max ())
Packit Service 82fcde
extern size_t __ctype_get_mb_cur_max (void) __THROW __wur;
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Convert a string to a floating-point number.  */
Packit Service 82fcde
extern double atof (const char *__nptr)
Packit Service 82fcde
     __THROW __attribute_pure__ __nonnull ((1)) __wur;
Packit Service 82fcde
/* Convert a string to an integer.  */
Packit Service 82fcde
extern int atoi (const char *__nptr)
Packit Service 82fcde
     __THROW __attribute_pure__ __nonnull ((1)) __wur;
Packit Service 82fcde
/* Convert a string to a long integer.  */
Packit Service 82fcde
extern long int atol (const char *__nptr)
Packit Service 82fcde
     __THROW __attribute_pure__ __nonnull ((1)) __wur;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_ISOC99
Packit Service 82fcde
/* Convert a string to a long long integer.  */
Packit Service 82fcde
__extension__ extern long long int atoll (const char *__nptr)
Packit Service 82fcde
     __THROW __attribute_pure__ __nonnull ((1)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Convert a string to a floating-point number.  */
Packit Service 82fcde
extern double strtod (const char *__restrict __nptr,
Packit Service 82fcde
		      char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
#ifdef	__USE_ISOC99
Packit Service 82fcde
/* Likewise for `float' and `long double' sizes of floating-point numbers.  */
Packit Service 82fcde
extern float strtof (const char *__restrict __nptr,
Packit Service 82fcde
		     char **__restrict __endptr) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
extern long double strtold (const char *__restrict __nptr,
Packit Service 82fcde
			    char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Likewise for '_FloatN' and '_FloatNx'.  */
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern _Float16 strtof16 (const char *__restrict __nptr,
Packit Service 82fcde
			  char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern _Float32 strtof32 (const char *__restrict __nptr,
Packit Service 82fcde
			  char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern _Float64 strtof64 (const char *__restrict __nptr,
Packit Service 82fcde
			  char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern _Float128 strtof128 (const char *__restrict __nptr,
Packit Service 82fcde
			    char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern _Float32x strtof32x (const char *__restrict __nptr,
Packit Service 82fcde
			    char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern _Float64x strtof64x (const char *__restrict __nptr,
Packit Service 82fcde
			    char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern _Float128x strtof128x (const char *__restrict __nptr,
Packit Service 82fcde
			      char **__restrict __endptr)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Convert a string to a long integer.  */
Packit Service 82fcde
extern long int strtol (const char *__restrict __nptr,
Packit Service 82fcde
			char **__restrict __endptr, int __base)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
/* Convert a string to an unsigned long integer.  */
Packit Service 82fcde
extern unsigned long int strtoul (const char *__restrict __nptr,
Packit Service 82fcde
				  char **__restrict __endptr, int __base)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
/* Convert a string to a quadword integer.  */
Packit Service 82fcde
__extension__
Packit Service 82fcde
extern long long int strtoq (const char *__restrict __nptr,
Packit Service 82fcde
			     char **__restrict __endptr, int __base)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
/* Convert a string to an unsigned quadword integer.  */
Packit Service 82fcde
__extension__
Packit Service 82fcde
extern unsigned long long int strtouq (const char *__restrict __nptr,
Packit Service 82fcde
				       char **__restrict __endptr, int __base)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif /* Use misc.  */
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_ISOC99
Packit Service 82fcde
/* Convert a string to a quadword integer.  */
Packit Service 82fcde
__extension__
Packit Service 82fcde
extern long long int strtoll (const char *__restrict __nptr,
Packit Service 82fcde
			      char **__restrict __endptr, int __base)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
/* Convert a string to an unsigned quadword integer.  */
Packit Service 82fcde
__extension__
Packit Service 82fcde
extern unsigned long long int strtoull (const char *__restrict __nptr,
Packit Service 82fcde
					char **__restrict __endptr, int __base)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif /* ISO C99 or use MISC.  */
Packit Service 82fcde
Packit Service 82fcde
/* Convert a floating-point number to a string.  */
Packit Service 82fcde
#if __GLIBC_USE (IEC_60559_BFP_EXT)
Packit Service 82fcde
extern int strfromd (char *__dest, size_t __size, const char *__format,
Packit Service 82fcde
		     double __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
Packit Service 82fcde
extern int strfromf (char *__dest, size_t __size, const char *__format,
Packit Service 82fcde
		     float __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
Packit Service 82fcde
extern int strfroml (char *__dest, size_t __size, const char *__format,
Packit Service 82fcde
		     long double __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern int strfromf16 (char *__dest, size_t __size, const char * __format,
Packit Service 82fcde
		       _Float16 __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern int strfromf32 (char *__dest, size_t __size, const char * __format,
Packit Service 82fcde
		       _Float32 __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern int strfromf64 (char *__dest, size_t __size, const char * __format,
Packit Service 82fcde
		       _Float64 __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern int strfromf128 (char *__dest, size_t __size, const char * __format,
Packit Service 82fcde
			_Float128 __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern int strfromf32x (char *__dest, size_t __size, const char * __format,
Packit Service 82fcde
			_Float32x __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern int strfromf64x (char *__dest, size_t __size, const char * __format,
Packit Service 82fcde
			_Float64x __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if __HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT)
Packit Service 82fcde
extern int strfromf128x (char *__dest, size_t __size, const char * __format,
Packit Service 82fcde
			 _Float128x __f)
Packit Service 82fcde
     __THROW __nonnull ((3));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
/* Parallel versions of the functions above which take the locale to
Packit Service 82fcde
   use as an additional parameter.  These are GNU extensions inspired
Packit Service 82fcde
   by the POSIX.1-2008 extended locale API.  */
Packit Service 82fcde
# include <bits/types/locale_t.h>
Packit Service 82fcde
Packit Service 82fcde
extern long int strtol_l (const char *__restrict __nptr,
Packit Service 82fcde
			  char **__restrict __endptr, int __base,
Packit Service 82fcde
			  locale_t __loc) __THROW __nonnull ((1, 4));
Packit Service 82fcde
Packit Service 82fcde
extern unsigned long int strtoul_l (const char *__restrict __nptr,
Packit Service 82fcde
				    char **__restrict __endptr,
Packit Service 82fcde
				    int __base, locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 4));
Packit Service 82fcde
Packit Service 82fcde
__extension__
Packit Service 82fcde
extern long long int strtoll_l (const char *__restrict __nptr,
Packit Service 82fcde
				char **__restrict __endptr, int __base,
Packit Service 82fcde
				locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 4));
Packit Service 82fcde
Packit Service 82fcde
__extension__
Packit Service 82fcde
extern unsigned long long int strtoull_l (const char *__restrict __nptr,
Packit Service 82fcde
					  char **__restrict __endptr,
Packit Service 82fcde
					  int __base, locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 4));
Packit Service 82fcde
Packit Service 82fcde
extern double strtod_l (const char *__restrict __nptr,
Packit Service 82fcde
			char **__restrict __endptr, locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
Packit Service 82fcde
extern float strtof_l (const char *__restrict __nptr,
Packit Service 82fcde
		       char **__restrict __endptr, locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
Packit Service 82fcde
extern long double strtold_l (const char *__restrict __nptr,
Packit Service 82fcde
			      char **__restrict __endptr,
Packit Service 82fcde
			      locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
Packit Service 82fcde
# if __HAVE_FLOAT16
Packit Service 82fcde
extern _Float16 strtof16_l (const char *__restrict __nptr,
Packit Service 82fcde
			    char **__restrict __endptr,
Packit Service 82fcde
			    locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
# if __HAVE_FLOAT32
Packit Service 82fcde
extern _Float32 strtof32_l (const char *__restrict __nptr,
Packit Service 82fcde
			    char **__restrict __endptr,
Packit Service 82fcde
			    locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
# if __HAVE_FLOAT64
Packit Service 82fcde
extern _Float64 strtof64_l (const char *__restrict __nptr,
Packit Service 82fcde
			    char **__restrict __endptr,
Packit Service 82fcde
			    locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
# if __HAVE_FLOAT128
Packit Service 82fcde
extern _Float128 strtof128_l (const char *__restrict __nptr,
Packit Service 82fcde
			      char **__restrict __endptr,
Packit Service 82fcde
			      locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
# if __HAVE_FLOAT32X
Packit Service 82fcde
extern _Float32x strtof32x_l (const char *__restrict __nptr,
Packit Service 82fcde
			      char **__restrict __endptr,
Packit Service 82fcde
			      locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
# if __HAVE_FLOAT64X
Packit Service 82fcde
extern _Float64x strtof64x_l (const char *__restrict __nptr,
Packit Service 82fcde
			      char **__restrict __endptr,
Packit Service 82fcde
			      locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
# if __HAVE_FLOAT128X
Packit Service 82fcde
extern _Float128x strtof128x_l (const char *__restrict __nptr,
Packit Service 82fcde
				char **__restrict __endptr,
Packit Service 82fcde
				locale_t __loc)
Packit Service 82fcde
     __THROW __nonnull ((1, 3));
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif /* GNU */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_EXTERN_INLINES
Packit Service 82fcde
__extern_inline int
Packit Service 82fcde
__NTH (atoi (const char *__nptr))
Packit Service 82fcde
{
Packit Service 82fcde
  return (int) strtol (__nptr, (char **) NULL, 10);
Packit Service 82fcde
}
Packit Service 82fcde
__extern_inline long int
Packit Service 82fcde
__NTH (atol (const char *__nptr))
Packit Service 82fcde
{
Packit Service 82fcde
  return strtol (__nptr, (char **) NULL, 10);
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
# ifdef __USE_ISOC99
Packit Service 82fcde
__extension__ __extern_inline long long int
Packit Service 82fcde
__NTH (atoll (const char *__nptr))
Packit Service 82fcde
{
Packit Service 82fcde
  return strtoll (__nptr, (char **) NULL, 10);
Packit Service 82fcde
}
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif /* Optimizing and Inlining.  */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
Packit Service 82fcde
/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
Packit Service 82fcde
   digit first.  Returns a pointer to static storage overwritten by the
Packit Service 82fcde
   next call.  */
Packit Service 82fcde
extern char *l64a (long int __n) __THROW __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Read a number from a string S in base 64 as above.  */
Packit Service 82fcde
extern long int a64l (const char *__s)
Packit Service 82fcde
     __THROW __attribute_pure__ __nonnull ((1)) __wur;
Packit Service 82fcde
Packit Service 82fcde
#endif	/* Use misc || extended X/Open.  */
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
Packit Service 82fcde
# include <sys/types.h>	/* we need int32_t... */
Packit Service 82fcde
Packit Service 82fcde
/* These are the functions that actually do things.  The `random', `srandom',
Packit Service 82fcde
   `initstate' and `setstate' functions are those from BSD Unices.
Packit Service 82fcde
   The `rand' and `srand' functions are required by the ANSI standard.
Packit Service 82fcde
   We provide both interfaces to the same random number generator.  */
Packit Service 82fcde
/* Return a random long integer between 0 and RAND_MAX inclusive.  */
Packit Service 82fcde
extern long int random (void) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Seed the random number generator with the given number.  */
Packit Service 82fcde
extern void srandom (unsigned int __seed) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Initialize the random number generator to use state buffer STATEBUF,
Packit Service 82fcde
   of length STATELEN, and seed it with SEED.  Optimal lengths are 8, 16,
Packit Service 82fcde
   32, 64, 128 and 256, the bigger the better; values less than 8 will
Packit Service 82fcde
   cause an error and values greater than 256 will be rounded down.  */
Packit Service 82fcde
extern char *initstate (unsigned int __seed, char *__statebuf,
Packit Service 82fcde
			size_t __statelen) __THROW __nonnull ((2));
Packit Service 82fcde
Packit Service 82fcde
/* Switch the random number generator to state buffer STATEBUF,
Packit Service 82fcde
   which should have been previously initialized by `initstate'.  */
Packit Service 82fcde
extern char *setstate (char *__statebuf) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
# ifdef __USE_MISC
Packit Service 82fcde
/* Reentrant versions of the `random' family of functions.
Packit Service 82fcde
   These functions all use the following data structure to contain
Packit Service 82fcde
   state, rather than global state variables.  */
Packit Service 82fcde
Packit Service 82fcde
struct random_data
Packit Service 82fcde
  {
Packit Service 82fcde
    int32_t *fptr;		/* Front pointer.  */
Packit Service 82fcde
    int32_t *rptr;		/* Rear pointer.  */
Packit Service 82fcde
    int32_t *state;		/* Array of state values.  */
Packit Service 82fcde
    int rand_type;		/* Type of random number generator.  */
Packit Service 82fcde
    int rand_deg;		/* Degree of random number generator.  */
Packit Service 82fcde
    int rand_sep;		/* Distance between front and rear.  */
Packit Service 82fcde
    int32_t *end_ptr;		/* Pointer behind state table.  */
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
extern int random_r (struct random_data *__restrict __buf,
Packit Service 82fcde
		     int32_t *__restrict __result) __THROW __nonnull ((1, 2));
Packit Service 82fcde
Packit Service 82fcde
extern int srandom_r (unsigned int __seed, struct random_data *__buf)
Packit Service 82fcde
     __THROW __nonnull ((2));
Packit Service 82fcde
Packit Service 82fcde
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
Packit Service 82fcde
			size_t __statelen,
Packit Service 82fcde
			struct random_data *__restrict __buf)
Packit Service 82fcde
     __THROW __nonnull ((2, 4));
Packit Service 82fcde
Packit Service 82fcde
extern int setstate_r (char *__restrict __statebuf,
Packit Service 82fcde
		       struct random_data *__restrict __buf)
Packit Service 82fcde
     __THROW __nonnull ((1, 2));
Packit Service 82fcde
# endif	/* Use misc.  */
Packit Service 82fcde
#endif	/* Use extended X/Open || misc. */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Return a random integer between 0 and RAND_MAX inclusive.  */
Packit Service 82fcde
extern int rand (void) __THROW;
Packit Service 82fcde
/* Seed the random number generator with the given number.  */
Packit Service 82fcde
extern void srand (unsigned int __seed) __THROW;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_POSIX199506
Packit Service 82fcde
/* Reentrant interface according to POSIX.1.  */
Packit Service 82fcde
extern int rand_r (unsigned int *__seed) __THROW;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_MISC || defined __USE_XOPEN
Packit Service 82fcde
/* System V style 48-bit random number generator functions.  */
Packit Service 82fcde
Packit Service 82fcde
/* Return non-negative, double-precision floating-point value in [0.0,1.0).  */
Packit Service 82fcde
extern double drand48 (void) __THROW;
Packit Service 82fcde
extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Return non-negative, long integer in [0,2^31).  */
Packit Service 82fcde
extern long int lrand48 (void) __THROW;
Packit Service 82fcde
extern long int nrand48 (unsigned short int __xsubi[3])
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Return signed, long integers in [-2^31,2^31).  */
Packit Service 82fcde
extern long int mrand48 (void) __THROW;
Packit Service 82fcde
extern long int jrand48 (unsigned short int __xsubi[3])
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Seed random number generator.  */
Packit Service 82fcde
extern void srand48 (long int __seedval) __THROW;
Packit Service 82fcde
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
# ifdef __USE_MISC
Packit Service 82fcde
/* Data structure for communication with thread safe versions.  This
Packit Service 82fcde
   type is to be regarded as opaque.  It's only exported because users
Packit Service 82fcde
   have to allocate objects of this type.  */
Packit Service 82fcde
struct drand48_data
Packit Service 82fcde
  {
Packit Service 82fcde
    unsigned short int __x[3];	/* Current state.  */
Packit Service 82fcde
    unsigned short int __old_x[3]; /* Old state.  */
Packit Service 82fcde
    unsigned short int __c;	/* Additive const. in congruential formula.  */
Packit Service 82fcde
    unsigned short int __init;	/* Flag for initializing.  */
Packit Service 82fcde
    __extension__ unsigned long long int __a;	/* Factor in congruential
Packit Service 82fcde
						   formula.  */
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
/* Return non-negative, double-precision floating-point value in [0.0,1.0).  */
Packit Service 82fcde
extern int drand48_r (struct drand48_data *__restrict __buffer,
Packit Service 82fcde
		      double *__restrict __result) __THROW __nonnull ((1, 2));
Packit Service 82fcde
extern int erand48_r (unsigned short int __xsubi[3],
Packit Service 82fcde
		      struct drand48_data *__restrict __buffer,
Packit Service 82fcde
		      double *__restrict __result) __THROW __nonnull ((1, 2));
Packit Service 82fcde
Packit Service 82fcde
/* Return non-negative, long integer in [0,2^31).  */
Packit Service 82fcde
extern int lrand48_r (struct drand48_data *__restrict __buffer,
Packit Service 82fcde
		      long int *__restrict __result)
Packit Service 82fcde
     __THROW __nonnull ((1, 2));
Packit Service 82fcde
extern int nrand48_r (unsigned short int __xsubi[3],
Packit Service 82fcde
		      struct drand48_data *__restrict __buffer,
Packit Service 82fcde
		      long int *__restrict __result)
Packit Service 82fcde
     __THROW __nonnull ((1, 2));
Packit Service 82fcde
Packit Service 82fcde
/* Return signed, long integers in [-2^31,2^31).  */
Packit Service 82fcde
extern int mrand48_r (struct drand48_data *__restrict __buffer,
Packit Service 82fcde
		      long int *__restrict __result)
Packit Service 82fcde
     __THROW __nonnull ((1, 2));
Packit Service 82fcde
extern int jrand48_r (unsigned short int __xsubi[3],
Packit Service 82fcde
		      struct drand48_data *__restrict __buffer,
Packit Service 82fcde
		      long int *__restrict __result)
Packit Service 82fcde
     __THROW __nonnull ((1, 2));
Packit Service 82fcde
Packit Service 82fcde
/* Seed random number generator.  */
Packit Service 82fcde
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
Packit Service 82fcde
     __THROW __nonnull ((2));
Packit Service 82fcde
Packit Service 82fcde
extern int seed48_r (unsigned short int __seed16v[3],
Packit Service 82fcde
		     struct drand48_data *__buffer) __THROW __nonnull ((1, 2));
Packit Service 82fcde
Packit Service 82fcde
extern int lcong48_r (unsigned short int __param[7],
Packit Service 82fcde
		      struct drand48_data *__buffer)
Packit Service 82fcde
     __THROW __nonnull ((1, 2));
Packit Service 82fcde
# endif	/* Use misc.  */
Packit Service 82fcde
#endif	/* Use misc or X/Open.  */
Packit Service 82fcde
Packit Service 82fcde
/* Allocate SIZE bytes of memory.  */
Packit Service 82fcde
extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;
Packit Service 82fcde
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
Packit Service 82fcde
extern void *calloc (size_t __nmemb, size_t __size)
Packit Service 82fcde
     __THROW __attribute_malloc__ __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Re-allocate the previously allocated block
Packit Service 82fcde
   in PTR, making the new block SIZE bytes long.  */
Packit Service 82fcde
/* __attribute_malloc__ is not used, because if realloc returns
Packit Service 82fcde
   the same pointer that was passed to it, aliasing needs to be allowed
Packit Service 82fcde
   between objects pointed by the old and new pointers.  */
Packit Service 82fcde
extern void *realloc (void *__ptr, size_t __size)
Packit Service 82fcde
     __THROW __attribute_warn_unused_result__;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
/* Re-allocate the previously allocated block in PTR, making the new
Packit Service 82fcde
   block large enough for NMEMB elements of SIZE bytes each.  */
Packit Service 82fcde
/* __attribute_malloc__ is not used, because if reallocarray returns
Packit Service 82fcde
   the same pointer that was passed to it, aliasing needs to be allowed
Packit Service 82fcde
   between objects pointed by the old and new pointers.  */
Packit Service 82fcde
extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
Packit Service 82fcde
     __THROW __attribute_warn_unused_result__;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Free a block allocated by `malloc', `realloc' or `calloc'.  */
Packit Service 82fcde
extern void free (void *__ptr) __THROW;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
# include <alloca.h>
Packit Service 82fcde
#endif /* Use misc.  */
Packit Service 82fcde
Packit Service 82fcde
#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
Packit Service 82fcde
    || defined __USE_MISC
Packit Service 82fcde
/* Allocate SIZE bytes on a page boundary.  The storage cannot be freed.  */
Packit Service 82fcde
extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN2K
Packit Service 82fcde
/* Allocate memory of SIZE bytes with an alignment of ALIGNMENT.  */
Packit Service 82fcde
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
Packit Service 82fcde
     __THROW __nonnull ((1)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_ISOC11
Packit Service 82fcde
/* ISO C variant of aligned allocation.  */
Packit Service 82fcde
extern void *aligned_alloc (size_t __alignment, size_t __size)
Packit Service 82fcde
     __THROW __attribute_malloc__ __attribute_alloc_size__ ((2)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Abort execution and generate a core-dump.  */
Packit Service 82fcde
extern void abort (void) __THROW __attribute__ ((__noreturn__));
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Register a function to be called when `exit' is called.  */
Packit Service 82fcde
extern int atexit (void (*__func) (void)) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_ISOC11 || defined __USE_ISOCXX11
Packit Service 82fcde
/* Register a function to be called when `quick_exit' is called.  */
Packit Service 82fcde
# ifdef __cplusplus
Packit Service 82fcde
extern "C++" int at_quick_exit (void (*__func) (void))
Packit Service 82fcde
     __THROW __asm ("at_quick_exit") __nonnull ((1));
Packit Service 82fcde
# else
Packit Service 82fcde
extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1));
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef	__USE_MISC
Packit Service 82fcde
/* Register a function to be called with the status
Packit Service 82fcde
   given to `exit' and the given argument.  */
Packit Service 82fcde
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Call all functions registered with `atexit' and `on_exit',
Packit Service 82fcde
   in the reverse of the order in which they were registered,
Packit Service 82fcde
   perform stdio cleanup, and terminate program execution with STATUS.  */
Packit Service 82fcde
extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_ISOC11 || defined __USE_ISOCXX11
Packit Service 82fcde
/* Call all functions registered with `at_quick_exit' in the reverse
Packit Service 82fcde
   of the order in which they were registered and terminate program
Packit Service 82fcde
   execution with STATUS.  */
Packit Service 82fcde
extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_ISOC99
Packit Service 82fcde
/* Terminate the program with STATUS without calling any of the
Packit Service 82fcde
   functions registered with `atexit' or `on_exit'.  */
Packit Service 82fcde
extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Return the value of envariable NAME, or NULL if it doesn't exist.  */
Packit Service 82fcde
extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
/* This function is similar to the above but returns NULL if the
Packit Service 82fcde
   programs is running with SUID or SGID enabled.  */
Packit Service 82fcde
extern char *secure_getenv (const char *__name)
Packit Service 82fcde
     __THROW __nonnull ((1)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_MISC || defined __USE_XOPEN
Packit Service 82fcde
/* The SVID says this is in <stdio.h>, but this seems a better place.	*/
Packit Service 82fcde
/* Put STRING, which is of the form "NAME=VALUE", in the environment.
Packit Service 82fcde
   If there is no `=', remove NAME from the environment.  */
Packit Service 82fcde
extern int putenv (char *__string) __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN2K
Packit Service 82fcde
/* Set NAME to VALUE in the environment.
Packit Service 82fcde
   If REPLACE is nonzero, overwrite an existing value.  */
Packit Service 82fcde
extern int setenv (const char *__name, const char *__value, int __replace)
Packit Service 82fcde
     __THROW __nonnull ((2));
Packit Service 82fcde
Packit Service 82fcde
/* Remove the variable NAME from the environment.  */
Packit Service 82fcde
extern int unsetenv (const char *__name) __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef	__USE_MISC
Packit Service 82fcde
/* The `clearenv' was planned to be added to POSIX.1 but probably
Packit Service 82fcde
   never made it.  Nevertheless the POSIX.9 standard (POSIX bindings
Packit Service 82fcde
   for Fortran 77) requires this function.  */
Packit Service 82fcde
extern int clearenv (void) __THROW;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_MISC \
Packit Service 82fcde
    || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8)
Packit Service 82fcde
/* Generate a unique temporary file name from TEMPLATE.
Packit Service 82fcde
   The last six characters of TEMPLATE must be "XXXXXX";
Packit Service 82fcde
   they are replaced with a string that makes the file name unique.
Packit Service 82fcde
   Always returns TEMPLATE, it's either a temporary file name or a null
Packit Service 82fcde
   string if it cannot get a unique file name.  */
Packit Service 82fcde
extern char *mktemp (char *__template) __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
Packit Service 82fcde
/* Generate a unique temporary file name from TEMPLATE.
Packit Service 82fcde
   The last six characters of TEMPLATE must be "XXXXXX";
Packit Service 82fcde
   they are replaced with a string that makes the filename unique.
Packit Service 82fcde
   Returns a file descriptor open on the file for reading and writing,
Packit Service 82fcde
   or -1 if it cannot create a uniquely-named file.
Packit Service 82fcde
Packit Service 82fcde
   This function is a possible cancellation point and therefore not
Packit Service 82fcde
   marked with __THROW.  */
Packit Service 82fcde
# ifndef __USE_FILE_OFFSET64
Packit Service 82fcde
extern int mkstemp (char *__template) __nonnull ((1)) __wur;
Packit Service 82fcde
# else
Packit Service 82fcde
#  ifdef __REDIRECT
Packit Service 82fcde
extern int __REDIRECT (mkstemp, (char *__template), mkstemp64)
Packit Service 82fcde
     __nonnull ((1)) __wur;
Packit Service 82fcde
#  else
Packit Service 82fcde
#   define mkstemp mkstemp64
Packit Service 82fcde
#  endif
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __USE_LARGEFILE64
Packit Service 82fcde
extern int mkstemp64 (char *__template) __nonnull ((1)) __wur;
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
/* Similar to mkstemp, but the template can have a suffix after the
Packit Service 82fcde
   XXXXXX.  The length of the suffix is specified in the second
Packit Service 82fcde
   parameter.
Packit Service 82fcde
Packit Service 82fcde
   This function is a possible cancellation point and therefore not
Packit Service 82fcde
   marked with __THROW.  */
Packit Service 82fcde
# ifndef __USE_FILE_OFFSET64
Packit Service 82fcde
extern int mkstemps (char *__template, int __suffixlen) __nonnull ((1)) __wur;
Packit Service 82fcde
# else
Packit Service 82fcde
#  ifdef __REDIRECT
Packit Service 82fcde
extern int __REDIRECT (mkstemps, (char *__template, int __suffixlen),
Packit Service 82fcde
		       mkstemps64) __nonnull ((1)) __wur;
Packit Service 82fcde
#  else
Packit Service 82fcde
#   define mkstemps mkstemps64
Packit Service 82fcde
#  endif
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __USE_LARGEFILE64
Packit Service 82fcde
extern int mkstemps64 (char *__template, int __suffixlen)
Packit Service 82fcde
     __nonnull ((1)) __wur;
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN2K8
Packit Service 82fcde
/* Create a unique temporary directory from TEMPLATE.
Packit Service 82fcde
   The last six characters of TEMPLATE must be "XXXXXX";
Packit Service 82fcde
   they are replaced with a string that makes the directory name unique.
Packit Service 82fcde
   Returns TEMPLATE, or a null pointer if it cannot get a unique name.
Packit Service 82fcde
   The directory is created mode 700.  */
Packit Service 82fcde
extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
/* Generate a unique temporary file name from TEMPLATE similar to
Packit Service 82fcde
   mkstemp.  But allow the caller to pass additional flags which are
Packit Service 82fcde
   used in the open call to create the file..
Packit Service 82fcde
Packit Service 82fcde
   This function is a possible cancellation point and therefore not
Packit Service 82fcde
   marked with __THROW.  */
Packit Service 82fcde
# ifndef __USE_FILE_OFFSET64
Packit Service 82fcde
extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur;
Packit Service 82fcde
# else
Packit Service 82fcde
#  ifdef __REDIRECT
Packit Service 82fcde
extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64)
Packit Service 82fcde
     __nonnull ((1)) __wur;
Packit Service 82fcde
#  else
Packit Service 82fcde
#   define mkostemp mkostemp64
Packit Service 82fcde
#  endif
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __USE_LARGEFILE64
Packit Service 82fcde
extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur;
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
/* Similar to mkostemp, but the template can have a suffix after the
Packit Service 82fcde
   XXXXXX.  The length of the suffix is specified in the second
Packit Service 82fcde
   parameter.
Packit Service 82fcde
Packit Service 82fcde
   This function is a possible cancellation point and therefore not
Packit Service 82fcde
   marked with __THROW.  */
Packit Service 82fcde
# ifndef __USE_FILE_OFFSET64
Packit Service 82fcde
extern int mkostemps (char *__template, int __suffixlen, int __flags)
Packit Service 82fcde
     __nonnull ((1)) __wur;
Packit Service 82fcde
# else
Packit Service 82fcde
#  ifdef __REDIRECT
Packit Service 82fcde
extern int __REDIRECT (mkostemps, (char *__template, int __suffixlen,
Packit Service 82fcde
				   int __flags), mkostemps64)
Packit Service 82fcde
     __nonnull ((1)) __wur;
Packit Service 82fcde
#  else
Packit Service 82fcde
#   define mkostemps mkostemps64
Packit Service 82fcde
#  endif
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __USE_LARGEFILE64
Packit Service 82fcde
extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
Packit Service 82fcde
     __nonnull ((1)) __wur;
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Execute the given line as a shell command.
Packit Service 82fcde
Packit Service 82fcde
   This function is a cancellation point and therefore not marked with
Packit Service 82fcde
   __THROW.  */
Packit Service 82fcde
extern int system (const char *__command) __wur;
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#ifdef	__USE_GNU
Packit Service 82fcde
/* Return a malloc'd string containing the canonical absolute name of the
Packit Service 82fcde
   existing named file.  */
Packit Service 82fcde
extern char *canonicalize_file_name (const char *__name)
Packit Service 82fcde
     __THROW __nonnull ((1)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
Packit Service 82fcde
/* Return the canonical absolute name of file NAME.  If RESOLVED is
Packit Service 82fcde
   null, the result is malloc'd; otherwise, if the canonical name is
Packit Service 82fcde
   PATH_MAX chars or more, returns null with `errno' set to
Packit Service 82fcde
   ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
Packit Service 82fcde
   returns the name in RESOLVED.  */
Packit Service 82fcde
extern char *realpath (const char *__restrict __name,
Packit Service 82fcde
		       char *__restrict __resolved) __THROW __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Shorthand for type of comparison functions.  */
Packit Service 82fcde
#ifndef __COMPAR_FN_T
Packit Service 82fcde
# define __COMPAR_FN_T
Packit Service 82fcde
typedef int (*__compar_fn_t) (const void *, const void *);
Packit Service 82fcde
Packit Service 82fcde
# ifdef	__USE_GNU
Packit Service 82fcde
typedef __compar_fn_t comparison_fn_t;
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Do a binary search for KEY in BASE, which consists of NMEMB elements
Packit Service 82fcde
   of SIZE bytes each, using COMPAR to perform the comparisons.  */
Packit Service 82fcde
extern void *bsearch (const void *__key, const void *__base,
Packit Service 82fcde
		      size_t __nmemb, size_t __size, __compar_fn_t __compar)
Packit Service 82fcde
     __nonnull ((1, 2, 5)) __wur;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_EXTERN_INLINES
Packit Service 82fcde
# include <bits/stdlib-bsearch.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Sort NMEMB elements of BASE, of SIZE bytes each,
Packit Service 82fcde
   using COMPAR to perform the comparisons.  */
Packit Service 82fcde
extern void qsort (void *__base, size_t __nmemb, size_t __size,
Packit Service 82fcde
		   __compar_fn_t __compar) __nonnull ((1, 4));
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
Packit Service 82fcde
		     __compar_d_fn_t __compar, void *__arg)
Packit Service 82fcde
  __nonnull ((1, 4));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Return the absolute value of X.  */
Packit Service 82fcde
extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
Packit Service 82fcde
extern long int labs (long int __x) __THROW __attribute__ ((__const__)) __wur;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_ISOC99
Packit Service 82fcde
__extension__ extern long long int llabs (long long int __x)
Packit Service 82fcde
     __THROW __attribute__ ((__const__)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Return the `div_t', `ldiv_t' or `lldiv_t' representation
Packit Service 82fcde
   of the value of NUMER over DENOM. */
Packit Service 82fcde
/* GCC may have built-ins for these someday.  */
Packit Service 82fcde
extern div_t div (int __numer, int __denom)
Packit Service 82fcde
     __THROW __attribute__ ((__const__)) __wur;
Packit Service 82fcde
extern ldiv_t ldiv (long int __numer, long int __denom)
Packit Service 82fcde
     __THROW __attribute__ ((__const__)) __wur;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_ISOC99
Packit Service 82fcde
__extension__ extern lldiv_t lldiv (long long int __numer,
Packit Service 82fcde
				    long long int __denom)
Packit Service 82fcde
     __THROW __attribute__ ((__const__)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
Packit Service 82fcde
    || defined __USE_MISC
Packit Service 82fcde
/* Convert floating point numbers to strings.  The returned values are
Packit Service 82fcde
   valid only until another call to the same function.  */
Packit Service 82fcde
Packit Service 82fcde
/* Convert VALUE to a string with NDIGIT digits and return a pointer to
Packit Service 82fcde
   this.  Set *DECPT with the position of the decimal character and *SIGN
Packit Service 82fcde
   with the sign of the number.  */
Packit Service 82fcde
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
Packit Service 82fcde
		   int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Convert VALUE to a string rounded to NDIGIT decimal digits.  Set *DECPT
Packit Service 82fcde
   with the position of the decimal character and *SIGN with the sign of
Packit Service 82fcde
   the number.  */
Packit Service 82fcde
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
Packit Service 82fcde
		   int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur;
Packit Service 82fcde
Packit Service 82fcde
/* If possible convert VALUE to a string with NDIGIT significant digits.
Packit Service 82fcde
   Otherwise use exponential representation.  The resulting string will
Packit Service 82fcde
   be written to BUF.  */
Packit Service 82fcde
extern char *gcvt (double __value, int __ndigit, char *__buf)
Packit Service 82fcde
     __THROW __nonnull ((3)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
/* Long double versions of above functions.  */
Packit Service 82fcde
extern char *qecvt (long double __value, int __ndigit,
Packit Service 82fcde
		    int *__restrict __decpt, int *__restrict __sign)
Packit Service 82fcde
     __THROW __nonnull ((3, 4)) __wur;
Packit Service 82fcde
extern char *qfcvt (long double __value, int __ndigit,
Packit Service 82fcde
		    int *__restrict __decpt, int *__restrict __sign)
Packit Service 82fcde
     __THROW __nonnull ((3, 4)) __wur;
Packit Service 82fcde
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
Packit Service 82fcde
     __THROW __nonnull ((3)) __wur;
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Reentrant version of the functions above which provide their own
Packit Service 82fcde
   buffers.  */
Packit Service 82fcde
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
Packit Service 82fcde
		   int *__restrict __sign, char *__restrict __buf,
Packit Service 82fcde
		   size_t __len) __THROW __nonnull ((3, 4, 5));
Packit Service 82fcde
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
Packit Service 82fcde
		   int *__restrict __sign, char *__restrict __buf,
Packit Service 82fcde
		   size_t __len) __THROW __nonnull ((3, 4, 5));
Packit Service 82fcde
Packit Service 82fcde
extern int qecvt_r (long double __value, int __ndigit,
Packit Service 82fcde
		    int *__restrict __decpt, int *__restrict __sign,
Packit Service 82fcde
		    char *__restrict __buf, size_t __len)
Packit Service 82fcde
     __THROW __nonnull ((3, 4, 5));
Packit Service 82fcde
extern int qfcvt_r (long double __value, int __ndigit,
Packit Service 82fcde
		    int *__restrict __decpt, int *__restrict __sign,
Packit Service 82fcde
		    char *__restrict __buf, size_t __len)
Packit Service 82fcde
     __THROW __nonnull ((3, 4, 5));
Packit Service 82fcde
#endif	/* misc */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Return the length of the multibyte character
Packit Service 82fcde
   in S, which is no longer than N.  */
Packit Service 82fcde
extern int mblen (const char *__s, size_t __n) __THROW;
Packit Service 82fcde
/* Return the length of the given multibyte character,
Packit Service 82fcde
   putting its `wchar_t' representation in *PWC.  */
Packit Service 82fcde
extern int mbtowc (wchar_t *__restrict __pwc,
Packit Service 82fcde
		   const char *__restrict __s, size_t __n) __THROW;
Packit Service 82fcde
/* Put the multibyte character represented
Packit Service 82fcde
   by WCHAR in S, returning its length.  */
Packit Service 82fcde
extern int wctomb (char *__s, wchar_t __wchar) __THROW;
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Convert a multibyte string to a wide char string.  */
Packit Service 82fcde
extern size_t mbstowcs (wchar_t *__restrict  __pwcs,
Packit Service 82fcde
			const char *__restrict __s, size_t __n) __THROW;
Packit Service 82fcde
/* Convert a wide char string to multibyte string.  */
Packit Service 82fcde
extern size_t wcstombs (char *__restrict __s,
Packit Service 82fcde
			const wchar_t *__restrict __pwcs, size_t __n)
Packit Service 82fcde
     __THROW;
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
/* Determine whether the string value of RESPONSE matches the affirmation
Packit Service 82fcde
   or negative response expression as specified by the LC_MESSAGES category
Packit Service 82fcde
   in the program's current locale.  Returns 1 if affirmative, 0 if
Packit Service 82fcde
   negative, and -1 if not matching.  */
Packit Service 82fcde
extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
Packit Service 82fcde
/* Parse comma separated suboption from *OPTIONP and match against
Packit Service 82fcde
   strings in TOKENS.  If found return index and set *VALUEP to
Packit Service 82fcde
   optional value introduced by an equal sign.  If the suboption is
Packit Service 82fcde
   not part of TOKENS return in *VALUEP beginning of unknown
Packit Service 82fcde
   suboption.  On exit *OPTIONP is set to the beginning of the next
Packit Service 82fcde
   token or at the terminating NUL character.  */
Packit Service 82fcde
extern int getsubopt (char **__restrict __optionp,
Packit Service 82fcde
		      char *const *__restrict __tokens,
Packit Service 82fcde
		      char **__restrict __valuep)
Packit Service 82fcde
     __THROW __nonnull ((1, 2, 3)) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* X/Open pseudo terminal handling.  */
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN2KXSI
Packit Service 82fcde
/* Return a master pseudo-terminal handle.  */
Packit Service 82fcde
extern int posix_openpt (int __oflag) __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN_EXTENDED
Packit Service 82fcde
/* The next four functions all take a master pseudo-tty fd and
Packit Service 82fcde
   perform an operation on the associated slave:  */
Packit Service 82fcde
Packit Service 82fcde
/* Chown the slave to the calling user.  */
Packit Service 82fcde
extern int grantpt (int __fd) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Release an internal lock so the slave can be opened.
Packit Service 82fcde
   Call after grantpt().  */
Packit Service 82fcde
extern int unlockpt (int __fd) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Return the pathname of the pseudo terminal slave associated with
Packit Service 82fcde
   the master FD is open on, or NULL on errors.
Packit Service 82fcde
   The returned storage is good until the next call to this function.  */
Packit Service 82fcde
extern char *ptsname (int __fd) __THROW __wur;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
/* Store at most BUFLEN characters of the pathname of the slave pseudo
Packit Service 82fcde
   terminal associated with the master FD is open on in BUF.
Packit Service 82fcde
   Return 0 on success, otherwise an error number.  */
Packit Service 82fcde
extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
Packit Service 82fcde
     __THROW __nonnull ((2));
Packit Service 82fcde
Packit Service 82fcde
/* Open a master pseudo terminal and return its file descriptor.  */
Packit Service 82fcde
extern int getpt (void);
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
/* Put the 1 minute, 5 minute and 15 minute load averages into the first
Packit Service 82fcde
   NELEM elements of LOADAVG.  Return the number written (never more than
Packit Service 82fcde
   three, but may be less than NELEM), or -1 if an error occurred.  */
Packit Service 82fcde
extern int getloadavg (double __loadavg[], int __nelem)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K
Packit Service 82fcde
/* Return the index into the active-logins file (utmp) for
Packit Service 82fcde
   the controlling terminal.  */
Packit Service 82fcde
extern int ttyslot (void) __THROW;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#include <bits/stdlib-float.h>
Packit Service 82fcde
Packit Service 82fcde
/* Define some macros helping to catch buffer overflows.  */
Packit Service 82fcde
#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
Packit Service 82fcde
# include <bits/stdlib.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __LDBL_COMPAT
Packit Service 82fcde
# include <bits/stdlib-ldbl.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
__END_DECLS
Packit Service 82fcde
Packit Service 82fcde
#endif /* stdlib.h  */