about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--linuxthreads/ChangeLog10
-rw-r--r--localedata/ChangeLog6
-rw-r--r--resolv/res_hconf.c2
-rw-r--r--sysdeps/generic/ifreq.h7
-rw-r--r--sysdeps/gnu/ifaddrs.c10
-rw-r--r--sysdeps/mach/hurd/ifreq.h7
-rw-r--r--sysdeps/unix/grantpt.c3
-rw-r--r--sysdeps/unix/sysv/linux/ifreq.h6
9 files changed, 58 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index d694998bb6..dac9eae635 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
+2002-09-17  Bruno Haible  <bruno@clisp.org>
+
+	* sysdeps/generic/ifreq.h (__if_nextreq): New function.
+	* sysdeps/unix/sysv/linux/ifreq.h (__if_nextreq): New function.
+	* sysdeps/mach/hurd/ifreq.h (__if_nextreq): New function.
+	* sysdeps/gnu/ifaddrs.c (getifaddrs): Use __if_nextreq
+	for iterating through the list of interfaces.
+	* resolv/res_hconf.c (_res_hconf_reorder_addrs): Likewise.
+
 2002-09-20  Roland McGrath  <roland@redhat.com>
 
+	* sysdeps/unix/grantpt.c (pts_name): Set errno when __ptsname_r fails.
+	Reported by Bruno Haible <bruno@clisp.org>.
+
 	* sysdeps/unix/bsd/bsd4.4/isatty.c: New file.
 
 	* sysdeps/unix/bsd/isatty.c (__isatty): Don't save and restore errno.
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 40913b630b..28eebd2256 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,13 @@
+2002-09-18  Bruno Haible  <bruno@clisp.org>
+
+	* Examples/ex10.c (thread): Fail if pthread_mutex_timedlock() returns
+	an unexpected error code.
+
+	* internals.h (__pthread_message): Add const to first parameter type.
+	* pthread.c (__pthread_message): Likewise.
+
+	* sysdeps/unix/sysv/linux/configure: Moved to ../sysdeps/pthread.
+
 2002-09-17  Roland McGrath  <roland@redhat.com>
 
 	* sysdeps/i386/tls.h (TLS_DO_MODIFY_LDT, TLS_DO_SET_THREAD_AREA):
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index d31e094f32..a6de7470b6 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,9 @@
+2002-09-20  Roland McGrath  <roland@redhat.com>
+
+	* gen-locale.sh (generate_locale): Clean up overly baroque sh syntax.
+	Touch the LC_CTYPE file of the output after a successful run.
+	Reported by Bruno Haible <bruno@clisp.org>.
+
 2002-09-10  Ulrich Drepper  <drepper@redhat.com>
 
 	* localedata/locales/bg_BG: Update LC_IDENTIFICATION info.
diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c
index b814f62dd3..8da2727a79 100644
--- a/resolv/res_hconf.c
+++ b/resolv/res_hconf.c
@@ -556,7 +556,7 @@ _res_hconf_reorder_addrs (struct hostent *hp)
 	goto cleanup1;
 
       /* Copy usable interfaces in ifaddrs structure.  */
-      for (cur_ifr = ifr, i = 0;  i < num; ++cur_ifr, ++i)
+      for (cur_ifr = ifr, i = 0; i < num; cur_ifr = __if_nextreq (cur_ifr), ++i)
 	{
 	  if (cur_ifr->ifr_addr.sa_family != AF_INET)
 	    continue;
diff --git a/sysdeps/generic/ifreq.h b/sysdeps/generic/ifreq.h
index f750065cd3..0d975be61c 100644
--- a/sysdeps/generic/ifreq.h
+++ b/sysdeps/generic/ifreq.h
@@ -73,6 +73,13 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
 }
 
 
