LCOV - code coverage report
Current view: top level - usr/include - stdlib.h (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:262480d) Lines: 0 2 0.0 %
Date: 2024-11-22 07:00:40 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 1.15