This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Add missing strerror() strings, clean up


Hi all,

The attached patch:
- Adds to strerror()'s strerror.c strings for:
  - EADDRNOTAVAIL, "Address not available"
  - ECONNRESET, "Connection reset by peer"
  - EILSEQ, "Illegal byte sequence"
  - ENODATA, "No data" (full comment in errno.h was "No data (for no
delay io)")
  - EOVERFLOW, "Value too large for defined data type"

- Changes the following comments in errno.h to match the implementation:
  - EBADMSG, from "Trying to read unreadable message" to "Bad message"
  - EBUSY, from "Mount device busy" to "Device or resource busy"
  - ECONNABORTED, from "Connection aborted" to "Software caused
connection abort" (note that the previous comment reflected the
suggested text at
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html ,
perhaps here I should have changed the implementation instead?)
  - EDEADLK, from "Deadlock condition" to "Deadlock"
  - EDOM, from "Math arg out of domain of func" to "Math
argument" (would "Mathematics argument out of domain of function" or
"Mathematical (...)" be better?)
  - EILSEQ, from none to "Illegal byte sequence"
  - ENOLCK, from "No record locks available" to "No lock"
  - ENOLINK, from "The link has been severed" to "Virtual circuit is
gone" (reserved, according to
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html )
  - ENOMEM, from "Not enough core" to "Not enough space"
  - ENOSR, from "Out of streams resources" to "No stream resources"
  - ENOSTR, from "Device not a stream" to "Not a stream"
  - ENOTTY, from "Not a typewriter" to "Not a character device"
  - EOPNOTSUPP, from "Operation not supported on transport endpoint" to
"Operation not supported on socket"
  - EPERM, from "Not super-user" to "Not owner"
  - ERANGE, from "Math result not representable" to "Result too large"
  - EROFS, from "Read only file system", to "Read-only file system"
  - ETIME, from "Timer expired" to "Stream ioctl timeout"

- Adds strerror.c leading doc entries for:
  - ENOBUFS, "No buffer space available"
  - EOPNOTSUPP, "Operation not supported on socket"
  - EWOULDBLOCK, EAGAIN

- Changes strerror.c's leading doc section entry for ENETDOWN from
"Network interface not configured" to "Network interface is not
configured" to match the implementation and errno.h (would "Network is
down" be better?)

- Re-orders ECANCELED, ENOTRECOVERABLE, EOWNERDEAD and ESTRPIPE
alphabetically in strerror.c's leading doc section, per instructions at
the top of the file


All non-reserved errors in errno.h and
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
should now have a strerror() string.


Cheers, and thanks for your work!


P.S.: Should EMFILE's "Too many open files" actually be "File descriptor
value too large"? ENFILE's for the former, I think? Perhaps they're one
and the same in Newlib :-)
P.P.S.: Looked like there was some interesting indentation of the
comments in errno.h and some of the (later, particularly) "case"s in
strerror.c, but I didn't want to muck with that!
-- 
Nick Withers

Embedded Systems Programmer
Department of Nuclear Physics, Research School of Physics and Engineering
The Australian National University (CRICOS: 00120C)
Index: newlib/libc/include/sys/errno.h
===================================================================
RCS file: /cvs/src/src/newlib/libc/include/sys/errno.h,v
retrieving revision 1.18
diff -u -r1.18 errno.h
--- newlib/libc/include/sys/errno.h	26 Dec 2010 21:11:38 -0000	1.18
+++ newlib/libc/include/sys/errno.h	10 Jul 2014 10:18:35 -0000
@@ -28,7 +28,7 @@
 
 #define __errno_r(ptr) ((ptr)->_errno)
 
-#define	EPERM 1		/* Not super-user */
+#define	EPERM 1		/* Not owner */
 #define	ENOENT 2	/* No such file or directory */
 #define	ESRCH 3		/* No such process */
 #define	EINTR 4		/* Interrupted system call */
@@ -39,13 +39,13 @@
 #define	EBADF 9		/* Bad file number */
 #define	ECHILD 10	/* No children */
 #define	EAGAIN 11	/* No more processes */
-#define	ENOMEM 12	/* Not enough core */
+#define	ENOMEM 12	/* Not enough space */
 #define	EACCES 13	/* Permission denied */
 #define	EFAULT 14	/* Bad address */
 #ifdef __LINUX_ERRNO_EXTENSIONS__
 #define	ENOTBLK 15	/* Block device required */
 #endif
-#define	EBUSY 16	/* Mount device busy */
+#define	EBUSY 16	/* Device or resource busy */
 #define	EEXIST 17	/* File exists */
 #define	EXDEV 18	/* Cross-device link */
 #define	ENODEV 19	/* No such device */
@@ -54,16 +54,16 @@
 #define	EINVAL 22	/* Invalid argument */
 #define	ENFILE 23	/* Too many open files in system */
 #define	EMFILE 24	/* Too many open files */