+static inline struct ifreq *
+__if_nextreq (struct ifreq *ifr)
+{
+  return ifr + 1;
+}
+
+
 static inline void
 __if_freereq (struct ifreq *ifreqs, int num_ifs)
 {
diff --git a/sysdeps/gnu/ifaddrs.c b/sysdeps/gnu/ifaddrs.c
index e0a5b424f0..0c1ae5bf05 100644
--- a/sysdeps/gnu/ifaddrs.c
+++ b/sysdeps/gnu/ifaddrs.c
@@ -40,7 +40,7 @@ getifaddrs (struct ifaddrs **ifap)
      Some different mechanism entirely must be used for IPv6.  */
   int fd = __socket (AF_INET, SOCK_DGRAM, 0);
   struct ifreq *ifreqs;
-  int nifs, i;
+  int nifs;
 
   if (fd < 0)
     return -1;
@@ -64,6 +64,8 @@ getifaddrs (struct ifaddrs **ifap)
 	struct sockaddr addr, netmask, broadaddr;
 	char name[IF_NAMESIZE];
       } *storage;
+      struct ifreq *ifr;
+      int i;
 
       storage = malloc (nifs * sizeof storage[0]);
       if (storage == NULL)
@@ -74,10 +76,9 @@ getifaddrs (struct ifaddrs **ifap)
 	}
 
       i = 0;
+      ifr = ifreqs;
       do
 	{
-	  struct ifreq *const ifr = &ifreqs[i];
-
 	  /* Fill in all pointers to the storage we've already allocated.  */
 	  storage[i].ia.ifa_next = &storage[i + 1].ia;
 	  storage[i].ia.ifa_addr = &storage[i].addr;
@@ -97,6 +98,7 @@ getifaddrs (struct ifaddrs **ifap)
 	  storage[i].ia.ifa_flags = ifr->ifr_flags;
 
 	  ifr->ifr_addr = storage[i].addr;
+
 	  if (__ioctl (fd, SIOCGIFNETMASK, ifr) < 0)
 	    break;
 	  storage[i].netmask = ifr->ifr_netmask;
@@ -121,6 +123,7 @@ getifaddrs (struct ifaddrs **ifap)
 
 	  storage[i].ia.ifa_data = NULL; /* Nothing here for now.  */
 
+	  ifr = __if_nextreq (ifr);
 	} while (++i < nifs);
       if (i < nifs)		/* Broke out early on error.  */
 	{
@@ -129,6 +132,7 @@ getifaddrs (struct ifaddrs **ifap)
 	  __if_freereq (ifreqs, nifs);
 	  return -1;
 	}
+
       storage[i - 1].ia.ifa_next = NULL;
 
       *ifap = &storage[0].ia;
diff --git a/sysdeps/mach/hurd/ifreq.h b/sysdeps/mach/hurd/ifreq.h
index f2143d8c70..77f0b9cac0 100644
--- a/sysdeps/mach/hurd/ifreq.h
+++ b/sysdeps/mach/hurd/ifreq.h
@@ -66,6 +66,13 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
 }
 
 
+static inline struct ifreq *
+__if_nextreq (struct ifreq *ifr)
+{
+  return ifr + 1;
+}
+
+
 static inline void
 __if_freereq (struct ifreq *ifreqs, int num_ifs)
 {
diff --git a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c
index 5f27ce91e3..98d601cf67 100644
--- a/sysdeps/unix/grantpt.c
+++ b/sysdeps/unix/grantpt.c
@@ -55,7 +55,8 @@ pts_name (int fd, char **pts, size_t buf_len)
 		/* ptsname_r returns with ENOTTY to indicate
 		   a descriptor not referring to a pty master.
 		   For this condition, grantpt must return EINVAL.  */
-		errno = EINVAL;
+		rv = EINVAL;
+	      errno = rv;	/* Not necessarily set by __ptsname_r.  */
 	      break;
 	    }
 
diff --git a/sysdeps/unix/sysv/linux/ifreq.h b/sysdeps/unix/sysv/linux/ifreq.h
index 9d42664444..f498e5c32a 100644
--- a/sysdeps/unix/sysv/linux/ifreq.h
+++ b/sysdeps/unix/sysv/linux/ifreq.h
@@ -105,6 +105,12 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
   *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
 }
 
+static inline struct ifreq *
+__if_nextreq (struct ifreq *ifr)
+{
+  return ifr + 1;
+}
+
 static inline void
 __if_freereq (struct ifreq *ifreqs, int num_ifs)
 {