LCOV - code coverage report
Current view: top level - /usr/include - stdlib.h (source / functions) Coverage Total Hit
Test: cov.info Lines: 0.0 % 2 0
Test Date: 2025-01-19 16:02:43 Functions: - 0 0

            Line data    Source code
       1              : /* Copyright (C) 1991-2024 Free Software Foundation, Inc.
       2              :    Copyright The GNU Toolchain Authors.
       3              :    This file is part of the GNU C Library.
       4              : 
       5              :    The GNU C Library is free software; you can redistribute it and/or
       6              :    modify it under the terms of the GNU Lesser General Public
       7              :    License as published by the Free Software Foundation; either
       8              :    version 2.1 of the License, or (at your option) any later version.
       9              : 
      10              :    The GNU C Library is distributed in the hope that it will be useful,
      11              :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      12              :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13              :    Lesser General Public License for more details.
      14              : 
      15              :    You should have received a copy of the GNU Lesser General Public
      16              :    License along with the GNU C Library; if not, see
      17              :    <https://www.gnu.org/licenses/>.  */
      18              : 
      19              : /*
      20              :  *      ISO C99 Standard: 7.20 General utilities        <stdlib.h>
      21              :  */
      22              : 
      23              : #ifndef _STDLIB_H
      24              : 
      25              : #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
      26              : #include <bits/libc-header-start.h>
      27              : 
      28              : /* Get size_t, wchar_t and NULL from <stddef.h>.  */
      29              : #define __need_size_t
      30              : #define __need_wchar_t
      31              : #define __need_NULL
      32              : #include <stddef.h>
      33              : 
      34              : __BEGIN_DECLS
      35              : 
      36              : #define _STDLIB_H       1
      37              : 
      38              : #if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H
      39              : /* XPG requires a few symbols from <sys/wait.h> being defined.  */
      40              : # include <bits/waitflags.h>
      41              : # include <bits/waitstatus.h>
      42              : 
      43              : /* Define the macros <sys/wait.h> also would define this way.  */
      44              : # define WEXITSTATUS(status)    __WEXITSTATUS (status)
      45              : # define WTERMSIG(status)       __WTERMSIG (status)
      46              : # define WSTOPSIG(status)       __WSTOPSIG (status)
      47              : # define WIFEXITED(status)      __WIFEXITED (status)
      48              : # define WIFSIGNALED(status)    __WIFSIGNALED (status)
      49              : # define WIFSTOPPED(status)     __WIFSTOPPED (status)
      50              : # ifdef __WIFCONTINUED
      51              : #  define WIFCONTINUED(status)  __WIFCONTINUED (status)
      52              : # endif
      53              : #endif  /* X/Open or XPG7 and <sys/wait.h> not included.  */
      54              : 
      55              : /* _FloatN API tests for enablement.  */
      56              : #include <bits/floatn.h>
      57              : 
      58              : /* Returned by `div'.  */
      59              : typedef struct
      60              :   {
      61              :     int quot;                   /* Quotient.  */
      62              :     int rem;                    /* Remainder.  */
      63              :   } div_t;
      64              : 
      65              : /* Returned by `ldiv'.  */
      66              : #ifndef __ldiv_t_defined
      67              : typedef struct
      68              :   {
      69              :     long int quot;              /* Quotient.  */
      70              :     long int rem;               /* Remainder.  */
      71              :   } ldiv_t;
      72              : # define __ldiv_t_defined       1
      73              : #endif
      74              : 
      75              : #if defined __USE_ISOC99 && !defined __lldiv_t_defined
      76              : /* Returned by `lldiv'.  */
      77              : __extension__ typedef struct
      78              :   {
      79              :     long long int quot;         /* Quotient.  */
      80              :     long long int rem;          /* Remainder.  */
      81              :   } lldiv_t;
      82              : # define __lldiv_t_defined      1
      83              : #endif
      84              : 
      85              : 
      86              : /* The largest number rand will return (same as INT_MAX).  */
      87              : #define RAND_MAX        2147483647
      88              : 
      89              : 
      90              : /* We define these the same for all machines.
      91              :    Changes from this to the outside world should be done in `_exit'.  */
      92              : #define EXIT_FAILURE    1       /* Failing exit status.  */
      93              : #define EXIT_SUCCESS    0       /* Successful exit status.  */
      94              : 
      95              : 
      96              : /* Maximum length of a multibyte character in the current locale.  */
      97              : #define MB_CUR_MAX      (__ctype_get_mb_cur_max ())
      98              : extern size_t __ctype_get_mb_cur_max (void) __THROW __wur;
      99              : 
     100              : 
     101              : /* Convert a string to a floating-point number.  */
     102              : extern double atof (const char *__nptr)
     103              :      __THROW __attribute_pure__ __nonnull ((1)) __wur;
     104              : /* Convert a string to an integer.  */
     105              : extern int atoi (const char *__nptr)
     106              :      __THROW __attribute_pure__ __nonnull ((1)) __wur;
     107              : /* Convert a string to a long integer.  */
     108              : extern long int atol (const char *__nptr)
     109              :      __THROW __attribute_pure__ __nonnull ((1)) __wur;
     110              : 
     111              : #ifdef __USE_ISOC99
     112              : /* Convert a string to a long long integer.  */
     113              : __extension__ extern long long int atoll (const char *__nptr)
     114              :      __THROW __attribute_pure__ __nonnull ((1)) __wur;
     115              : #endif
     116              : 
     117              : /* Convert a string to a floating-point number.  */
     118              : extern double strtod (const char *__restrict __nptr,
     119              :                       char **__restrict __endptr)
     120              :      __THROW __nonnull ((1));
     121              : 
     122              : #ifdef  __USE_ISOC99
     123              : /* Likewise for `float' and `long double' sizes of floating-point numbers.  */
     124              : extern float strtof (const char *__restrict __nptr,
     125              :                      char **__restrict __endptr) __THROW __nonnull ((1));
     126              : 
     127              : extern long double strtold (const char *__restrict __nptr,
     128              :                             char **__restrict __endptr)
     129              :      __THROW __nonnull ((1));
     130              : #endif
     131              : 
     132              : /* Likewise for '_FloatN' and '_FloatNx'.  */
     133              : 
     134              : #if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     135              : extern _Float16 strtof16 (const char *__restrict __nptr,
     136              :                           char **__restrict __endptr)
     137              :      __THROW __nonnull ((1));
     138              : #endif
     139              : 
     140              : #if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     141              : extern _Float32 strtof32 (const char *__restrict __nptr,
     142              :                           char **__restrict __endptr)
     143              :      __THROW __nonnull ((1));
     144              : #endif
     145              : 
     146              : #if __HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     147              : extern _Float64 strtof64 (const char *__restrict __nptr,
     148              :                           char **__restrict __endptr)
     149              :      __THROW __nonnull ((1));
     150              : #endif
     151              : 
     152              : #if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     153              : extern _Float128 strtof128 (const char *__restrict __nptr,
     154              :                             char **__restrict __endptr)
     155              :      __THROW __nonnull ((1));
     156              : #endif
     157              : 
     158              : #if __HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT)
     159              : extern _Float32x strtof32x (const char *__restrict __nptr,
     160              :                             char **__restrict __endptr)
     161              :      __THROW __nonnull ((1));
     162              : #endif
     163              : 
     164              : #if __HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT)
     165              : extern _Float64x strtof64x (const char *__restrict __nptr,
     166              :                             char **__restrict __endptr)
     167              :      __THROW __nonnull ((1));
     168              : #endif
     169              : 
     170              : #if __HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT)
     171              : extern _Float128x strtof128x (const char *__restrict __nptr,
     172              :                               char **__restrict __endptr)
     173              :      __THROW __nonnull ((1));
     174              : #endif
     175              : 
     176              : /* Convert a string to a long integer.  */
     177              : extern long int strtol (const char *__restrict __nptr,
     178              :                         char **__restrict __endptr, int __base)
     179              :      __THROW __nonnull ((1));
     180              : /* Convert a string to an unsigned long integer.  */
     181              : extern unsigned long int strtoul (const char *__restrict __nptr,
     182              :                                   char **__restrict __endptr, int __base)
     183              :      __THROW __nonnull ((1));
     184              : 
     185              : #ifdef __USE_MISC
     186              : /* Convert a string to a quadword integer.  */
     187              : __extension__
     188              : extern long long int strtoq (const char *__restrict __nptr,
     189              :                              char **__restrict __endptr, int __base)
     190              :      __THROW __nonnull ((1));
     191              : /* Convert a string to an unsigned quadword integer.  */
     192              : __extension__
     193              : extern unsigned long long int strtouq (const char *__restrict __nptr,
     194              :                                        char **__restrict __endptr, int __base)
     195              :      __THROW __nonnull ((1));
     196              : #endif /* Use misc.  */
     197              : 
     198              : #ifdef __USE_ISOC99
     199              : /* Convert a string to a quadword integer.  */
     200              : __extension__
     201              : extern long long int strtoll (const char *__restrict __nptr,
     202              :                               char **__restrict __endptr, int __base)
     203              :      __THROW __nonnull ((1));
     204              : /* Convert a string to an unsigned quadword integer.  */
     205              : __extension__
     206              : extern unsigned long long int strtoull (const char *__restrict __nptr,
     207              :                                         char **__restrict __endptr, int __base)
     208              :      __THROW __nonnull ((1));
     209              : #endif /* ISO C99 or use MISC.  */
     210              : 
     211              : /* Versions of the above functions that handle '0b' and '0B' prefixes
     212              :    in base 0 or 2.  */
     213              : #if __GLIBC_USE (C2X_STRTOL)
     214              : # ifdef __REDIRECT
     215              : extern long int __REDIRECT_NTH (strtol, (const char *__restrict __nptr,
     216              :                                          char **__restrict __endptr,
     217              :                                          int __base), __isoc23_strtol)
     218              :      __nonnull ((1));
     219              : extern unsigned long int __REDIRECT_NTH (strtoul,
     220              :                                          (const char *__restrict __nptr,
     221              :                                           char **__restrict __endptr,
     222              :                                           int __base), __isoc23_strtoul)
     223              :      __nonnull ((1));
     224              : #  ifdef __USE_MISC
     225              : __extension__
     226              : extern long long int __REDIRECT_NTH (strtoq, (const char *__restrict __nptr,
     227              :                                               char **__restrict __endptr,
     228              :                                               int __base), __isoc23_strtoll)
     229              :      __nonnull ((1));
     230              : __extension__
     231              : extern unsigned long long int __REDIRECT_NTH (strtouq,
     232              :                                               (const char *__restrict __nptr,
     233              :                                                char **__restrict __endptr,
     234              :                                                int __base), __isoc23_strtoull)
     235              :      __nonnull ((1));
     236              : #  endif
     237              : __extension__
     238              : extern long long int __REDIRECT_NTH (strtoll, (const char *__restrict __nptr,
     239              :                                                char **__restrict __endptr,
     240              :                                                int __base), __isoc23_strtoll)
     241              :      __nonnull ((1));
     242              : __extension__
     243              : extern unsigned long long int __REDIRECT_NTH (strtoull,
     244              :                                               (const char *__restrict __nptr,
     245              :                                                char **__restrict __endptr,
     246              :                                                int __base), __isoc23_strtoull)
     247              :      __nonnull ((1));
     248              : # else
     249              : extern long int __isoc23_strtol (const char *__restrict __nptr,
     250              :                                  char **__restrict __endptr, int __base)
     251              :      __THROW __nonnull ((1));
     252              : extern unsigned long int __isoc23_strtoul (const char *__restrict __nptr,
     253              :                                            char **__restrict __endptr,
     254              :                                            int __base)
     255              :      __THROW __nonnull ((1));
     256              : __extension__
     257              : extern long long int __isoc23_strtoll (const char *__restrict __nptr,
     258              :                                        char **__restrict __endptr, int __base)
     259              :      __THROW __nonnull ((1));
     260              : __extension__
     261              : extern unsigned long long int __isoc23_strtoull (const char *__restrict __nptr,
     262              :                                                  char **__restrict __endptr,
     263              :                                                  int __base)
     264              :      __THROW __nonnull ((1));
     265              : #  define strtol __isoc23_strtol
     266              : #  define strtoul __isoc23_strtoul
     267              : #  ifdef __USE_MISC
     268              : #   define strtoq __isoc23_strtoll
     269              : #   define strtouq __isoc23_strtoull
     270              : #  endif
     271              : #  define strtoll __isoc23_strtoll
     272              : #  define strtoull __isoc23_strtoull
     273              : # endif
     274              : #endif
     275              : 
     276              : /* Convert a floating-point number to a string.  */
     277              : #if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
     278              : extern int strfromd (char *__dest, size_t __size, const char *__format,
     279              :                      double __f)
     280              :      __THROW __nonnull ((3));
     281              : 
     282              : extern int strfromf (char *__dest, size_t __size, const char *__format,
     283              :                      float __f)
     284              :      __THROW __nonnull ((3));
     285              : 
     286              : extern int strfroml (char *__dest, size_t __size, const char *__format,
     287              :                      long double __f)
     288              :      __THROW __nonnull ((3));
     289              : #endif
     290              : 
     291              : #if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     292              : extern int strfromf16 (char *__dest, size_t __size, const char * __format,
     293              :                        _Float16 __f)
     294              :      __THROW __nonnull ((3));
     295              : #endif
     296              : 
     297              : #if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     298              : extern int strfromf32 (char *__dest, size_t __size, const char * __format,
     299              :                        _Float32 __f)
     300              :      __THROW __nonnull ((3));
     301              : #endif
     302              : 
     303              : #if __HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     304              : extern int strfromf64 (char *__dest, size_t __size, const char * __format,
     305              :                        _Float64 __f)
     306              :      __THROW __nonnull ((3));
     307              : #endif
     308              : 
     309              : #if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
     310              : extern int strfromf128 (char *__dest, size_t __size, const char * __format,
     311              :                         _Float128 __f)
     312              :      __THROW __nonnull ((3));
     313              : #endif
     314              : 
     315              : #if __HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT)
     316              : extern int strfromf32x (char *__dest, size_t __size, const char * __format,
     317              :                         _Float32x __f)
     318              :      __THROW __nonnull ((3));
     319              : #endif
     320              : 
     321              : #if __HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT)
     322              : extern int strfromf64x (char *__dest, size_t __size, const char * __format,
     323              :                         _Float64x __f)
     324              :      __THROW __nonnull ((3));
     325              : #endif
     326              : 
     327              : #if __HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT)
     328              : extern int strfromf128x (char *__dest, size_t __size, const char * __format,
     329              :                          _Float128x __f)
     330              :      __THROW __nonnull ((3));
     331              : #endif
     332              : 
     333              : 
     334              : #ifdef __USE_GNU
     335              : /* Parallel versions of the functions above which take the locale to
     336              :    use as an additional parameter.  These are GNU extensions inspired
     337              :    by the POSIX.1-2008 extended locale API.  */
     338              : # include <bits/types/locale_t.h>
     339              : 
     340              : extern long int strtol_l (const char *__restrict __nptr,
     341              :                           char **__restrict __endptr, int __base,
     342              :                           locale_t __loc) __THROW __nonnull ((1, 4));
     343              : 
     344              : extern unsigned long int strtoul_l (const char *__restrict __nptr,
     345              :                                     char **__restrict __endptr,
     346              :                                     int __base, locale_t __loc)
     347              :      __THROW __nonnull ((1, 4));
     348              : 
     349              : __extension__
     350              : extern long long int strtoll_l (const char *__restrict __nptr,
     351              :                                 char **__restrict __endptr, int __base,
     352              :                                 locale_t __loc)
     353              :      __THROW __nonnull ((1, 4));
     354              : 
     355              : __extension__
     356              : extern unsigned long long int strtoull_l (const char *__restrict __nptr,
     357              :                                           char **__restrict __endptr,
     358              :                                           int __base, locale_t __loc)
     359              :      __THROW __nonnull ((1, 4));
     360              : 
     361              : /* Versions of the above functions that handle '0b' and '0B' prefixes
     362              :    in base 0 or 2.  */
     363              : # if __GLIBC_USE (C2X_STRTOL)
     364              : #  ifdef __REDIRECT
     365              : extern long int __REDIRECT_NTH (strtol_l, (const char *__restrict __nptr,
     366              :                                            char **__restrict __endptr,
     367              :                                            int __base, locale_t __loc),
     368              :                                 __isoc23_strtol_l)
     369              :      __nonnull ((1, 4));
     370              : extern unsigned long int __REDIRECT_NTH (strtoul_l,
     371              :                                          (const char *__restrict __nptr,
     372              :                                           char **__restrict __endptr,
     373              :                                           int __base, locale_t __loc),
     374              :                                          __isoc23_strtoul_l)
     375              :      __nonnull ((1, 4));
     376              : __extension__
     377              : extern long long int __REDIRECT_NTH (strtoll_l, (const char *__restrict __nptr,
     378              :                                                  char **__restrict __endptr,
     379              :                                                  int __base,
     380              :                                                  locale_t __loc),
     381              :                                      __isoc23_strtoll_l)
     382              :      __nonnull ((1, 4));
     383              : __extension__
     384              : extern unsigned long long int __REDIRECT_NTH (strtoull_l,
     385              :                                               (const char *__restrict __nptr,
     386              :                                                char **__restrict __endptr,
     387              :                                                int __base, locale_t __loc),
     388              :                                               __isoc23_strtoull_l)
     389              :      __nonnull ((1, 4));
     390              : #  else
     391              : extern long int __isoc23_strtol_l (const char *__restrict __nptr,
     392              :                                    char **__restrict __endptr, int __base,
     393              :                                    locale_t __loc) __THROW __nonnull ((1, 4));
     394              : extern unsigned long int __isoc23_strtoul_l (const char *__restrict __nptr,
     395              :                                              char **__restrict __endptr,
     396              :                                              int __base, locale_t __loc)
     397              :      __THROW __nonnull ((1, 4));
     398              : __extension__
     399              : extern long long int __isoc23_strtoll_l (const char *__restrict __nptr,
     400              :                                          char **__restrict __endptr,
     401              :                                          int __base, locale_t __loc)
     402              :      __THROW __nonnull ((1, 4));
     403              : __extension__
     404              : extern unsigned long long int __isoc23_strtoull_l (const char *__restrict __nptr,
     405              :                                                    char **__restrict __endptr,
     406              :                                                    int __base, locale_t __loc)
     407              :      __THROW __nonnull ((1, 4));
     408              : #   define strtol_l __isoc23_strtol_l
     409              : #   define strtoul_l __isoc23_strtoul_l
     410              : #   define strtoll_l __isoc23_strtoll_l
     411              : #   define strtoull_l __isoc23_strtoull_l
     412              : #  endif
     413              : # endif
     414              : 
     415              : extern double strtod_l (const char *__restrict __nptr,
     416              :                         char **__restrict __endptr, locale_t __loc)
     417              :      __THROW __nonnull ((1, 3));
     418              : 
     419              : extern float strtof_l (const char *__restrict __nptr,
     420              :                        char **__restrict __endptr, locale_t __loc)
     421              :      __THROW __nonnull ((1, 3));
     422              : 
     423              : extern long double strtold_l (const char *__restrict __nptr,
     424              :                               char **__restrict __endptr,
     425              :                               locale_t __loc)
     426              :      __THROW __nonnull ((1, 3));
     427              : 
     428              : # if __HAVE_FLOAT16
     429              : extern _Float16 strtof16_l (const char *__restrict __nptr,
     430              :                             char **__restrict __endptr,
     431              :                             locale_t __loc)
     432              :      __THROW __nonnull ((1, 3));
     433              : # endif
     434              : 
     435              : # if __HAVE_FLOAT32
     436              : extern _Float32 strtof32_l (const char *__restrict __nptr,
     437              :                             char **__restrict __endptr,
     438              :                             locale_t __loc)
     439              :      __THROW __nonnull ((1, 3));
     440              : # endif
     441              : 
     442              : # if __HAVE_FLOAT64
     443              : extern _Float64 strtof64_l (const char *__restrict __nptr,
     444              :                             char **__restrict __endptr,
     445              :                             locale_t __loc)
     446              :      __THROW __nonnull ((1, 3));
     447              : # endif
     448              : 
     449              : # if __HAVE_FLOAT128
     450              : extern _Float128 strtof128_l (const char *__restrict __nptr,
     451              :                               char **__restrict __endptr,
     452              :                               locale_t __loc)
     453              :      __THROW __nonnull ((1, 3));
     454              : # endif
     455              : 
     456              : # if __HAVE_FLOAT32X
     457              : extern _Float32x strtof32x_l (const char *__restrict __nptr,
     458              :                               char **__restrict __endptr,
     459              :                               locale_t __loc)
     460              :      __THROW __nonnull ((1, 3));
     461              : # endif
     462              : 
     463              : # if __HAVE_FLOAT64X
     464              : extern _Float64x strtof64x_l (const char *__restrict __nptr,
     465              :                               char **__restrict __endptr,
     466              :                               locale_t __loc)
     467              :      __THROW __nonnull ((1, 3));
     468              : # endif
     469              : 
     470              : # if __HAVE_FLOAT128X
     471              : extern _Float128x strtof128x_l (const char *__restrict __nptr,
     472              :                                 char **__restrict __endptr,
     473              :                                 locale_t __loc)
     474              :      __THROW __nonnull ((1, 3));
     475              : # endif
     476              : #endif /* GNU */
     477              : 
     478              : 
     479              : #ifdef __USE_EXTERN_INLINES
     480              : __extern_inline int
     481            0 : __NTH (atoi (const char *__nptr))
     482              : {
     483            0 :   return (int) strtol (__nptr, (char **) NULL, 10);
     484              : }
     485              : __extern_inline long int
     486              : __NTH (atol (const char *__nptr))
     487              : {
     488              :   return strtol (__nptr, (char **) NULL, 10);
     489              : }
     490              : 
     491              : # ifdef __USE_ISOC99
     492              : __extension__ __extern_inline long long int
     493              : __NTH (atoll (const char *__nptr))
     494              : {
     495              :   return strtoll (__nptr, (char **) NULL, 10);
     496              : }
     497              : # endif
     498              : #endif /* Optimizing and Inlining.  */
     499              : 
     500              : 
     501              : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     502              : /* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
     503              :    digit first.  Returns a pointer to static storage overwritten by the
     504              :    next call.  */
     505              : extern char *l64a (long int __n) __THROW __wur;
     506              : 
     507              : /* Read a number from a string S in base 64 as above.  */
     508              : extern long int a64l (const char *__s)
     509              :      __THROW __attribute_pure__ __nonnull ((1)) __wur;
     510              : 
     511              : #endif  /* Use misc || extended X/Open.  */
     512              : 
     513              : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     514              : # include <sys/types.h>   /* we need int32_t... */
     515              : 
     516              : /* These are the functions that actually do things.  The `random', `srandom',
     517              :    `initstate' and `setstate' functions are those from BSD Unices.
     518              :    The `rand' and `srand' functions are required by the ANSI standard.
     519              :    We provide both interfaces to the same random number generator.  */
     520              : /* Return a random long integer between 0 and 2^31-1 inclusive.  */
     521              : extern long int random (void) __THROW;
     522              : 
     523              : /* Seed the random number generator with the given number.  */
     524              : extern void srandom (unsigned int __seed) __THROW;
     525              : 
     526              : /* Initialize the random number generator to use state buffer STATEBUF,
     527              :    of length STATELEN, and seed it with SEED.  Optimal lengths are 8, 16,
     528              :    32, 64, 128 and 256, the bigger the better; values less than 8 will
     529              :    cause an error and values greater than 256 will be rounded down.  */
     530              : extern char *initstate (unsigned int __seed, char *__statebuf,
     531              :                         size_t __statelen) __THROW __nonnull ((2));
     532              : 
     533              : /* Switch the random number generator to state buffer STATEBUF,
     534              :    which should have been previously initialized by `initstate'.  */
     535              : extern char *setstate (char *__statebuf) __THROW __nonnull ((1));
     536              : 
     537              : 
     538              : # ifdef __USE_MISC
     539              : /* Reentrant versions of the `random' family of functions.
     540              :    These functions all use the following data structure to contain
     541              :    state, rather than global state variables.  */
     542              : 
     543              : struct random_data
     544              :   {
     545              :     int32_t *fptr;              /* Front pointer.  */
     546              :     int32_t *rptr;              /* Rear pointer.  */
     547              :     int32_t *state;             /* Array of state values.  */
     548              :     int rand_type;              /* Type of random number generator.  */
     549              :     int rand_deg;               /* Degree of random number generator.  */
     550              :     int rand_sep;               /* Distance between front and rear.  */
     551              :     int32_t *end_ptr;           /* Pointer behind state table.  */
     552              :   };
     553              : 
     554              : extern int random_r (struct random_data *__restrict __buf,
     555              :                      int32_t *__restrict __result) __THROW __nonnull ((1, 2));
     556              : 
     557              : extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     558              :      __THROW __nonnull ((2));
     559              : 
     560              : extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
     561              :                         size_t __statelen,
     562              :                         struct random_data *__restrict __buf)
     563              :      __THROW __nonnull ((2, 4));
     564              : 
     565              : extern int setstate_r (char *__restrict __statebuf,
     566              :                        struct random_data *__restrict __buf)
     567              :      __THROW __nonnull ((1, 2));
     568              : # endif /* Use misc.  */
     569              : #endif  /* Use extended X/Open || misc. */
     570              : 
     571              : 
     572              : /* Return a random integer between 0 and RAND_MAX inclusive.  */
     573              : extern int rand (void) __THROW;
     574              : /* Seed the random number generator with the given number.  */
     575              : extern void srand (unsigned int __seed) __THROW;
     576              : 
     577              : #ifdef __USE_POSIX199506
     578              : /* Reentrant interface according to POSIX.1.  */
     579              : extern int rand_r (unsigned int *__seed) __THROW;
     580              : #endif
     581              : 
     582              : 
     583              : #if defined __USE_MISC || defined __USE_XOPEN
     584              : /* System V style 48-bit random number generator functions.  */
     585              : 
     586              : /* Return non-negative, double-precision floating-point value in [0.0,1.0).  */
     587              : extern double drand48 (void) __THROW;
     588              : extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1));
     589              : 
     590              : /* Return non-negative, long integer in [0,2^31).  */
     591              : extern long int lrand48 (void) __THROW;
     592              : extern long int nrand48 (unsigned short int __xsubi[3])
     593              :      __THROW __nonnull ((1));
     594              : 
     595              : /* Return signed, long integers in [-2^31,2^31).  */
     596              : extern long int mrand48 (void) __THROW;
     597              : extern long int jrand48 (unsigned short int __xsubi[3])
     598              :      __THROW __nonnull ((1));
     599              : 
     600              : /* Seed random number generator.  */
     601              : extern void srand48 (long int __seedval) __THROW;
     602              : extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     603              :      __THROW __nonnull ((1));
     604              : extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1));
     605              : 
     606              : # ifdef __USE_MISC
     607              : /* Data structure for communication with thread safe versions.  This
     608              :    type is to be regarded as opaque.  It's only exported because users
     609              :    have to allocate objects of this type.  */
     610              : struct drand48_data
     611              :   {
     612              :     unsigned short int __x[3];  /* Current state.  */
     613              :     unsigned short int __old_x[3]; /* Old state.  */
     614              :     unsigned short int __c;     /* Additive const. in congruential formula.  */
     615              :     unsigned short int __init;  /* Flag for initializing.  */
     616              :     __extension__ unsigned long long int __a;   /* Factor in congruential
     617              :                                                    formula.  */
     618              :   };
     619              : 
     620              : /* Return non-negative, double-precision floating-point value in [0.0,1.0).  */
     621              : extern int drand48_r (struct drand48_data *__restrict __buffer,
     622              :                       double *__restrict __result) __THROW __nonnull ((1, 2));
     623              : extern int erand48_r (unsigned short int __xsubi[3],
     624              :                       struct drand48_data *__restrict __buffer,
     625              :                       double *__restrict __result) __THROW __nonnull ((1, 2));
     626              : 
     627              : /* Return non-negative, long integer in [0,2^31).  */
     628              : extern int lrand48_r (struct drand48_data *__restrict __buffer,
     629              :                       long int *__restrict __result)
     630              :      __THROW __nonnull ((1, 2));
     631              : extern int nrand48_r (unsigned short int __xsubi[3],
     632              :                       struct drand48_data *__restrict __buffer,
     633              :                       long int *__restrict __result)
     634              :      __THROW __nonnull ((1, 2));
     635              : 
     636              : /* Return signed, long integers in [-2^31,2^31).  */
     637              : extern int mrand48_r (struct drand48_data *__restrict __buffer,
     638              :                       long int *__restrict __result)
     639              :      __THROW __nonnull ((1, 2));
     640              : extern int jrand48_r (unsigned short int __xsubi[3],
     641              :                       struct drand48_data *__restrict __buffer,
     642              :                       long int *__restrict __result)
     643              :      __THROW __nonnull ((1, 2));
     644              : 
     645              : /* Seed random number generator.  */
     646              : extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     647              :      __THROW __nonnull ((2));
     648              : 
     649              : extern int seed48_r (unsigned short int __seed16v[3],
     650              :                      struct drand48_data *__buffer) __THROW __nonnull ((1, 2));
     651              : 
     652              : extern int lcong48_r (unsigned short int __param[7],
     653              :                       struct drand48_data *__buffer)
     654              :      __THROW __nonnull ((1, 2));
     655              : 
     656              : /* Return a random integer between zero and 2**32-1 (inclusive).  */
     657              : extern __uint32_t arc4random (void)
     658              :      __THROW __wur;
     659              : 
     660              : /* Fill the buffer with random data.  */
     661              : extern void arc4random_buf (void *__buf, size_t __size)
     662              :      __THROW __nonnull ((1));
     663              : 
     664              : /* Return a random number between zero (inclusive) and the specified
     665              :    limit (exclusive).  */
     666              : extern __uint32_t arc4random_uniform (__uint32_t __upper_bound)
     667              :      __THROW __wur;
     668              : # endif /* Use misc.  */
     669              : #endif  /* Use misc or X/Open.  */
     670              : 
     671              : /* Allocate SIZE bytes of memory.  */
     672              : extern void *malloc (size_t __size) __THROW __attribute_malloc__
     673              :      __attribute_alloc_size__ ((1)) __wur;
     674              : /* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
     675              : extern void *calloc (size_t __nmemb, size_t __size)
     676              :      __THROW __attribute_malloc__ __attribute_alloc_size__ ((1, 2)) __wur;
     677              : 
     678              : /* Re-allocate the previously allocated block
     679              :    in PTR, making the new block SIZE bytes long.  */
     680              : /* __attribute_malloc__ is not used, because if realloc returns
     681              :    the same pointer that was passed to it, aliasing needs to be allowed
     682              :    between objects pointed by the old and new pointers.  */
     683              : extern void *realloc (void *__ptr, size_t __size)
     684              :      __THROW __attribute_warn_unused_result__ __attribute_alloc_size__ ((2));
     685              : 
     686              : /* Free a block allocated by `malloc', `realloc' or `calloc'.  */
     687              : extern void free (void *__ptr) __THROW;
     688              : 
     689              : #ifdef __USE_MISC
     690              : /* Re-allocate the previously allocated block in PTR, making the new
     691              :    block large enough for NMEMB elements of SIZE bytes each.  */
     692              : /* __attribute_malloc__ is not used, because if reallocarray returns
     693              :    the same pointer that was passed to it, aliasing needs to be allowed
     694              :    between objects pointed by the old and new pointers.  */
     695              : extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
     696              :      __THROW __attribute_warn_unused_result__
     697              :      __attribute_alloc_size__ ((2, 3))
     698              :     __attr_dealloc_free;
     699              : 
     700              : /* Add reallocarray as its own deallocator.  */
     701              : extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
     702              :      __THROW __attr_dealloc (reallocarray, 1);
     703              : #endif
     704              : 
     705              : #ifdef __USE_MISC
     706              : # include <alloca.h>
     707              : #endif /* Use misc.  */
     708              : 
     709              : #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
     710              :     || defined __USE_MISC
     711              : /* Allocate SIZE bytes on a page boundary.  The storage cannot be freed.  */
     712              : extern void *valloc (size_t __size) __THROW __attribute_malloc__
     713              :      __attribute_alloc_size__ ((1)) __wur;
     714              : #endif
     715              : 
     716              : #ifdef __USE_XOPEN2K
     717              : /* Allocate memory of SIZE bytes with an alignment of ALIGNMENT.  */
     718              : extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     719              :      __THROW __nonnull ((1)) __wur;
     720              : #endif
     721              : 
     722              : #ifdef __USE_ISOC11
     723              : /* ISO C variant of aligned allocation.  */
     724              : extern void *aligned_alloc (size_t __alignment, size_t __size)
     725              :      __THROW __attribute_malloc__ __attribute_alloc_align__ ((1))
     726              :      __attribute_alloc_size__ ((2)) __wur;
     727              : #endif
     728              : 
     729              : /* Abort execution and generate a core-dump.  */
     730              : extern void abort (void) __THROW __attribute__ ((__noreturn__));
     731              : 
     732              : 
     733              : /* Register a function to be called when `exit' is called.  */
     734              : extern int atexit (void (*__func) (void)) __THROW __nonnull ((1));
     735              : 
     736              : #if defined __USE_ISOC11 || defined __USE_ISOCXX11
     737              : /* Register a function to be called when `quick_exit' is called.  */
     738              : # ifdef __cplusplus
     739              : extern "C++" int at_quick_exit (void (*__func) (void))
     740              :      __THROW __asm ("at_quick_exit") __nonnull ((1));
     741              : # else
     742              : extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1));
     743              : # endif
     744              : #endif
     745              : 
     746              : #ifdef  __USE_MISC
     747              : /* Register a function to be called with the status
     748              :    given to `exit' and the given argument.  */
     749              : extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     750              :      __THROW __nonnull ((1));
     751              : #endif
     752              : 
     753              : /* Call all functions registered with `atexit' and `on_exit',
     754              :    in the reverse of the order in which they were registered,
     755              :    perform stdio cleanup, and terminate program execution with STATUS.  */
     756              : extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
     757              : 
     758              : #if defined __USE_ISOC11 || defined __USE_ISOCXX11
     759              : /* Call all functions registered with `at_quick_exit' in the reverse
     760              :    of the order in which they were registered and terminate program
     761              :    execution with STATUS.  */
     762              : extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__));
     763              : #endif
     764              : 
     765              : #ifdef __USE_ISOC99
     766              : /* Terminate the program with STATUS without calling any of the
     767              :    functions registered with `atexit' or `on_exit'.  */
     768              : extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__));
     769              : #endif
     770              : 
     771              : 
     772              : /* Return the value of envariable NAME, or NULL if it doesn't exist.  */
     773              : extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur;
     774              : 
     775              : #ifdef __USE_GNU
     776              : /* This function is similar to the above but returns NULL if the
     777              :    programs is running with SUID or SGID enabled.  */
     778              : extern char *secure_getenv (const char *__name)
     779              :      __THROW __nonnull ((1)) __wur;
     780              : #endif
     781              : 
     782              : #if defined __USE_MISC || defined __USE_XOPEN
     783              : /* The SVID says this is in <stdio.h>, but this seems a better place.     */
     784              : /* Put STRING, which is of the form "NAME=VALUE", in the environment.
     785              :    If there is no `=', remove NAME from the environment.  */
     786              : extern int putenv (char *__string) __THROW __nonnull ((1));
     787              : #endif
     788              : 
     789              : #ifdef __USE_XOPEN2K
     790              : /* Set NAME to VALUE in the environment.
     791              :    If REPLACE is nonzero, overwrite an existing value.  */
     792              : extern int setenv (const char *__name, const char *__value, int __replace)
     793              :      __THROW __nonnull ((2));
     794              : 
     795              : /* Remove the variable NAME from the environment.  */
     796              : extern int unsetenv (const char *__name) __THROW __nonnull ((1));
     797              : #endif
     798              : 
     799              : #ifdef  __USE_MISC
     800              : /* The `clearenv' was planned to be added to POSIX.1 but probably
     801              :    never made it.  Nevertheless the POSIX.9 standard (POSIX bindings
     802              :    for Fortran 77) requires this function.  */
     803              : extern int clearenv (void) __THROW;
     804              : #endif
     805              : 
     806              : 
     807              : #if defined __USE_MISC \
     808              :     || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8)
     809              : /* Generate a unique temporary file name from TEMPLATE.
     810              :    The last six characters of TEMPLATE must be "XXXXXX";
     811              :    they are replaced with a string that makes the file name unique.
     812              :    Always returns TEMPLATE, it's either a temporary file name or a null
     813              :    string if it cannot get a unique file name.  */
     814              : extern char *mktemp (char *__template) __THROW __nonnull ((1));
     815              : #endif
     816              : 
     817              : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
     818              : /* Generate a unique temporary file name from TEMPLATE.
     819              :    The last six characters of TEMPLATE must be "XXXXXX";
     820              :    they are replaced with a string that makes the filename unique.
     821              :    Returns a file descriptor open on the file for reading and writing,
     822              :    or -1 if it cannot create a uniquely-named file.
     823              : 
     824              :    This function is a possible cancellation point and therefore not
     825              :    marked with __THROW.  */
     826              : # ifndef __USE_FILE_OFFSET64
     827              : extern int mkstemp (char *__template) __nonnull ((1)) __wur;
     828              : # else
     829              : #  ifdef __REDIRECT
     830              : extern int __REDIRECT (mkstemp, (char *__template), mkstemp64)
     831              :      __nonnull ((1)) __wur;
     832              : #  else
     833              : #   define mkstemp mkstemp64
     834              : #  endif
     835              : # endif
     836              : # ifdef __USE_LARGEFILE64
     837              : extern int mkstemp64 (char *__template) __nonnull ((1)) __wur;
     838              : # endif
     839              : #endif
     840              : 
     841              : #ifdef __USE_MISC
     842              : /* Similar to mkstemp, but the template can have a suffix after the
     843              :    XXXXXX.  The length of the suffix is specified in the second
     844              :    parameter.
     845              : 
     846              :    This function is a possible cancellation point and therefore not
     847              :    marked with __THROW.  */
     848              : # ifndef __USE_FILE_OFFSET64
     849              : extern int mkstemps (char *__template, int __suffixlen) __nonnull ((1)) __wur;
     850              : # else
     851              : #  ifdef __REDIRECT
     852              : extern int __REDIRECT (mkstemps, (char *__template, int __suffixlen),
     853              :                        mkstemps64) __nonnull ((1)) __wur;
     854              : #  else
     855              : #   define mkstemps mkstemps64
     856              : #  endif
     857              : # endif
     858              : # ifdef __USE_LARGEFILE64
     859              : extern int mkstemps64 (char *__template, int __suffixlen)
     860              :      __nonnull ((1)) __wur;
     861              : # endif
     862              : #endif
     863              : 
     864              : #ifdef __USE_XOPEN2K8
     865              : /* Create a unique temporary directory from TEMPLATE.
     866              :    The last six characters of TEMPLATE must be "XXXXXX";
     867              :    they are replaced with a string that makes the directory name unique.
     868              :    Returns TEMPLATE, or a null pointer if it cannot get a unique name.
     869              :    The directory is created mode 700.  */
     870              : extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur;
     871              : #endif
     872              : 
     873              : #ifdef __USE_GNU
     874              : /* Generate a unique temporary file name from TEMPLATE similar to
     875              :    mkstemp.  But allow the caller to pass additional flags which are
     876              :    used in the open call to create the file..
     877              : 
     878              :    This function is a possible cancellation point and therefore not
     879              :    marked with __THROW.  */
     880              : # ifndef __USE_FILE_OFFSET64
     881              : extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur;
     882              : # else
     883              : #  ifdef __REDIRECT
     884              : extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64)
     885              :      __nonnull ((1)) __wur;
     886              : #  else
     887              : #   define mkostemp mkostemp64
     888              : #  endif
     889              : # endif
     890              : # ifdef __USE_LARGEFILE64
     891              : extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur;
     892              : # endif
     893              : 
     894              : /* Similar to mkostemp, but the template can have a suffix after the
     895              :    XXXXXX.  The length of the suffix is specified in the second
     896              :    parameter.
     897              : 
     898              :    This function is a possible cancellation point and therefore not
     899              :    marked with __THROW.  */
     900              : # ifndef __USE_FILE_OFFSET64
     901              : extern int mkostemps (char *__template, int __suffixlen, int __flags)
     902              :      __nonnull ((1)) __wur;
     903              : # else
     904              : #  ifdef __REDIRECT
     905              : extern int __REDIRECT (mkostemps, (char *__template, int __suffixlen,
     906              :                                    int __flags), mkostemps64)
     907              :      __nonnull ((1)) __wur;
     908              : #  else
     909              : #   define mkostemps mkostemps64
     910              : #  endif
     911              : # endif
     912              : # ifdef __USE_LARGEFILE64
     913              : extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
     914              :      __nonnull ((1)) __wur;
     915              : # endif
     916              : #endif
     917              : 
     918              : 
     919              : /* Execute the given line as a shell command.
     920              : 
     921              :    This function is a cancellation point and therefore not marked with
     922              :    __THROW.  */
     923              : extern int system (const char *__command) __wur;
     924              : 
     925              : 
     926              : #ifdef  __USE_GNU
     927              : /* Return a malloc'd string containing the canonical absolute name of the
     928              :    existing named file.  */
     929              : extern char *canonicalize_file_name (const char *__name)
     930              :      __THROW __nonnull ((1)) __attribute_malloc__
     931              :      __attr_dealloc_free __wur;
     932              : #endif
     933              : 
     934              : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     935              : /* Return the canonical absolute name of file NAME.  If RESOLVED is
     936              :    null, the result is malloc'd; otherwise, if the canonical name is
     937              :    PATH_MAX chars or more, returns null with `errno' set to
     938              :    ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
     939              :    returns the name in RESOLVED.  */
     940              : extern char *realpath (const char *__restrict __name,
     941              :                        char *__restrict __resolved) __THROW __wur;
     942              : #endif
     943              : 
     944              : 
     945              : /* Shorthand for type of comparison functions.  */
     946              : #ifndef __COMPAR_FN_T
     947              : # define __COMPAR_FN_T
     948              : typedef int (*__compar_fn_t) (const void *, const void *);
     949              : 
     950              : # ifdef __USE_GNU
     951              : typedef __compar_fn_t comparison_fn_t;
     952              : # endif
     953              : #endif
     954              : #ifdef __USE_GNU
     955              : typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
     956              : #endif
     957              : 
     958              : /* Do a binary search for KEY in BASE, which consists of NMEMB elements
     959              :    of SIZE bytes each, using COMPAR to perform the comparisons.  */
     960              : extern void *bsearch (const void *__key, const void *__base,
     961              :                       size_t __nmemb, size_t __size, __compar_fn_t __compar)
     962              :      __nonnull ((1, 2, 5)) __wur;
     963              : 
     964              : #ifdef __USE_EXTERN_INLINES
     965              : # include <bits/stdlib-bsearch.h>
     966              : #endif
     967              : 
     968              : /* Sort NMEMB elements of BASE, of SIZE bytes each,
     969              :    using COMPAR to perform the comparisons.  */
     970              : extern void qsort (void *__base, size_t __nmemb, size_t __size,
     971              :                    __compar_fn_t __compar) __nonnull ((1, 4));
     972              : #ifdef __USE_GNU
     973              : extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
     974              :                      __compar_d_fn_t __compar, void *__arg)
     975              :   __nonnull ((1, 4));
     976              : #endif
     977              : 
     978              : 
     979              : /* Return the absolute value of X.  */
     980              : extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
     981              : extern long int labs (long int __x) __THROW __attribute__ ((__const__)) __wur;
     982              : 
     983              : #ifdef __USE_ISOC99
     984              : __extension__ extern long long int llabs (long long int __x)
     985              :      __THROW __attribute__ ((__const__)) __wur;
     986              : #endif
     987              : 
     988              : 
     989              : /* Return the `div_t', `ldiv_t' or `lldiv_t' representation
     990              :    of the value of NUMER over DENOM. */
     991              : /* GCC may have built-ins for these someday.  */
     992              : extern div_t div (int __numer, int __denom)
     993              :      __THROW __attribute__ ((__const__)) __wur;
     994              : extern ldiv_t ldiv (long int __numer, long int __denom)
     995              :      __THROW __attribute__ ((__const__)) __wur;
     996              : 
     997              : #ifdef __USE_ISOC99
     998              : __extension__ extern lldiv_t lldiv (long long int __numer,
     999              :                                     long long int __denom)
    1000              :      __THROW __attribute__ ((__const__)) __wur;
    1001              : #endif
    1002              : 
    1003              : 
    1004              : #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
    1005              :     || defined __USE_MISC
    1006              : /* Convert floating point numbers to strings.  The returned values are
    1007              :    valid only until another call to the same function.  */
    1008              : 
    1009              : /* Convert VALUE to a string with NDIGIT digits and return a pointer to
    1010              :    this.  Set *DECPT with the position of the decimal character and *SIGN
    1011              :    with the sign of the number.  */
    1012              : extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
    1013              :                    int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur;
    1014              : 
    1015              : /* Convert VALUE to a string rounded to NDIGIT decimal digits.  Set *DECPT
    1016              :    with the position of the decimal character and *SIGN with the sign of
    1017              :    the number.  */
    1018              : extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
    1019              :                    int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur;
    1020              : 
    1021              : /* If possible convert VALUE to a string with NDIGIT significant digits.
    1022              :    Otherwise use exponential representation.  The resulting string will
    1023              :    be written to BUF.  */
    1024              : extern char *gcvt (double __value, int __ndigit, char *__buf)
    1025              :      __THROW __nonnull ((3)) __wur;
    1026              : #endif
    1027              : 
    1028              : #ifdef __USE_MISC
    1029              : /* Long double versions of above functions.  */
    1030              : extern char *qecvt (long double __value, int __ndigit,
    1031              :                     int *__restrict __decpt, int *__restrict __sign)
    1032              :      __THROW __nonnull ((3, 4)) __wur;
    1033              : extern char *qfcvt (long double __value, int __ndigit,
    1034              :                     int *__restrict __decpt, int *__restrict __sign)
    1035              :      __THROW __nonnull ((3, 4)) __wur;
    1036              : extern char *qgcvt (long double __value, int __ndigit, char *__buf)
    1037              :      __THROW __nonnull ((3)) __wur;
    1038              : 
    1039              : 
    1040              : /* Reentrant version of the functions above which provide their own
    1041              :    buffers.  */
    1042              : extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
    1043              :                    int *__restrict __sign, char *__restrict __buf,
    1044              :                    size_t __len) __THROW __nonnull ((3, 4, 5));
    1045              : extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
    1046              :                    int *__restrict __sign, char *__restrict __buf,
    1047              :                    size_t __len) __THROW __nonnull ((3, 4, 5));
    1048              : 
    1049              : extern int qecvt_r (long double __value, int __ndigit,
    1050              :                     int *__restrict __decpt, int *__restrict __sign,
    1051              :                     char *__restrict __buf, size_t __len)
    1052              :      __THROW __nonnull ((3, 4, 5));
    1053              : extern int qfcvt_r (long double __value, int __ndigit,
    1054              :                     int *__restrict __decpt, int *__restrict __sign,
    1055              :                     char *__restrict __buf, size_t __len)
    1056              :      __THROW __nonnull ((3, 4, 5));
    1057              : #endif  /* misc */
    1058              : 
    1059              : 
    1060              : /* Return the length of the multibyte character
    1061              :    in S, which is no longer than N.  */
    1062              : extern int mblen (const char *__s, size_t __n) __THROW;
    1063              : /* Return the length of the given multibyte character,
    1064              :    putting its `wchar_t' representation in *PWC.  */
    1065              : extern int mbtowc (wchar_t *__restrict __pwc,
    1066              :                    const char *__restrict __s, size_t __n) __THROW;
    1067              : /* Put the multibyte character represented
    1068              :    by WCHAR in S, returning its length.  */
    1069              : extern int wctomb (char *__s, wchar_t __wchar) __THROW;
    1070              : 
    1071              : 
    1072              : /* Convert a multibyte string to a wide char string.  */
    1073              : extern size_t mbstowcs (wchar_t *__restrict  __pwcs,
    1074              :                         const char *__restrict __s, size_t __n) __THROW
    1075              :     __attr_access ((__read_only__, 2));
    1076              : /* Convert a wide char string to multibyte string.  */
    1077              : extern size_t wcstombs (char *__restrict __s,
    1078              :                         const wchar_t *__restrict __pwcs, size_t __n)
    1079              :      __THROW
    1080              :   __fortified_attr_access (__write_only__, 1, 3)
    1081              :   __attr_access ((__read_only__, 2));
    1082              : 
    1083              : #ifdef __USE_MISC
    1084              : /* Determine whether the string value of RESPONSE matches the affirmation
    1085              :    or negative response expression as specified by the LC_MESSAGES category
    1086              :    in the program's current locale.  Returns 1 if affirmative, 0 if
    1087              :    negative, and -1 if not matching.  */
    1088              : extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur;
    1089              : #endif
    1090              : 
    1091              : 
    1092              : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
    1093              : /* Parse comma separated suboption from *OPTIONP and match against
    1094              :    strings in TOKENS.  If found return index and set *VALUEP to
    1095              :    optional value introduced by an equal sign.  If the suboption is
    1096              :    not part of TOKENS return in *VALUEP beginning of unknown
    1097              :    suboption.  On exit *OPTIONP is set to the beginning of the next
    1098              :    token or at the terminating NUL character.  */
    1099              : extern int getsubopt (char **__restrict __optionp,
    1100              :                       char *const *__restrict __tokens,
    1101              :                       char **__restrict __valuep)
    1102              :      __THROW __nonnull ((1, 2, 3)) __wur;
    1103              : #endif
    1104              : 
    1105              : 
    1106              : /* X/Open pseudo terminal handling.  */
    1107              : 
    1108              : #ifdef __USE_XOPEN2KXSI
    1109              : /* Return a master pseudo-terminal handle.  */
    1110              : extern int posix_openpt (int __oflag) __wur;
    1111              : #endif
    1112              : 
    1113              : #ifdef __USE_XOPEN_EXTENDED
    1114              : /* The next four functions all take a master pseudo-tty fd and
    1115              :    perform an operation on the associated slave:  */
    1116              : 
    1117              : /* Chown the slave to the calling user.  */
    1118              : extern int grantpt (int __fd) __THROW;
    1119              : 
    1120              : /* Release an internal lock so the slave can be opened.
    1121              :    Call after grantpt().  */
    1122              : extern int unlockpt (int __fd) __THROW;
    1123              : 
    1124              : /* Return the pathname of the pseudo terminal slave associated with
    1125              :    the master FD is open on, or NULL on errors.
    1126              :    The returned storage is good until the next call to this function.  */
    1127              : extern char *ptsname (int __fd) __THROW __wur;
    1128              : #endif
    1129              : 
    1130              : #ifdef __USE_GNU
    1131              : /* Store at most BUFLEN characters of the pathname of the slave pseudo
    1132              :    terminal associated with the master FD is open on in BUF.
    1133              :    Return 0 on success, otherwise an error number.  */
    1134              : extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
    1135              :      __THROW __nonnull ((2)) __fortified_attr_access (__write_only__, 2, 3);
    1136              : 
    1137              : /* Open a master pseudo terminal and return its file descriptor.  */
    1138              : extern int getpt (void);
    1139              : #endif
    1140              : 
    1141              : #ifdef __USE_MISC
    1142              : /* Put the 1 minute, 5 minute and 15 minute load averages into the first
    1143              :    NELEM elements of LOADAVG.  Return the number written (never more than
    1144              :    three, but may be less than NELEM), or -1 if an error occurred.  */
    1145              : extern int getloadavg (double __loadavg[], int __nelem)
    1146              :      __THROW __nonnull ((1));
    1147              : #endif
    1148              : 
    1149              : #if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K
    1150              : /* Return the index into the active-logins file (utmp) for
    1151              :    the controlling terminal.  */
    1152              : extern int ttyslot (void) __THROW;
    1153              : #endif
    1154              : 
    1155              : #include <bits/stdlib-float.h>
    1156              : 
    1157              : /* Define some macros helping to catch buffer overflows.  */
    1158              : #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
    1159              : # include <bits/stdlib.h>
    1160              : #endif
    1161              : 
    1162              : #include <bits/floatn.h>
    1163              : #if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
    1164              : # include <bits/stdlib-ldbl.h>
    1165              : #endif
    1166              : 
    1167              : __END_DECLS
    1168              : 
    1169              : #endif /* stdlib.h  */
        

Generated by: LCOV version 2.0-1