-#define	ENOTTY 25	/* Not a typewriter */
+#define	ENOTTY 25	/* Not a character device */
 #define	ETXTBSY 26	/* Text file busy */
 #define	EFBIG 27	/* File too large */
 #define	ENOSPC 28	/* No space left on device */
 #define	ESPIPE 29	/* Illegal seek */
-#define	EROFS 30	/* Read only file system */
+#define	EROFS 30	/* Read-only file system */
 #define	EMLINK 31	/* Too many links */
 #define	EPIPE 32	/* Broken pipe */
-#define	EDOM 33		/* Math arg out of domain of func */
-#define	ERANGE 34	/* Math result not representable */
+#define	EDOM 33		/* Math argument */
+#define	ERANGE 34	/* Result too large */
 #define	ENOMSG 35	/* No message of desired type */
 #define	EIDRM 36	/* Identifier removed */
 #ifdef __LINUX_ERRNO_EXTENSIONS__
@@ -76,8 +76,8 @@
 #define	ENOCSI 43	/* No CSI structure available */
 #define	EL2HLT 44	/* Level 2 halted */
 #endif
-#define	EDEADLK 45	/* Deadlock condition */
-#define	ENOLCK 46	/* No record locks available */
+#define	EDEADLK 45	/* Deadlock */
+#define	ENOLCK 46	/* No lock */
 #ifdef __LINUX_ERRNO_EXTENSIONS__
 #define EBADE 50	/* Invalid exchange */
 #define EBADR 51	/* Invalid request descriptor */
@@ -88,16 +88,16 @@
 #define EDEADLOCK 56	/* File locking deadlock error */
 #define EBFONT 57	/* Bad font file fmt */
 #endif
-#define ENOSTR 60	/* Device not a stream */
+#define ENOSTR 60	/* Not a stream */
 #define ENODATA 61	/* No data (for no delay io) */
-#define ETIME 62	/* Timer expired */
-#define ENOSR 63	/* Out of streams resources */
+#define ETIME 62	/* Stream ioctl timeout */
+#define ENOSR 63	/* No stream resources */
 #ifdef __LINUX_ERRNO_EXTENSIONS__
 #define ENONET 64	/* Machine is not on the network */
 #define ENOPKG 65	/* Package not installed */
 #define EREMOTE 66	/* The object is remote */
 #endif
-#define ENOLINK 67	/* The link has been severed */
+#define ENOLINK 67	/* Virtual circuit is gone */
 #ifdef __LINUX_ERRNO_EXTENSIONS__
 #define EADV 68		/* Advertise error */
 #define ESRMNT 69	/* Srmount error */
@@ -109,7 +109,7 @@
 #define	ELBIN 75	/* Inode is remote (not really error) */
 #define	EDOTDOT 76	/* Cross mount point (not really error) */
 #endif
-#define EBADMSG 77	/* Trying to read unreadable message */
+#define EBADMSG 77	/* Bad message */
 #define EFTYPE 79	/* Inappropriate file type or format */
 #ifdef __LINUX_ERRNO_EXTENSIONS__
 #define ENOTUNIQ 80	/* Given log. name not unique */
@@ -128,7 +128,7 @@
 #define ENOTEMPTY 90	/* Directory not empty */
 #define ENAMETOOLONG 91	/* File or path name too long */
 #define ELOOP 92	/* Too many symbolic links */
-#define EOPNOTSUPP 95	/* Operation not supported on transport endpoint */
+#define EOPNOTSUPP 95	/* Operation not supported on socket */
 #define EPFNOSUPPORT 96 /* Protocol family not supported */
 #define ECONNRESET 104  /* Connection reset by peer */
 #define ENOBUFS 105	/* No buffer space available */
@@ -141,7 +141,7 @@
 #endif
 #define ECONNREFUSED 111	/* Connection refused */
 #define EADDRINUSE 112		/* Address already in use */
-#define ECONNABORTED 113	/* Connection aborted */
+#define ECONNABORTED 113	/* Software caused connection abort */
 #define ENETUNREACH 114		/* Network is unreachable */
 #define ENETDOWN 115		/* Network interface is not configured */
 #define ETIMEDOUT 116		/* Connection timed out */
@@ -156,7 +156,7 @@
 #define ESOCKTNOSUPPORT 124	/* Socket type not supported */
 #endif
 #define EADDRNOTAVAIL 125	/* Address not available */
-#define ENETRESET 126
+#define ENETRESET 126		/* Connection aborted by network */
 #define EISCONN 127		/* Socket is already connected */
 #define ENOTCONN 128		/* Socket is not connected */
 #define ETOOMANYREFS 129
@@ -174,7 +174,7 @@
 #define ENOSHARE 136    /* No such host or network path */
 #define ECASECLASH 137  /* Filename exists with different case */
 #endif
