about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/bits/socket.h15
-rw-r--r--sysdeps/gnu/errlist.c2
-rw-r--r--sysdeps/m68k/__longjmp.c4
-rw-r--r--sysdeps/powerpc/bits/fenv.h4
-rw-r--r--sysdeps/stub/bits/string.h12
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h7
-rw-r--r--sysdeps/unix/sysv/linux/if_index.c49
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/socket.h15
-rw-r--r--sysdeps/wordsize-32/inttypes.h2
-rw-r--r--sysdeps/wordsize-64/inttypes.h2
10 files changed, 78 insertions, 34 deletions
diff --git a/sysdeps/generic/bits/socket.h b/sysdeps/generic/bits/socket.h
index d12d96cc14..af42dfac78 100644
--- a/sysdeps/generic/bits/socket.h
+++ b/sysdeps/generic/bits/socket.h
@@ -24,11 +24,14 @@
 
 #include <features.h>
 
-__BEGIN_DECLS
-
 #define	__need_size_t
 #include <stddef.h>
 
+__BEGIN_DECLS
+
+/* Type for length arguments in socket calls.  */
+typedef unsigned int socklen_t;
+
 
 /* Types of sockets.  */
 enum __socket_type
@@ -145,13 +148,15 @@ enum
 struct msghdr
   {
     __ptr_t msg_name;		/* Address to send to/receive from.  */
-    size_t msg_namelen;		/* Length of address data.  */
+    socklen_t msg_namelen;	/* Length of address data.  */
 
     struct iovec *msg_iov;	/* Vector of data to send/receive into.  */
-    size_t msg_iovlen;		/* Number of elements in the vector.  */
+    int msg_iovlen;		/* Number of elements in the vector.  */
 
     __ptr_t msg_accrights;	/* Access rights information.  */
-    size_t msg_accrightslen;	/* Length of access rights information.  */
+    socklen_t msg_accrightslen;	/* Length of access rights information.  */
+
+    int msg_flags;		/* Flags in received message.  */
   };
 
 
diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c
index 3333f1d467..7c0e78abf0 100644
--- a/sysdeps/gnu/errlist.c
+++ b/sysdeps/gnu/errlist.c
@@ -249,7 +249,7 @@ TRANS until some external condition makes it possible to read, write, or
 TRANS connect (whatever the operation).  You can use @code{select} to find out
 TRANS when the operation will be possible; @pxref{Waiting for I/O}.
 TRANS 
-TRANS @strong{Portability Note:} In older many Unix systems, this condition
+TRANS @strong{Portability Note:} In many older Unix systems, this condition
 TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
 TRANS different from @code{EAGAIN}.  To make your program portable, you should
 TRANS check for both codes and treat them the same.
diff --git a/sysdeps/m68k/__longjmp.c b/sysdeps/m68k/__longjmp.c
index c3e400c4c5..e6ec43c465 100644
--- a/sysdeps/m68k/__longjmp.c
+++ b/sysdeps/m68k/__longjmp.c
@@ -50,6 +50,6 @@ __longjmp (__jmp_buf env, int val)
 		  because this code always jumps out anyway.  */
 	       );
 
-  /* This call avoids `volatile function does return' warnings.  */
-  abort ();
+  /* Avoid `volatile function does return' warnings.  */
+  for (;;);
 }
diff --git a/sysdeps/powerpc/bits/fenv.h b/sysdeps/powerpc/bits/fenv.h
index 9158a54586..08d998e118 100644
--- a/sysdeps/powerpc/bits/fenv.h
+++ b/sysdeps/powerpc/bits/fenv.h
@@ -119,10 +119,10 @@ typedef double fenv_t;
 
 /* If the default argument is used we use this value.  */
 extern const fenv_t __fe_dfl_env;
-#define FE_DFL_ENV	(&__fe_dfl_env);
+#define FE_DFL_ENV	(&__fe_dfl_env)
 
 #ifdef __USE_GNU
 /* Floating-point environment where none of the exceptions are masked.  */
 extern const fenv_t __fe_nomask_env;
