LTP GCOV extension - code coverage report
Current view: directory - usr/include - stdlib.h
Test: YAORB-0.2.info
Date: 2006-02-27 Instrumented lines: 3
Code covered: 100.0 % Executed lines: 3

       1                 : /* Copyright (C) 1991-2002, 2003, 2004 Free Software Foundation, Inc.
       2                 :    This file is part of the GNU C Library.
       3                 : 
       4                 :    The GNU C Library is free software; you can redistribute it and/or
       5                 :    modify it under the terms of the GNU Lesser General Public
       6                 :    License as published by the Free Software Foundation; either
       7                 :    version 2.1 of the License, or (at your option) any later version.
       8                 : 
       9                 :    The GNU C Library is distributed in the hope that it will be useful,
      10                 :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      11                 :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12                 :    Lesser General Public License for more details.
      13                 : 
      14                 :    You should have received a copy of the GNU Lesser General Public
      15                 :    License along with the GNU C Library; if not, write to the Free
      16                 :    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
      17                 :    02111-1307 USA.  */
      18                 : 
      19                 : /*
      20                 :  *      ISO C99 Standard: 7.20 General utilities        <stdlib.h>
      21                 :  */
      22                 : 
      23                 : #ifndef _STDLIB_H
      24                 : 
      25                 : #include <features.h>
      26                 : 
      27                 : /* Get size_t, wchar_t and NULL from <stddef.h>.  */
      28                 : #define         __need_size_t
      29                 : #ifndef __need_malloc_and_calloc
      30                 : # define        __need_wchar_t
      31                 : # define        __need_NULL
      32                 : #endif
      33                 : #include <stddef.h>
      34                 : 
      35                 : __BEGIN_DECLS
      36                 : 
      37                 : #ifndef __need_malloc_and_calloc
      38                 : #define _STDLIB_H       1
      39                 : 
      40                 : #if defined __USE_XOPEN && !defined _SYS_WAIT_H
      41                 : /* XPG requires a few symbols from <sys/wait.h> being defined.  */
      42                 : # include <bits/waitflags.h>
      43                 : # include <bits/waitstatus.h>
      44                 : 
      45                 : # ifdef __USE_BSD
      46                 : 
      47                 : /* Lots of hair to allow traditional BSD use of `union wait'
      48                 :    as well as POSIX.1 use of `int' for the status word.  */
      49                 : 
      50                 : #  if defined __GNUC__ && !defined __cplusplus
      51                 : #   define __WAIT_INT(status)                                                 \
      52                 :   (__extension__ ({ union { __typeof(status) __in; int __i; } __u;            \
      53                 :                     __u.__in = (status); __u.__i; }))
      54                 : #  else
      55                 : #   define __WAIT_INT(status)   (*(int *) &(status))
      56                 : #  endif
      57                 : 
      58                 : /* This is the type of the argument to `wait'.  The funky union
      59                 :    causes redeclarations with ether `int *' or `union wait *' to be
      60                 :    allowed without complaint.  __WAIT_STATUS_DEFN is the type used in
      61                 :    the actual function definitions.  */
      62                 : 
      63                 : #  if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus
      64                 : #   define __WAIT_STATUS        void *
      65                 : #   define __WAIT_STATUS_DEFN   void *
      66                 : #  else
      67                 : /* This works in GCC 2.6.1 and later.  */
      68                 : typedef union
      69                 :   {
      70                 :     union wait *__uptr;
      71                 :     int *__iptr;
      72                 :   } __WAIT_STATUS __attribute__ ((__transparent_union__));
      73                 : #   define __WAIT_STATUS_DEFN   int *
      74                 : #  endif
      75                 : 
      76                 : # else /* Don't use BSD.  */
      77                 : 
      78                 : #  define __WAIT_INT(status)    (status)
      79                 : #  define __WAIT_STATUS         int *
      80                 : #  define __WAIT_STATUS_DEFN    int *
      81                 : 
      82                 : # endif /* Use BSD.  */
      83                 : 
      84                 : /* Define the macros <sys/wait.h> also would define this way.  */
      85                 : # define WEXITSTATUS(status)    __WEXITSTATUS(__WAIT_INT(status))
      86                 : # define WTERMSIG(status)       __WTERMSIG(__WAIT_INT(status))
      87                 : # define WSTOPSIG(status)       __WSTOPSIG(__WAIT_INT(status))
      88                 : # define WIFEXITED(status)      __WIFEXITED(__WAIT_INT(status))
      89                 : # define WIFSIGNALED(status)    __WIFSIGNALED(__WAIT_INT(status))
      90                 : # define WIFSTOPPED(status)     __WIFSTOPPED(__WAIT_INT(status))
      91                 : # ifdef __WIFCONTINUED
      92                 : #  define WIFCONTINUED(status)  __WIFCONTINUED(__WAIT_INT(status))
      93                 : # endif
      94                 : #endif  /* X/Open and <sys/wait.h> not included.  */
      95                 : 
      96                 : __BEGIN_NAMESPACE_STD
      97                 : /* Returned by `div'.  */
      98                 : typedef struct
      99                 :   {
     100                 :     int quot;                   /* Quotient.  */
     101                 :     int rem;                    /* Remainder.  */
     102                 :   } div_t;
     103                 : 
     104                 : /* Returned by `ldiv'.  */
     105                 : #ifndef __ldiv_t_defined
     106                 : typedef struct
     107                 :   {
     108                 :     long int quot;              /* Quotient.  */
     109                 :     long int rem;               /* Remainder.  */
     110                 :   } ldiv_t;
     111                 : # define __ldiv_t_defined       1
     112                 : #endif
     113                 : __END_NAMESPACE_STD
     114                 : 
     115                 : #if defined __USE_ISOC99 && !defined __lldiv_t_defined
     116                 : __BEGIN_NAMESPACE_C99
     117                 : /* Returned by `lldiv'.  */
     118                 : __extension__ typedef struct
     119                 :   {
     120                 :     long long int quot;         /* Quotient.  */
     121                 :     long long int rem;          /* Remainder.  */
     122                 :   } lldiv_t;
     123                 : # define __lldiv_t_defined      1
     124                 : __END_NAMESPACE_C99
     125                 : #endif
     126                 : 
     127                 : 
     128                 : /* The largest number rand will return (same as INT_MAX).  */
     129                 : #define RAND_MAX        2147483647
     130                 : 
     131                 : 
     132                 : /* We define these the same for all machines.
     133                 :    Changes from this to the outside world should be done in `_exit'.  */
     134                 : #define EXIT_FAILURE    1       /* Failing exit status.  */
     135                 : #define EXIT_SUCCESS    0       /* Successful exit status.  */
     136                 : 
     137                 : 
     138                 : /* Maximum length of a multibyte character in the current locale.  */
     139                 : #define MB_CUR_MAX      (__ctype_get_mb_cur_max ())
     140                 : extern size_t __ctype_get_mb_cur_max (void) __THROW;
     141                 : 
     142                 : 
     143                 : __BEGIN_NAMESPACE_STD
     144                 : /* Convert a string to a floating-point number.  */
     145                 : extern double atof (__const char *__nptr)
     146                 :      __THROW __attribute_pure__ __nonnull ((1));
     147                 : /* Convert a string to an integer.  */
     148                 : extern int atoi (__const char *__nptr)
     149                 :      __THROW __attribute_pure__ __nonnull ((1));
     150                 : /* Convert a string to a long integer.  */
     151                 : extern long int atol (__const char *__nptr)
     152                 :      __THROW __attribute_pure__ __nonnull ((1));
     153                 : __END_NAMESPACE_STD
     154                 : 
     155                 : #if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
     156                 : __BEGIN_NAMESPACE_C99
     157                 : /* Convert a string to a long long integer.  */
     158                 : __extension__ extern long long int atoll (__const char *__nptr)
     159                 :      __THROW __attribute_pure__ __nonnull ((1));
     160                 : __END_NAMESPACE_C99
     161                 : #endif
     162                 : 
     163                 : __BEGIN_NAMESPACE_STD
     164                 : /* Convert a string to a floating-point number.  */
     165                 : extern double strtod (__const char *__restrict __nptr,
     166                 :                       char **__restrict __endptr) __THROW __nonnull ((1));
     167                 : __END_NAMESPACE_STD
     168                 : 
     169                 : #ifdef  __USE_ISOC99
     170                 : __BEGIN_NAMESPACE_C99
     171                 : /* Likewise for `float' and `long double' sizes of floating-point numbers.  */
     172                 : extern float strtof (__const char *__restrict __nptr,
     173                 :                      char **__restrict __endptr) __THROW __nonnull ((1));
     174                 : 
     175                 : extern long double strtold (__const char *__restrict __nptr,
     176                 :                             char **__restrict __endptr)
     177                 :      __THROW __nonnull ((1));
     178                 : __END_NAMESPACE_C99
     179                 : #endif
     180                 : 
     181                 : __BEGIN_NAMESPACE_STD
     182                 : /* Convert a string to a long integer.  */
     183                 : extern long int strtol (__const char *__restrict __nptr,
     184                 :                         char **__restrict __endptr, int __base)
     185                 :      __THROW __nonnull ((1));
     186                 : /* Convert a string to an unsigned long integer.  */
     187                 : extern unsigned long int strtoul (__const char *__restrict __nptr,
     188                 :                                   char **__restrict __endptr, int __base)
     189                 :      __THROW __nonnull ((1));
     190                 : __END_NAMESPACE_C99
     191                 : 
     192                 : #if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD
     193                 : /* Convert a string to a quadword integer.  */
     194                 : __extension__
     195                 : extern long long int strtoq (__const char *__restrict __nptr,
     196                 :                              char **__restrict __endptr, int __base)
     197                 :      __THROW __nonnull ((1));
     198                 : /* Convert a string to an unsigned quadword integer.  */
     199                 : __extension__
     200                 : extern unsigned long long int strtouq (__const char *__restrict __nptr,
     201                 :                                        char **__restrict __endptr, int __base)
     202                 :      __THROW __nonnull ((1));
     203                 : #endif /* GCC and use BSD.  */
     204                 : 
     205                 : #if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
     206                 : __BEGIN_NAMESPACE_C99
     207                 : /* Convert a string to a quadword integer.  */
     208                 : __extension__
     209                 : extern long long int strtoll (__const char *__restrict __nptr,
     210                 :                               char **__restrict __endptr, int __base)
     211                 :      __THROW __nonnull ((1));
     212                 : /* Convert a string to an unsigned quadword integer.  */
     213                 : __extension__
     214                 : extern unsigned long long int strtoull (__const char *__restrict __nptr,
     215                 :                                         char **__restrict __endptr, int __base)
     216                 :      __THROW __nonnull ((1));
     217                 : __END_NAMESPACE_C99
     218                 : #endif /* ISO C99 or GCC and use MISC.  */
     219                 : 
     220                 : 
     221                 : #ifdef __USE_GNU
     222                 : /* The concept of one static locale per category is not very well
     223                 :    thought out.  Many applications will need to process its data using
     224                 :    information from several different locales.  Another application is
     225                 :    the implementation of the internationalization handling in the
     226                 :    upcoming ISO C++ standard library.  To support this another set of
     227                 :    the functions using locale data exist which have an additional
     228                 :    argument.
     229                 : 
     230                 :    Attention: all these functions are *not* standardized in any form.
     231                 :    This is a proof-of-concept implementation.  */
     232                 : 
     233                 : /* Structure for reentrant locale using functions.  This is an
     234                 :    (almost) opaque type for the user level programs.  */
     235                 : # include <xlocale.h>
     236                 : 
     237                 : /* Special versions of the functions above which take the locale to
     238                 :    use as an additional parameter.  */
     239                 : extern long int strtol_l (__const char *__restrict __nptr,
     240                 :                           char **__restrict __endptr, int __base,
     241                 :                           __locale_t __loc) __THROW __nonnull ((1, 4));
     242                 : 
     243                 : extern unsigned long int strtoul_l (__const char *__restrict __nptr,
     244                 :                                     char **__restrict __endptr,
     245                 :                                     int __base, __locale_t __loc)
     246                 :      __THROW __nonnull ((1, 4));
     247                 : 
     248                 : __extension__
     249                 : extern long long int strtoll_l (__const char *__restrict __nptr,
     250                 :                                 char **__restrict __endptr, int __base,
     251                 :                                 __locale_t __loc)
     252                 :      __THROW __nonnull ((1, 4));
     253                 : 
     254                 : __extension__
     255                 : extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
     256                 :                                           char **__restrict __endptr,
     257                 :                                           int __base, __locale_t __loc)
     258                 :      __THROW __nonnull ((1, 4));
     259                 : 
     260                 : extern double strtod_l (__const char *__restrict __nptr,
     261                 :                         char **__restrict __endptr, __locale_t __loc)
     262                 :      __THROW __nonnull ((1, 3));
     263                 : 
     264                 : extern float strtof_l (__const char *__restrict __nptr,
     265                 :                        char **__restrict __endptr, __locale_t __loc)
     266                 :      __THROW __nonnull ((1, 3));
     267                 : 
     268                 : extern long double strtold_l (__const char *__restrict __nptr,
     269                 :                               char **__restrict __endptr,
     270                 :                               __locale_t __loc) __THROW __nonnull ((1, 3));
     271                 : #endif /* GNU */
     272                 : 
     273                 : 
     274                 : /* The internal entry points for `strtoX' take an extra flag argument
     275                 :    saying whether or not to parse locale-dependent number grouping.  */
     276                 : 
     277                 : extern double __strtod_internal (__const char *__restrict __nptr,
     278                 :                                  char **__restrict __endptr, int __group)
     279                 :      __THROW __nonnull ((1));
     280                 : extern float __strtof_internal (__const char *__restrict __nptr,
     281                 :                                 char **__restrict __endptr, int __group)
     282                 :      __THROW __nonnull ((1));
     283                 : extern long double __strtold_internal (__const char *__restrict __nptr,
     284                 :                                        char **__restrict __endptr,
     285                 :                                        int __group) __THROW __nonnull ((1));
     286                 : #ifndef __strtol_internal_defined
     287                 : extern long int __strtol_internal (__const char *__restrict __nptr,
     288                 :                                    char **__restrict __endptr,
     289                 :                                    int __base, int __group)
     290                 :      __THROW __nonnull ((1));
     291                 : # define __strtol_internal_defined      1
     292                 : #endif
     293                 : #ifndef __strtoul_internal_defined
     294                 : extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
     295                 :                                              char **__restrict __endptr,
     296                 :                                              int __base, int __group)
     297                 :      __THROW __nonnull ((1));
     298                 : # define __strtoul_internal_defined     1
     299                 : #endif
     300                 : #if defined __GNUC__ || defined __USE_ISOC99
     301                 : # ifndef __strtoll_internal_defined
     302                 : __extension__
     303                 : extern long long int __strtoll_internal (__const char *__restrict __nptr,
     304                 :                                          char **__restrict __endptr,
     305                 :                                          int __base, int __group)
     306                 :      __THROW __nonnull ((1));
     307                 : #  define __strtoll_internal_defined    1
     308                 : # endif
     309                 : # ifndef __strtoull_internal_defined
     310                 : __extension__
     311                 : extern unsigned long long int __strtoull_internal (__const char *
     312                 :                                                    __restrict __nptr,
     313                 :                                                    char **__restrict __endptr,
     314                 :                                                    int __base, int __group)
     315                 :      __THROW __nonnull ((1));
     316                 : #  define __strtoull_internal_defined   1
     317                 : # endif
     318                 : #endif /* GCC */
     319                 : 
     320                 : #ifdef __USE_EXTERN_INLINES
     321                 : /* Define inline functions which call the internal entry points.  */
     322                 : 
     323                 : __BEGIN_NAMESPACE_STD
     324                 : extern __inline double
     325                 : __NTH (strtod (__const char *__restrict __nptr, char **__restrict __endptr))
     326                 : {
     327                 :   return __strtod_internal (__nptr, __endptr, 0);
     328                 : }
     329                 : extern __inline long int
     330                 : __NTH (strtol (__const char *__restrict __nptr, char **__restrict __endptr,
     331                 :                int __base))
     332                 : {
     333               3 :   return __strtol_internal (__nptr, __endptr, __base, 0);
     334                 : }
     335                 : extern __inline unsigned long int
     336                 : __NTH (strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
     337                 :                 int __base))
     338                 : {
     339                 :   return __strtoul_internal (__nptr, __endptr, __base, 0);
     340                 : }
     341                 : __END_NAMESPACE_STD
     342                 : 
     343                 : # ifdef __USE_ISOC99
     344                 : __BEGIN_NAMESPACE_C99
     345                 : extern __inline float
     346                 : __NTH (strtof (__const char *__restrict __nptr, char **__restrict __endptr))
     347                 : {
     348                 :   return __strtof_internal (__nptr, __endptr, 0);
     349                 : }
     350                 : extern __inline long double
     351                 : __NTH (strtold (__const char *__restrict __nptr, char **__restrict __endptr))
     352                 : {
     353              27 :   return __strtold_internal (__nptr, __endptr, 0);
     354                 : }
     355                 : __END_NAMESPACE_C99
     356                 : # endif
     357                 : 
     358                 : # ifdef __USE_BSD
     359                 : __extension__ extern __inline long long int
     360                 : __NTH (strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
     361                 :                int __base))
     362                 : {
     363                 :   return __strtoll_internal (__nptr, __endptr, __base, 0);
     364                 : }
     365                 : __extension__ extern __inline unsigned long long int
     366                 : __NTH (strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
     367                 :                 int __base))
     368                 : {
     369                 :   return __strtoull_internal (__nptr, __endptr, __base, 0);
     370                 : }
     371                 : # endif
     372                 : 
     373                 : # if defined __USE_MISC || defined __USE_ISOC99
     374                 : __BEGIN_NAMESPACE_C99
     375                 : __extension__ extern __inline long long int
     376                 : __NTH (strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
     377                 :                 int __base))
     378                 : {
     379                 :   return __strtoll_internal (__nptr, __endptr, __base, 0);
     380                 : }
     381                 : __extension__ extern __inline unsigned long long int
     382                 : __NTH (strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
     383                 :                  int __base))
     384                 : {
     385             514 :   return __strtoull_internal (__nptr, __endptr, __base, 0);
     386                 : }
     387                 : __END_NAMESPACE_C99
     388                 : # endif
     389                 : 
     390                 : __BEGIN_NAMESPACE_STD
     391                 : extern __inline double
     392                 : __NTH (atof (__const char *__nptr))
     393                 : {
     394                 :   return strtod (__nptr, (char **) NULL);
     395                 : }
     396                 : extern __inline int
     397                 : __NTH (atoi (__const char *__nptr))
     398                 : {
     399                 :   return (int) strtol (__nptr, (char **) NULL, 10);
     400                 : }
     401                 : extern __inline long int
     402                 : __NTH (atol (__const char *__nptr))
     403                 : {
     404                 :   return strtol (__nptr, (char **) NULL, 10);
     405                 : }
     406                 : __END_NAMESPACE_STD
     407                 : 
     408                 : # if defined __USE_MISC || defined __USE_ISOC99
     409                 : __BEGIN_NAMESPACE_C99
     410                 : __extension__ extern __inline long long int
     411                 : __NTH (atoll (__const char *__nptr))
     412                 : {
     413                 :   return strtoll (__nptr, (char **) NULL, 10);
     414                 : }
     415                 : __END_NAMESPACE_C99
     416                 : # endif
     417                 : #endif /* Optimizing and Inlining.  */
     418                 : 
     419                 : 
     420                 : #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
     421                 : /* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
     422                 :    digit first.  Returns a pointer to static storage overwritten by the
     423                 :    next call.  */
     424                 : extern char *l64a (long int __n) __THROW;
     425                 : 
     426                 : /* Read a number from a string S in base 64 as above.  */
     427                 : extern long int a64l (__const char *__s)
     428                 :      __THROW __attribute_pure__ __nonnull ((1));
     429                 : 
     430                 : #endif  /* Use SVID || extended X/Open.  */
     431                 : 
     432                 : #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED || defined __USE_BSD
     433                 : # include <sys/types.h>   /* we need int32_t... */
     434                 : 
     435                 : /* These are the functions that actually do things.  The `random', `srandom',
     436                 :    `initstate' and `setstate' functions are those from BSD Unices.
     437                 :    The `rand' and `srand' functions are required by the ANSI standard.
     438                 :    We provide both interfaces to the same random number generator.  */
     439                 : /* Return a random long integer between 0 and RAND_MAX inclusive.  */
     440                 : extern long int random (void) __THROW;
     441                 : 
     442                 : /* Seed the random number generator with the given number.  */
     443                 : extern void srandom (unsigned int __seed) __THROW;
     444                 : 
     445                 : /* Initialize the random number generator to use state buffer STATEBUF,
     446                 :    of length STATELEN, and seed it with SEED.  Optimal lengths are 8, 16,
     447                 :    32, 64, 128 and 256, the bigger the better; values less than 8 will
     448                 :    cause an error and values greater than 256 will be rounded down.  */
     449                 : extern char *initstate (unsigned int __seed, char *__statebuf,
     450                 :                         size_t __statelen) __THROW __nonnull ((2));
     451                 : 
     452                 : /* Switch the random number generator to state buffer STATEBUF,
     453                 :    which should have been previously initialized by `initstate'.  */
     454                 : extern char *setstate (char *__statebuf) __THROW __nonnull ((1));
     455                 : 
     456                 : 
     457                 : # ifdef __USE_MISC
     458                 : /* Reentrant versions of the `random' family of functions.
     459                 :    These functions all use the following data structure to contain
     460                 :    state, rather than global state variables.  */
     461                 : 
     462                 : struct random_data
     463                 :   {
     464                 :     int32_t *fptr;              /* Front pointer.  */
     465                 :     int32_t *rptr;              /* Rear pointer.  */
     466                 :     int32_t *state;             /* Array of state values.  */
     467                 :     int rand_type;              /* Type of random number generator.  */
     468                 :     int rand_deg;               /* Degree of random number generator.  */
     469                 :     int rand_sep;               /* Distance between front and rear.  */
     470                 :     int32_t *end_ptr;           /* Pointer behind state table.  */
     471                 :   };
     472                 : 
     473                 : extern int random_r (struct random_data *__restrict __buf,
     474                 :                      int32_t *__restrict __result) __THROW __nonnull ((1, 2));
     475                 : 
     476                 : extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     477                 :      __THROW __nonnull ((2));
     478                 : 
     479                 : extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
     480                 :                         size_t __statelen,
     481                 :                         struct random_data *__restrict __buf)
     482                 :      __THROW __nonnull ((2, 4));
     483                 : 
     484                 : extern int setstate_r (char *__restrict __statebuf,
     485                 :                        struct random_data *__restrict __buf)
     486                 :      __THROW __nonnull ((1, 2));
     487                 : # endif /* Use misc.  */
     488                 : #endif  /* Use SVID || extended X/Open || BSD. */
     489                 : 
     490                 : 
     491                 : __BEGIN_NAMESPACE_STD
     492                 : /* Return a random integer between 0 and RAND_MAX inclusive.  */
     493                 : extern int rand (void) __THROW;
     494                 : /* Seed the random number generator with the given number.  */
     495                 : extern void srand (unsigned int __seed) __THROW;
     496                 : __END_NAMESPACE_STD
     497                 : 
     498                 : #ifdef __USE_POSIX
     499                 : /* Reentrant interface according to POSIX.1.  */
     500                 : extern int rand_r (unsigned int *__seed) __THROW;
     501                 : #endif
     502                 : 
     503                 : 
     504                 : #if defined __USE_SVID || defined __USE_XOPEN
     505                 : /* System V style 48-bit random number generator functions.  */
     506                 : 
     507                 : /* Return non-negative, double-precision floating-point value in [0.0,1.0).  */
     508                 : extern double drand48 (void) __THROW;
     509                 : extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1));
     510                 : 
     511                 : /* Return non-negative, long integer in [0,2^31).  */
     512                 : extern long int lrand48 (void) __THROW;
     513                 : extern long int nrand48 (unsigned short int __xsubi[3])
     514                 :      __THROW __nonnull ((1));
     515                 : 
     516                 : /* Return signed, long integers in [-2^31,2^31).  */
     517                 : extern long int mrand48 (void) __THROW;
     518                 : extern long int jrand48 (unsigned short int __xsubi[3])
     519                 :      __THROW __nonnull ((1));
     520                 : 
     521                 : /* Seed random number generator.  */
     522                 : extern void srand48 (long int __seedval) __THROW;
     523                 : extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     524                 :      __THROW __nonnull ((1));
     525                 : extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1));
     526                 : 
     527                 : # ifdef __USE_MISC
     528                 : /* Data structure for communication with thread safe versions.  This
     529                 :    type is to be regarded as opaque.  It's only exported because users
     530                 :    have to allocate objects of this type.  */
     531                 : struct drand48_data
     532                 :   {
     533                 :     unsigned short int __x[3];  /* Current state.  */
     534                 :     unsigned short int __old_x[3]; /* Old state.  */
     535                 :     unsigned short int __c;     /* Additive const. in congruential formula.  */
     536                 :     unsigned short int __init;  /* Flag for initializing.  */
     537                 :     unsigned long long int __a; /* Factor in congruential formula.  */
     538                 :   };
     539                 : 
     540                 : /* Return non-negative, double-precision floating-point value in [0.0,1.0).  */
     541                 : extern int drand48_r (struct drand48_data *__restrict __buffer,
     542                 :                       double *__restrict __result) __THROW __nonnull ((1, 2));
     543                 : extern int erand48_r (unsigned short int __xsubi[3],
     544                 :                       struct drand48_data *__restrict __buffer,
     545                 :                       double *__restrict __result) __THROW __nonnull ((1, 2));
     546                 : 
     547                 : /* Return non-negative, long integer in [0,2^31).  */
     548                 : extern int lrand48_r (struct drand48_data *__restrict __buffer,
     549                 :                       long int *__restrict __result)
     550                 :      __THROW __nonnull ((1, 2));
     551                 : extern int nrand48_r (unsigned short int __xsubi[3],
     552                 :                       struct drand48_data *__restrict __buffer,
     553                 :                       long int *__restrict __result)
     554                 :      __THROW __nonnull ((1, 2));
     555                 : 
     556                 : /* Return signed, long integers in [-2^31,2^31).  */
     557                 : extern int mrand48_r (struct drand48_data *__restrict __buffer,
     558                 :                       long int *__restrict __result)
     559                 :      __THROW __nonnull ((1, 2));
     560                 : extern int jrand48_r (unsigned short int __xsubi[3],
     561                 :                       struct drand48_data *__restrict __buffer,
     562                 :                       long int *__restrict __result)
     563                 :      __THROW __nonnull ((1, 2));
     564                 : 
     565                 : /* Seed random number generator.  */
     566                 : extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     567                 :      __THROW __nonnull ((2));
     568                 : 
     569                 : extern int seed48_r (unsigned short int __seed16v[3],
     570                 :                      struct drand48_data *__buffer) __THROW __nonnull ((1, 2));
     571                 : 
     572                 : extern int lcong48_r (unsigned short int __param[7],
     573                 :                       struct drand48_data *__buffer)
     574                 :      __THROW __nonnull ((1, 2));
     575                 : # endif /* Use misc.  */
     576                 : #endif  /* Use SVID or X/Open.  */
     577                 : 
     578                 : #endif /* don't just need malloc and calloc */
     579                 : 
     580                 : #ifndef __malloc_and_calloc_defined
     581                 : # define __malloc_and_calloc_defined
     582                 : __BEGIN_NAMESPACE_STD
     583                 : /* Allocate SIZE bytes of memory.  */
     584                 : extern void *malloc (size_t __size) __THROW __attribute_malloc__;
     585                 : /* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
     586                 : extern void *calloc (size_t __nmemb, size_t __size)
     587                 :      __THROW __attribute_malloc__;
     588                 : __END_NAMESPACE_STD
     589                 : #endif
     590                 : 
     591                 : #ifndef __need_malloc_and_calloc
     592                 : __BEGIN_NAMESPACE_STD
     593                 : /* Re-allocate the previously allocated block
     594                 :    in PTR, making the new block SIZE bytes long.  */
     595                 : extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_malloc__;
     596                 : /* Free a block allocated by `malloc', `realloc' or `calloc'.  */
     597                 : extern void free (void *__ptr) __THROW;
     598                 : __END_NAMESPACE_STD
     599                 : 
     600                 : #ifdef  __USE_MISC
     601                 : /* Free a block.  An alias for `free'.  (Sun Unices).  */
     602                 : extern void cfree (void *__ptr) __THROW;
     603                 : #endif /* Use misc.  */
     604                 : 
     605                 : #if defined __USE_GNU || defined __USE_BSD || defined __USE_MISC
     606                 : # include <alloca.h>
     607                 : #endif /* Use GNU, BSD, or misc.  */
     608                 : 
     609                 : #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
     610                 : /* Allocate SIZE bytes on a page boundary.  The storage cannot be freed.  */
     611                 : extern void *valloc (size_t __size) __THROW __attribute_malloc__;
     612                 : #endif
     613                 : 
     614                 : #ifdef __USE_XOPEN2K
     615                 : /* Allocate memory of SIZE bytes with an alignment of ALIGNMENT.  */
     616                 : extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     617                 :      __THROW __attribute_malloc__ __nonnull ((1));
     618                 : #endif
     619                 : 
     620                 : __BEGIN_NAMESPACE_STD
     621                 : /* Abort execution and generate a core-dump.  */
     622                 : extern void abort (void) __THROW __attribute__ ((__noreturn__));
     623                 : 
     624                 : 
     625                 : /* Register a function to be called when `exit' is called.  */
     626                 : extern int atexit (void (*__func) (void)) __THROW __nonnull ((1));
     627                 : __END_NAMESPACE_STD
     628                 : 
     629                 : #ifdef  __USE_MISC
     630                 : /* Register a function to be called with the status
     631                 :    given to `exit' and the given argument.  */
     632                 : extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     633                 :      __THROW __nonnull ((1));
     634                 : #endif
     635                 : 
     636                 : __BEGIN_NAMESPACE_STD
     637                 : /* Call all functions registered with `atexit' and `on_exit',
     638                 :    in the reverse of the order in which they were registered
     639                 :    perform stdio cleanup, and terminate program execution with STATUS.  */
     640                 : extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
     641                 : __END_NAMESPACE_STD
     642                 : 
     643                 : #ifdef __USE_ISOC99
     644                 : __BEGIN_NAMESPACE_C99
     645                 : /* Terminate the program with STATUS without calling any of the
     646                 :    functions registered with `atexit' or `on_exit'.  */
     647                 : extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__));
     648                 : __END_NAMESPACE_C99
     649                 : #endif
     650                 : 
     651                 : 
     652                 : __BEGIN_NAMESPACE_STD
     653                 : /* Return the value of envariable NAME, or NULL if it doesn't exist.  */
     654                 : extern char *getenv (__const char *__name) __THROW __nonnull ((1));
     655                 : __END_NAMESPACE_STD
     656                 : 
     657                 : /* This function is similar to the above but returns NULL if the
     658                 :    programs is running with SUID or SGID enabled.  */
     659                 : extern char *__secure_getenv (__const char *__name) __THROW __nonnull ((1));
     660                 : 
     661                 : #if defined __USE_SVID || defined __USE_XOPEN
     662                 : /* The SVID says this is in <stdio.h>, but this seems a better place.     */
     663                 : /* Put STRING, which is of the form "NAME=VALUE", in the environment.
     664                 :    If there is no `=', remove NAME from the environment.  */
     665                 : extern int putenv (char *__string) __THROW __nonnull ((1));
     666                 : #endif
     667                 : 
     668                 : #if defined __USE_BSD || defined __USE_XOPEN2K
     669                 : /* Set NAME to VALUE in the environment.
     670                 :    If REPLACE is nonzero, overwrite an existing value.  */
     671                 : extern int setenv (__const char *__name, __const char *__value, int __replace)
     672                 :      __THROW __nonnull ((2));
     673                 : 
     674                 : /* Remove the variable NAME from the environment.  */
     675                 : extern int unsetenv (__const char *__name) __THROW;
     676                 : #endif
     677                 : 
     678                 : #ifdef  __USE_MISC
     679                 : /* The `clearenv' was planned to be added to POSIX.1 but probably
     680                 :    never made it.  Nevertheless the POSIX.9 standard (POSIX bindings
     681                 :    for Fortran 77) requires this function.  */
     682                 : extern int clearenv (void) __THROW;
     683                 : #endif
     684                 : 
     685                 : 
     686                 : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     687                 : /* Generate a unique temporary file name from TEMPLATE.
     688                 :    The last six characters of TEMPLATE must be "XXXXXX";
     689                 :    they are replaced with a string that makes the file name unique.
     690                 :    Returns TEMPLATE, or a null pointer if it cannot get a unique file name.  */
     691                 : extern char *mktemp (char *__template) __THROW __nonnull ((1));
     692                 : 
     693                 : /* Generate a unique temporary file name from TEMPLATE.
     694                 :    The last six characters of TEMPLATE must be "XXXXXX";
     695                 :    they are replaced with a string that makes the filename unique.
     696                 :    Returns a file descriptor open on the file for reading and writing,
     697                 :    or -1 if it cannot create a uniquely-named file.
     698                 : 
     699                 :    This function is a possible cancellation points and therefore not
     700                 :    marked with __THROW.  */
     701                 : # ifndef __USE_FILE_OFFSET64
     702                 : extern int mkstemp (char *__template) __nonnull ((1));
     703                 : # else
     704                 : #  ifdef __REDIRECT
     705                 : extern int __REDIRECT (mkstemp, (char *__template), mkstemp64) __nonnull ((1));
     706                 : #  else
     707                 : #   define mkstemp mkstemp64
     708                 : #  endif
     709                 : # endif
     710                 : # ifdef __USE_LARGEFILE64
     711                 : extern int mkstemp64 (char *__template) __nonnull ((1));
     712                 : # endif
     713                 : #endif
     714                 : 
     715                 : #ifdef __USE_BSD
     716                 : /* Create a unique temporary directory from TEMPLATE.
     717                 :    The last six characters of TEMPLATE must be "XXXXXX";
     718                 :    they are replaced with a string that makes the directory name unique.
     719                 :    Returns TEMPLATE, or a null pointer if it cannot get a unique name.
     720                 :    The directory is created mode 700.  */
     721                 : extern char *mkdtemp (char *__template) __THROW __nonnull ((1));
     722                 : #endif
     723                 : 
     724                 : 
     725                 : __BEGIN_NAMESPACE_STD
     726                 : /* Execute the given line as a shell command.
     727                 : 
     728                 :    This function is a cancellation point and therefore not marked with
     729                 :    __THROW.  */
     730                 : extern int system (__const char *__command);
     731                 : __END_NAMESPACE_STD
     732                 : 
     733                 : 
     734                 : #ifdef  __USE_GNU
     735                 : /* Return a malloc'd string containing the canonical absolute name of the
     736                 :    named file.  The last file name component need not exist, and may be a
     737                 :    symlink to a nonexistent file.  */
     738                 : extern char *canonicalize_file_name (__const char *__name)
     739                 :      __THROW __nonnull ((1));
     740                 : #endif
     741                 : 
     742                 : #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
     743                 : /* Return the canonical absolute name of file NAME.  The last file name
     744                 :    component need not exist, and may be a symlink to a nonexistent file.
     745                 :    If RESOLVED is null, the result is malloc'd; otherwise, if the canonical
     746                 :    name is PATH_MAX chars or more, returns null with `errno' set to
     747                 :    ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the
     748                 :    name in RESOLVED.  */
     749                 : extern char *realpath (__const char *__restrict __name,
     750                 :                        char *__restrict __resolved) __THROW;
     751                 : #endif
     752                 : 
     753                 : 
     754                 : /* Shorthand for type of comparison functions.  */
     755                 : #ifndef __COMPAR_FN_T
     756                 : # define __COMPAR_FN_T
     757                 : typedef int (*__compar_fn_t) (__const void *, __const void *);
     758                 : 
     759                 : # ifdef __USE_GNU
     760                 : typedef __compar_fn_t comparison_fn_t;
     761                 : # endif
     762                 : #endif
     763                 : 
     764                 : __BEGIN_NAMESPACE_STD
     765                 : /* Do a binary search for KEY in BASE, which consists of NMEMB elements
     766                 :    of SIZE bytes each, using COMPAR to perform the comparisons.  */
     767                 : extern void *bsearch (__const void *__key, __const void *__base,
     768                 :                       size_t __nmemb, size_t __size, __compar_fn_t __compar)
     769                 :      __nonnull ((1, 2, 5));
     770                 : 
     771                 : /* Sort NMEMB elements of BASE, of SIZE bytes each,
     772                 :    using COMPAR to perform the comparisons.  */
     773                 : extern void qsort (void *__base, size_t __nmemb, size_t __size,
     774                 :                    __compar_fn_t __compar) __nonnull ((1, 4));
     775                 : 
     776                 : 
     777                 : /* Return the absolute value of X.  */
     778                 : extern int abs (int __x) __THROW __attribute__ ((__const__));
     779                 : extern long int labs (long int __x) __THROW __attribute__ ((__const__));
     780                 : __END_NAMESPACE_STD
     781                 : 
     782                 : #ifdef __USE_ISOC99
     783                 : __extension__ extern long long int llabs (long long int __x)
     784                 :      __THROW __attribute__ ((__const__));
     785                 : #endif
     786                 : 
     787                 : 
     788                 : __BEGIN_NAMESPACE_STD
     789                 : /* Return the `div_t', `ldiv_t' or `lldiv_t' representation
     790                 :    of the value of NUMER over DENOM. */
     791                 : /* GCC may have built-ins for these someday.  */
     792                 : extern div_t div (int __numer, int __denom)
     793                 :      __THROW __attribute__ ((__const__));
     794                 : extern ldiv_t ldiv (long int __numer, long int __denom)
     795                 :      __THROW __attribute__ ((__const__));
     796                 : __END_NAMESPACE_STD
     797                 : 
     798                 : #ifdef __USE_ISOC99
     799                 : __BEGIN_NAMESPACE_C99
     800                 : __extension__ extern lldiv_t lldiv (long long int __numer,
     801                 :                                     long long int __denom)
     802                 :      __THROW __attribute__ ((__const__));
     803                 : __END_NAMESPACE_C99
     804                 : #endif
     805                 : 
     806                 : 
     807                 : #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
     808                 : /* Convert floating point numbers to strings.  The returned values are
     809                 :    valid only until another call to the same function.  */
     810                 : 
     811                 : /* Convert VALUE to a string with NDIGIT digits and return a pointer to
     812                 :    this.  Set *DECPT with the position of the decimal character and *SIGN
     813                 :    with the sign of the number.  */
     814                 : extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     815                 :                    int *__restrict __sign) __THROW __nonnull ((3, 4));
     816                 : 
     817                 : /* Convert VALUE to a string rounded to NDIGIT decimal digits.  Set *DECPT
     818                 :    with the position of the decimal character and *SIGN with the sign of
     819                 :    the number.  */
     820                 : extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     821                 :                    int *__restrict __sign) __THROW __nonnull ((3, 4));
     822                 : 
     823                 : /* If possible convert VALUE to a string with NDIGIT significant digits.
     824                 :    Otherwise use exponential representation.  The resulting string will
     825                 :    be written to BUF.  */
     826                 : extern char *gcvt (double __value, int __ndigit, char *__buf)
     827                 :      __THROW __nonnull ((3));
     828                 : 
     829                 : 
     830                 : # ifdef __USE_MISC
     831                 : /* Long double versions of above functions.  */
     832                 : extern char *qecvt (long double __value, int __ndigit,
     833                 :                     int *__restrict __decpt, int *__restrict __sign)
     834                 :      __THROW __nonnull ((3, 4));
     835                 : extern char *qfcvt (long double __value, int __ndigit,
     836                 :                     int *__restrict __decpt, int *__restrict __sign)
     837                 :      __THROW __nonnull ((3, 4));
     838                 : extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     839                 :      __THROW __nonnull ((3));
     840                 : 
     841                 : 
     842                 : /* Reentrant version of the functions above which provide their own
     843                 :    buffers.  */
     844                 : extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     845                 :                    int *__restrict __sign, char *__restrict __buf,
     846                 :                    size_t __len) __THROW __nonnull ((3, 4, 5));
     847                 : extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     848                 :                    int *__restrict __sign, char *__restrict __buf,
     849                 :                    size_t __len) __THROW __nonnull ((3, 4, 5));
     850                 : 
     851                 : extern int qecvt_r (long double __value, int __ndigit,
     852                 :                     int *__restrict __decpt, int *__restrict __sign,
     853                 :                     char *__restrict __buf, size_t __len)
     854                 :      __THROW __nonnull ((3, 4, 5));
     855                 : extern int qfcvt_r (long double __value, int __ndigit,
     856                 :                     int *__restrict __decpt, int *__restrict __sign,
     857                 :                     char *__restrict __buf, size_t __len)
     858                 :      __THROW __nonnull ((3, 4, 5));
     859                 : # endif /* misc */
     860                 : #endif  /* use MISC || use X/Open Unix */
     861                 : 
     862                 : 
     863                 : __BEGIN_NAMESPACE_STD
     864                 : /* Return the length of the multibyte character
     865                 :    in S, which is no longer than N.  */
     866                 : extern int mblen (__const char *__s, size_t __n) __THROW;
     867                 : /* Return the length of the given multibyte character,
     868                 :    putting its `wchar_t' representation in *PWC.  */
     869                 : extern int mbtowc (wchar_t *__restrict __pwc,
     870                 :                    __const char *__restrict __s, size_t __n) __THROW;
     871                 : /* Put the multibyte character represented
     872                 :    by WCHAR in S, returning its length.  */
     873                 : extern int wctomb (char *__s, wchar_t __wchar) __THROW;
     874                 : 
     875                 : 
     876                 : /* Convert a multibyte string to a wide char string.  */
     877                 : extern size_t mbstowcs (wchar_t *__restrict  __pwcs,
     878                 :                         __const char *__restrict __s, size_t __n) __THROW;
     879                 : /* Convert a wide char string to multibyte string.  */
     880                 : extern size_t wcstombs (char *__restrict __s,
     881                 :                         __const wchar_t *__restrict __pwcs, size_t __n)
     882                 :      __THROW;
     883                 : __END_NAMESPACE_STD
     884                 : 
     885                 : 
     886                 : #ifdef __USE_SVID
     887                 : /* Determine whether the string value of RESPONSE matches the affirmation
     888                 :    or negative response expression as specified by the LC_MESSAGES category
     889                 :    in the program's current locale.  Returns 1 if affirmative, 0 if
     890                 :    negative, and -1 if not matching.  */
     891                 : extern int rpmatch (__const char *__response) __THROW __nonnull ((1));
     892                 : #endif
     893                 : 
     894                 : 
     895                 : #ifdef __USE_XOPEN_EXTENDED
     896                 : /* Parse comma separated suboption from *OPTIONP and match against
     897                 :    strings in TOKENS.  If found return index and set *VALUEP to
     898                 :    optional value introduced by an equal sign.  If the suboption is
     899                 :    not part of TOKENS return in *VALUEP beginning of unknown
     900                 :    suboption.  On exit *OPTIONP is set to the beginning of the next
     901                 :    token or at the terminating NUL character.  */
     902                 : extern int getsubopt (char **__restrict __optionp,
     903                 :                       char *__const *__restrict __tokens,
     904                 :                       char **__restrict __valuep)
     905                 :      __THROW __nonnull ((1, 2, 3));
     906                 : #endif
     907                 : 
     908                 : 
     909                 : #ifdef __USE_XOPEN
     910                 : /* Setup DES tables according KEY.  */
     911                 : extern void setkey (__const char *__key) __THROW __nonnull ((1));
     912                 : #endif
     913                 : 
     914                 : 
     915                 : /* X/Open pseudo terminal handling.  */
     916                 : 
     917                 : #ifdef __USE_XOPEN2K
     918                 : /* Return a master pseudo-terminal handle.  */
     919                 : extern int posix_openpt (int __oflag);
     920                 : #endif
     921                 : 
     922                 : #ifdef __USE_XOPEN
     923                 : /* The next four functions all take a master pseudo-tty fd and
     924                 :    perform an operation on the associated slave:  */
     925                 : 
     926                 : /* Chown the slave to the calling user.  */
     927                 : extern int grantpt (int __fd) __THROW;
     928                 : 
     929                 : /* Release an internal lock so the slave can be opened.
     930                 :    Call after grantpt().  */
     931                 : extern int unlockpt (int __fd) __THROW;
     932                 : 
     933                 : /* Return the pathname of the pseudo terminal slave assoicated with
     934                 :    the master FD is open on, or NULL on errors.
     935                 :    The returned storage is good until the next call to this function.  */
     936                 : extern char *ptsname (int __fd) __THROW;
     937                 : #endif
     938                 : 
     939                 : #ifdef __USE_GNU
     940                 : /* Store at most BUFLEN characters of the pathname of the slave pseudo
     941                 :    terminal associated with the master FD is open on in BUF.
     942                 :    Return 0 on success, otherwise an error number.  */
     943                 : extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
     944                 :      __THROW __nonnull ((2));
     945                 : 
     946                 : /* Open a master pseudo terminal and return its file descriptor.  */
     947                 : extern int getpt (void);
     948                 : #endif
     949                 : 
     950                 : #ifdef __USE_BSD
     951                 : /* Put the 1 minute, 5 minute and 15 minute load averages into the first
     952                 :    NELEM elements of LOADAVG.  Return the number written (never more than
     953                 :    three, but may be less than NELEM), or -1 if an error occurred.  */
     954                 : extern int getloadavg (double __loadavg[], int __nelem)
     955                 :      __THROW __nonnull ((1));
     956                 : #endif
     957                 : 
     958                 : #endif /* don't just need malloc and calloc */
     959                 : #undef __need_malloc_and_calloc
     960                 : 
     961                 : __END_DECLS
     962                 : 
     963                 : #endif /* stdlib.h  */

Generated by: LTP GCOV extension version 1.4