about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--conform/data/stdlib.h-data22
-rw-r--r--linuxthreads/ChangeLog3
-rw-r--r--stdlib/random.c2
-rw-r--r--stdlib/stdlib.h11
-rw-r--r--sysdeps/generic/setenv.c16
6 files changed, 54 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 3fc613a333..09cc0f2092 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2001-01-26  Ulrich Drepper  <drepper@redhat.com>
 
+	* conform/data/stdlib.h-data: Account for XPG6 changes.
+	* stdlib/stdlib.h (__random): Change return value type to long.
+	(posix_memalign): Cleanup parameter names.
+	(setenv, unsetenv): Make available for __USE_XOPEN2K.
+	Change return type of unsetenv to int.
+	(qecvt, qgcvt, qfcvt): Declare only if __USE_MISC.
+	* sysdeps/generic/setenv.c (unsetenv): Change return type to int.
+	Return -1 and set errno if parameter is invalid.
+	* stdlib/random.c (__random): Change return value type to long.
+
 	* conform/data/stdio.h-data: Account for changes in XPG6.
 
 	* conform/data/spawn.h-data: Correct posix_spawnattr_setflags
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
index f4998716df..aee04465e9 100644
--- a/conform/data/stdlib.h-data
+++ b/conform/data/stdlib.h-data
@@ -5,7 +5,16 @@ constant RAND_MAX >= 32767
 macro MB_CUR_MAX
 
 type div_t
+element div_t int quot
+element div_t int rem
 type ldiv_t
+element ldiv_t long quot
+element ldiv_t long rem
+#ifdef XOPEN2K
+type lldiv_t
+element lldiv_t {long long} quot
+element lldiv_t {long long} rem
+#endif
 type size_t
 type wchar_t
 
@@ -13,7 +22,6 @@ constant WNOHANG
 constant WUNTRACED
 
 macro WEXITSTATUS
-macro WIFCONTINUED
 macro WIFEXITED
 macro WIFSIGNALED
 macro WIFSTOPPED
@@ -27,6 +35,9 @@ function int atexit (void(*)(void))
 function double atof (const char*)
 function int atoi (const char*)
 function {long int} atol (const char*)
+#ifdef XOPEN2K
+function {long long} atoll (const char*)
+#endif
 function {void*} bsearch (const void*, const void*, size_t, size_t, int(*)(const void*, const void*))
 function {void*} calloc (size_t, size_t)
 function div_t div (int, int)
@@ -46,6 +57,10 @@ function {char*} l64a (long)
 function {long int} labs (long int)
 function void lcong48 (unsigned short int[7])
 function ldiv_t ldiv (long int, long int)
+#ifdef XOPEN2K
+function {long long} llabs (long long)
+function lldiv_t lldiv (long long, long long)
+#endif
 function {long int} lrand48 (void)
 function {void*} malloc (size_t)
 function int mblen (const char*, size_t)
@@ -56,6 +71,9 @@ function int mkstemp (char*)
 function {long int} mrand48 (void)
 function {long int} nrand48 (unsigned short int[3])
 function int posix_memalign (void**, size_t, size_t)
+#ifdef XOPEN2K
+function int posix_openpt (int)
+#endif
 function {char*} ptsname (int)
 function int putenv (char*)
 function void qsort (void*, size_t, size_t, int(*)(const void*, const void*))
@@ -75,7 +93,9 @@ function double strtod (const char*, char**)
 function {long int} strtol (const char*, char**, int)
 function {unsigned long int} strtoul (const char*, char**, int)
 function int system (const char*)
+#ifndef XOPEN2K
 function int ttyslot (void)
+#endif
 function int unlockpt (int)
 function int unsetenv (const char*)
 function {void*} valloc (size_t)
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 0ba72795d3..cad3fda18c 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,5 +1,8 @@
 2001-01-26  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/pthread/bits/pthreadtypes.h: Define pthread_attr_t also
+	as struct __pthread_attr_s.
+
 	* semaphore.h (sem_t): Cleanup namespace, rename status and
 	spinlock elements.
 
diff --git a/stdlib/random.c b/stdlib/random.c
index 06a4c97829..afd0a1a516 100644
--- a/stdlib/random.c
+++ b/stdlib/random.c
@@ -259,7 +259,7 @@ weak_alias (__setstate, setstate)
    rear pointers can't wrap on the same call by not testing the rear
    pointer if the front one has wrapped.  Returns a 31-bit random number.  */
 
-int32_t
+long int
 __random ()
 {
   int32_t retval;
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 17f19ac8d6..9b5d187558 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -395,7 +395,7 @@ extern long int a64l (__const char *__s) __THROW __attribute_pure__;
    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 int32_t random (void) __THROW;
+extern long int random (void) __THROW;
 
 /* Seed the random number generator with the given number.  */
 extern void srandom (unsigned int __seed) __THROW;
@@ -554,7 +554,7 @@ extern void *valloc (size_t __size) __THROW __attribute_malloc__;
 
 #ifdef __USE_XOPEN2K
 /* Allocate memory of SIZE bytes with an alignment of ALIGNMENT.  */
-extern int posix_memalign (void **memptr, size_t alignment, size_t size)
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
      __THROW __attribute_malloc__;
 #endif
 
@@ -600,14 +600,14 @@ extern char *__secure_getenv (__const char *__name) __THROW;
 extern int putenv (char *__string) __THROW;
 #endif
 
-#ifdef	__USE_BSD
+#if defined __USE_BSD || defined __USE_XOPEN2K
 /* Set NAME to VALUE in the environment.
    If REPLACE is nonzero, overwrite an existing value.  */
 extern int setenv (__const char *__name, __const char *__value, int __replace)
      __THROW;
 
 /* Remove the variable NAME from the environment.  */
-extern void unsetenv (__const char *__name) __THROW;
+extern int unsetenv (__const char *__name) __THROW;
 #endif
 
 #ifdef	__USE_MISC
@@ -742,6 +742,8 @@ extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
    be written to BUF.  */
 extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW;
 
+
+# ifdef __USE_MISC
 /* Long double versions of above functions.  */
 extern char *qecvt (long double __value, int __ndigit,
 		    int *__restrict __decpt, int *__restrict __sign) __THROW;
@@ -750,7 +752,6 @@ extern char *qfcvt (long double __value, int __ndigit,
 extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW;
 
 
-# ifdef __USE_MISC
 /* Reentrant version of the functions above which provide their own
    buffers.  */
 extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
diff --git a/sysdeps/generic/setenv.c b/sysdeps/generic/setenv.c
index b8d234929f..6f871a65c7 100644
--- a/sysdeps/generic/setenv.c
+++ b/sysdeps/generic/setenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1992,95,96,97,98,99,2000,2001 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
@@ -263,13 +263,21 @@ setenv (name, value, replace)
   return __add_to_environ (name, value, NULL, replace);
 }
 
-void
+int
 unsetenv (name)
      const char *name;
 {
-  const size_t len = strlen (name);
+  const size_t len;
   char **ep;
 
+  if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  len = strlen (name);
+
   LOCK;
 
   ep = __environ;
@@ -288,6 +296,8 @@ unsetenv (name)
       ++ep;
 
   UNLOCK;
+
+  return 0;
 }
 
 /* The `clearenv' was planned to be added to POSIX.1 but probably