-# define FE_NOMASK_ENV	(&__fe_nomask_env);
+# define FE_NOMASK_ENV	(&__fe_nomask_env)
 #endif
diff --git a/sysdeps/stub/bits/string.h b/sysdeps/stub/bits/string.h
new file mode 100644
index 0000000000..bd1b77409d
--- /dev/null
+++ b/sysdeps/stub/bits/string.h
@@ -0,0 +1,12 @@
+/* This file should provide inline versions of math functions.
+
+   Surround GCC-specific parts with #ifdef __GNUC__, and use `extern __inline'.
+
+   This file should define __STRING_INLINES if functions are actually defined
+   as inlines.  */
+
+#ifndef _BITS_STRING_H
+#define _BITS_STRING_H	1
+
+
+#endif /* bits/string.h */
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index a17c37fd8e..fd13e124a8 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -32,6 +32,9 @@
 
 __BEGIN_DECLS
 
+/* Type for length arguments in socket calls.  */
+typedef unsigned int socklen_t;
+
 /* Types of sockets.  */
 enum __socket_type
 {
@@ -130,14 +133,14 @@ enum
 struct msghdr
   {
     __ptr_t msg_name;		/* Address to send to/receive from.  */
-    int msg_namelen;		/* Length of address data.  */
-    /* XXX Should be type `socklen_t' according to POSIX.1g.  */
+    socklen_t msg_namelen;	/* Length of address data.  */
 
     struct iovec *msg_iov;	/* Vector of data to send/receive into.  */
     size_t msg_iovlen;		/* Number of elements in the vector.  */
 
     __ptr_t msg_control;	/* Ancillary data (eg BSD filedesc passing). */
     socklen_t msg_controllen;	/* Ancillary data buffer length.  */
+
     int msg_flags;		/* Flags on received message.  */
   };
 
diff --git a/sysdeps/unix/sysv/linux/if_index.c b/sysdeps/unix/sysv/linux/if_index.c
index 41bd0535c9..c8eefa9b98 100644
--- a/sysdeps/unix/sysv/linux/if_index.c
+++ b/sysdeps/unix/sysv/linux/if_index.c
@@ -66,20 +66,27 @@ opensock (void)
 unsigned int
 if_nametoindex (const char *ifname)
 {
+#ifndef SIOGIFINDEX
+  __set_errno (ENOSYS);
+#else
   struct ifreq ifr;
+  int rc;
   int fd = opensock ();
 
   if (fd < 0)
     return 0;
 
   strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
-  if (ioctl (fd, SIOGIFINDEX, &ifr) < 0)
+  rc = ioctl (fd, SIOGIFINDEX, &ifr);
+  if (rc < 0)
     {
       close (fd);
+      __set_errno (rc == -EINVAL ? ENOSYS : -rc);
       return 0;
     }
   close (fd);
   return ifr.ifr_ifindex;
+#endif
 }
 
 void
@@ -98,6 +105,11 @@ if_freenameindex (struct if_nameindex *ifn)
 struct if_nameindex *
 if_nameindex (void)
 {
+#ifndef SIOGIFINDEX
+  __set_errno (ENOSYS);
+  return NULL;
+#else
+  int rc;
   int fd = opensock ();
   struct ifconf ifc;
   unsigned int rq_ifs = 4, nifs, i;
@@ -141,10 +153,12 @@ if_nameindex (void)
 	  goto jump;
 	}
       strcpy (idx[i].if_name, ifr->ifr_name);
-      if (ioctl (fd, SIOGIFINDEX, ifr) < 0)
+      rc = ioctl (fd, SIOGIFINDEX, ifr);
+      if (rc < 0)
 	{
 	  free (idx);
 	  idx = NULL;
+	  __set_errno (rc == -EINVAL ? ENOSYS : -rc);
 	  goto jump;
 	}
       idx[i].if_index = ifr->ifr_ifindex;
@@ -156,22 +170,33 @@ jump:
   free (ifc.ifc_buf);
   close (fd);
   return idx;
+#endif
 }
 
 char *
 if_indextoname (unsigned int ifindex, char *ifname)
 {
+#ifndef SIOGIFINDEX
+  __set_errno (ENOSYS);
+  return NULL;
+#else
   struct if_nameindex *idx = if_nameindex ();
   struct if_nameindex *p;
+  char *result;
 
-  for (p = idx; p->if_index || p->if_name; ++p)
-    if (p->if_index == ifindex)
-      {
-	strncpy (ifname, p->if_name, IFNAMSIZ);
-	if_freenameindex (idx);
-	return ifname;
-      }
-
-  if_freenameindex (idx);
-  return NULL;
+  if (idx == NULL)
+    result = NULL;
+  else
+    {
+      for (p = idx; p->if_index || p->if_name; ++p)
+	if (p->if_index == ifindex)
+	  {
+	    result = strncpy (ifname, p->if_name, IFNAMSIZ);
+	    break;
+	  }
+
+      if_freenameindex (idx);
+    }
+  return result;
+#endif
 }
diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket.h b/sysdeps/unix/sysv/linux/mips/bits/socket.h
index 15f420fc9c..02f1d22a6c 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/socket.h
@@ -28,9 +28,11 @@
 #define __need_NULL
 #include <stddef.h>
 
-
 __BEGIN_DECLS
 
+/* Type for length arguments in socket calls.  */
+typedef unsigned int socklen_t;
+
 /* Supported address families. */
 #define PF_UNSPEC	0
 #define PF_UNIX		1		/* Unix domain sockets 		*/
@@ -103,25 +105,22 @@ enum
 struct msghdr
   {
     __ptr_t msg_name;		/* Address to send to/receive from.  */
-    int msg_namelen;		/* Length of address data.  */
-    /* XXX Should be type `size_t' according to POSIX.1g.  */
+    socklen_t msg_namelen;	/* Length of address data.  */
 
     struct iovec *msg_iov;	/* Vector of data to send/receive into.  */
     int msg_iovlen;		/* Number of elements in the vector.  */
-    /* XXX Should be type `size_t' according to POSIX.1g.  */
 
     __ptr_t msg_control;	/* Ancillary data (eg BSD filedesc passing). */
-    int msg_controllen;		/* Ancillary data buffer length.  */
-    /* XXX Should be type `size_t' according to POSIX.1g.  */
+    socklen_t msg_controllen;	/* Ancillary data buffer length.  */
+
     int msg_flags;		/* Flags on received message.  */
   };
 
 /* Structure used for storage of ancillary data object information.  */
 struct cmsghdr
   {
-    int cmsg_len;		/* Length of data in cmsg_data plus length
+    socklen_t cmsg_len;		/* Length of data in cmsg_data plus length
 				   of cmsghdr structure.  */
-    /* XXX Should be type `size_t' according to POSIX.1g.  */
     int cmsg_level;		/* Originating protocol.  */
     int cmsg_type;		/* Protocol specific type.  */
 #if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2
diff --git a/sysdeps/wordsize-32/inttypes.h b/sysdeps/wordsize-32/inttypes.h
index 42434b126f..a5ff12e663 100644
--- a/sysdeps/wordsize-32/inttypes.h
+++ b/sysdeps/wordsize-32/inttypes.h
@@ -31,7 +31,7 @@
 
 /* There is some amount of overlap with <sys/types.h> as known by inet code */
 #ifndef __int8_t_defined
-#define __int8_t_defined
+# define __int8_t_defined
 typedef signed char    int8_t;
 typedef short int     int16_t;
 typedef int           int32_t;
diff --git a/sysdeps/wordsize-64/inttypes.h b/sysdeps/wordsize-64/inttypes.h
index cc420e894c..f1dd2ffee0 100644
--- a/sysdeps/wordsize-64/inttypes.h
+++ b/sysdeps/wordsize-64/inttypes.h
@@ -31,7 +31,7 @@
 
 /* There is some amount of overlap with <sys/types.h> as known by inet code */
 #ifndef __int8_t_defined
-#define __int8_t_defined
+# define __int8_t_defined
 typedef signed char int8_t;
 typedef short int  int16_t;
 typedef int        int32_t;