-#define EILSEQ 138
+#define EILSEQ 138		/* Illegal byte sequence */
 #define EOVERFLOW 139	/* Value too large for defined data type */
 #define ECANCELED 140	/* Operation canceled */
 #define ENOTRECOVERABLE 141	/* State not recoverable */
Index: newlib/libc/string/strerror.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/strerror.c,v
retrieving revision 1.8
diff -u -r1.8 strerror.c
--- newlib/libc/string/strerror.c	25 May 2011 21:05:11 -0000	1.8
+++ newlib/libc/string/strerror.c	10 Jul 2014 10:18:36 -0000
@@ -45,6 +45,9 @@
 o EADDRINUSE
 Address already in use
 
+o EADDRNOTAVAIL
+Address not available
+
 o EADV
 Advertise error
 
@@ -66,6 +69,9 @@
 o EBUSY
 Device or resource busy
 
+o ECANCELED
+Operation canceled
+
 o ECHILD
 No children
 
@@ -78,6 +84,9 @@
 o ECONNREFUSED
 Connection refused
 
+o ECONNRESET
+Connection reset by peer
+
 o EDEADLK
 Deadlock
 
@@ -105,6 +114,9 @@
 o EIDRM
 Identifier removed
 
+o EILSEQ
+Illegal byte sequence
+
 o EINPROGRESS
 Connection already in progress
 
@@ -154,7 +166,10 @@
 File or path name too long
 
 o ENETDOWN
-Network interface not configured
+Network interface is not configured
+
+o ENETRESET
+Connection aborted by network
 
 o ENETUNREACH
 Network is unreachable
@@ -162,6 +177,12 @@
 o ENFILE
 Too many open files in system
 
+o ENOBUFS
+No buffer space available
+
+o ENODATA
+No data
+
 o ENODEV
 No such device
 
@@ -216,6 +237,9 @@
 o ENOTEMPTY
 Directory not empty
 
+o ENOTRECOVERABLE
+State not recoverable
+
 o ENOTSOCK
 Socket operation on non-socket
 
@@ -228,6 +252,15 @@
 o ENXIO
 No such device or address
 
+o EOPNOTSUPP
+Operation not supported on socket
+
+o EOVERFLOW
+Value too large for defined data type
+
+o EOWNERDEAD
+Previous owner died
+
 o EPERM
 Not owner
 
@@ -267,6 +300,9 @@
 o ESRMNT
 Srmount error
 
+o ESTRPIPE
+Strings pipe error
+
 o ETIME
 Stream ioctl timeout
 
@@ -276,21 +312,12 @@
 o ETXTBSY
 Text file busy
 
+o EWOULDBLOCK
+EAGAIN
+
 o EXDEV
 Cross-device link
 
-o ECANCELED
-Operation canceled
-
-o ENOTRECOVERABLE
-State not recoverable
-
-o EOWNERDEAD
-Previous owner died
-
-o ESTRPIPE
-Strings pipe error
-
 o-
 
 <<_strerror_r>> is a reentrant version of the above.
@@ -504,6 +531,11 @@
       error = "Network interface is not configured";
       break;
 #endif
+#ifdef ENETRESET
+    case ENETRESET:
+      error = "Connection aborted by network";
+      break;
+#endif
 #ifdef ENFILE
     case ENFILE:
       error = "Too many open files in system";
@@ -584,6 +616,11 @@
       error = "Identifier removed";
       break;
 #endif
+#ifdef EILSEQ
+    case EILSEQ:
+      error = "Illegal byte sequence";
+      break;
+#endif
 #ifdef EDEADLK
     case EDEADLK:
       error = "Deadlock";
@@ -724,6 +761,11 @@
       error = "No buffer space available";
       break;
 #endif
+#ifdef ENODATA
+    case ENODATA:
+      error = "No data";
+      break;
+#endif
 #ifdef EAFNOSUPPORT
     case EAFNOSUPPORT:
       error = "Address family not supported by protocol family";
@@ -754,11 +796,21 @@
       error = "Connection refused";
       break;
 #endif
+#ifdef ECONNRESET
+    case ECONNRESET:
+      error = "Connection reset by peer";
+      break;
+#endif
 #ifdef EADDRINUSE
     case EADDRINUSE:
       error = "Address already in use";
       break;
 #endif
+#ifdef EADDRNOTAVAIL
+    case EADDRNOTAVAIL:
+      error = "Address not available";
+      break;
+#endif
 #ifdef ECONNABORTED
     case ECONNABORTED:
       error = "Software caused connection abort";
@@ -809,6 +861,11 @@
         error = "Operation not supported on socket";
         break;
 #endif
+#ifdef EOVERFLOW
+    case EOVERFLOW:
+      error = "Value too large for defined data type";
+      break;
+#endif
 #ifdef EMSGSIZE
     case EMSGSIZE:
         error = "Message too long";

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]