Mon Mar 25 03:35:16 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
[kopensolaris-gnu/glibc.git] / stdlib / stdlib.h
index ba5a231..793c641 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -156,17 +156,32 @@ extern __inline long int atol (__const char *__nptr)
 #endif /* Optimizing GCC >=2.  */
 
 
+#ifdef __USE_SVID
+/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
+   digit first.  Returns a pointer to static storage overwritten by the
+   next call.  */
+extern char *l64a __P ((long int __n));
+
+/* Read a number from a string in base 64 as above.  */
+extern long int a64l __P ((const char *));
+#endif
+
+
 /* Return a random integer between 0 and RAND_MAX inclusive.  */
 extern int rand __P ((void));
 /* Seed the random number generator with the given number.  */
 extern void srand __P ((unsigned int __seed));
 
+#ifdef __USE_BSD
+
+#include <sys/types.h> /* we need int32_t... */
+
 /* These are the functions that actually do things.  The `random', `srandom',
    `initstate' and `setstate' functions are those from BSD Unices.
    The `rand' and `srand' functions are required by the ANSI standard.
    We provide both interfaces to the same random number generator.  */
 /* Return a random long integer between 0 and RAND_MAX inclusive.  */
-extern long int __random __P ((void));
+extern int32_t __random __P ((void));
 /* Seed the random number generator with the given number.  */
 extern void __srandom __P ((unsigned int __seed));
 
@@ -180,7 +195,6 @@ extern __ptr_t __initstate __P ((unsigned int __seed, __ptr_t __statebuf,
    which should have been previously initialized by `initstate'.  */
 extern __ptr_t __setstate __P ((__ptr_t __statebuf));
 
-#ifdef __USE_BSD
 extern long int random __P ((void));
 extern void srandom __P ((unsigned int __seed));
 extern __ptr_t initstate __P ((unsigned int __seed, __ptr_t __statebuf,
@@ -206,22 +220,22 @@ extern __inline __ptr_t setstate (__ptr_t __statebuf)
 
 struct random_data
   {
-    long int *fptr;            /* Front pointer.  */
-    long int *rptr;            /* Rear pointer.  */
-    long int *state;           /* Array of state values.  */
+    int32_t *fptr;             /* Front pointer.  */
+    int32_t *rptr;             /* Rear pointer.  */
+    int32_t *state;            /* Array of state values.  */
     int rand_type;             /* Type of random number generator.  */
     int rand_deg;              /* Degree of random number generator.  */
     int rand_sep;              /* Distance between front and rear.  */
-    long int *end_ptr;         /* Pointer behind state table.  */
+    int32_t *end_ptr;          /* Pointer behind state table.  */
   };
 
-extern int __random_r __P ((struct random_data *__buf, long int *__result));
+extern int __random_r __P ((struct random_data *__buf, int32_t *__result));
+extern int random_r __P ((struct random_data *__buf, int32_t *__result));
 extern int __srandom_r __P ((unsigned int __seed, struct random_data *__buf));
 extern int __initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
                               size_t __statelen, struct random_data *__buf));
 extern int __setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
 
-extern int random_r __P ((struct random_data *__buf, long int *__result));
 extern int srandom_r __P ((unsigned int __seed, struct random_data *__buf));
 extern int initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
                             size_t __statelen, struct random_data *__buf));
@@ -337,6 +351,9 @@ extern int putenv __P ((__const char *__string));
    If REPLACE is nonzero, overwrite an existing value.  */
 extern int setenv __P ((__const char *__name, __const char *__value,
                        int __replace));
+
+/* Remove the variable NAME from the environment.  */
+extern void unsetenv __P ((__const char *__name));
 #endif
 
 /* Execute the given line as a shell command.  */
@@ -365,26 +382,16 @@ extern void qsort __P ((__ptr_t __base, size_t __nmemb, size_t __size,
                        __compar_fn_t __compar));
 
 
-#ifndef        __CONSTVALUE
-#ifdef __GNUC__
-/* The `const' keyword tells GCC that a function's return value is
-   based solely on its arguments, and there are no side-effects.  */
-#define        __CONSTVALUE    __const
-#else
-#define        __CONSTVALUE
-#endif /* GCC.  */
-#endif /* __CONSTVALUE not defined.  */
-
 /* Return the absolute value of X.  */
-extern __CONSTVALUE int abs __P ((int __x));
-extern __CONSTVALUE long int labs __P ((long int __x));
+extern int abs __P ((int __x)) __attribute__ ((__const__));
+extern long int labs __P ((long int __x)) __attribute__ ((__const__));
 
 
 /* Return the `div_t' or `ldiv_t' representation
    of the value of NUMER over DENOM. */
 /* GCC may have built-ins for these someday.  */
-extern __CONSTVALUE div_t div __P ((int __numer, int __denom));
-extern __CONSTVALUE ldiv_t ldiv __P ((long int __numer, long int __denom));
+extern div_t div __P ((int __numer, int __denom)) __attribute__ ((__const__));
+extern ldiv_t ldiv __P ((long int __numer, long int __denom)) __attribute__ ((__const__));
 
 
 #ifdef __USE_SVID
@@ -437,6 +444,15 @@ extern size_t mbstowcs __P ((wchar_t * __pwcs, __const char *__s, size_t __n));
 extern size_t wcstombs __P ((char *__s, __const wchar_t * __pwcs, size_t __n));
 
 
+#ifdef __USE_SVID
+/* Determine whether the string value of RESPONSE matches the affirmation
+   or negative response expression as specified by the LC_MESSAGES category
+   in the program's current locale.  Returns 1 if affirmative, 0 if
+   negative, and -1 if not matching.  */
+extern int rpmatch __P ((__const char *__response));
+#endif
+
+
 __END_DECLS
 
 #endif /* stdlib.h  */