about summary refs log tree commit diff
path: root/sysdeps/mach
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach')
-rw-r--r--sysdeps/mach/hurd/bits/errno.h10
-rw-r--r--sysdeps/mach/hurd/errnos.awk8
2 files changed, 17 insertions, 1 deletions
diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h
index 3b6fe76b37..d20ffe654a 100644
--- a/sysdeps/mach/hurd/bits/errno.h
+++ b/sysdeps/mach/hurd/bits/errno.h
@@ -9,6 +9,14 @@
 
 enum __error_t_codes
 {
+	/* The value zero always means success and it is perfectly fine for
+	   code to use 0 explicitly (or implicitly, e.g. via Boolean coercion).
+	   Having an enum entry for zero both makes the debugger print the name
+	   for error_t-typed zero values, and prevents the compiler from
+	   issuing warnings about 'case 0:' in a switch on an error_t-typed
+	   value.  */
+	ESUCCESS = 0,
+
 #undef EDOM
 #undef ERANGE
 	EPERM           = _HURD_ERRNO (1),
@@ -151,7 +159,7 @@ enum __error_t_codes
 	EDQUOT          = _HURD_ERRNO (69),
 #define	EDQUOT          _HURD_ERRNO (69)/* Disk quota exceeded */
 	ESTALE          = _HURD_ERRNO (70),
-#define	ESTALE          _HURD_ERRNO (70)/* Stale NFS file handle */
+#define	ESTALE          _HURD_ERRNO (70)/* Stale file handle */
 	EREMOTE         = _HURD_ERRNO (71),
 #define	EREMOTE         _HURD_ERRNO (71)/* Object is remote */
 	EBADRPC         = _HURD_ERRNO (72),
diff --git a/sysdeps/mach/hurd/errnos.awk b/sysdeps/mach/hurd/errnos.awk
index 35f5628b8e..2434daab22 100644
--- a/sysdeps/mach/hurd/errnos.awk
+++ b/sysdeps/mach/hurd/errnos.awk
@@ -31,6 +31,14 @@ BEGIN {
     print "";
     print "#ifdef _ERRNO_H\n";
     print "enum __error_t_codes\n{";
+    print "\t/* The value zero always means success and it is perfectly fine for";
+    print "\t   code to use 0 explicitly (or implicitly, e.g. via Boolean coercion).";
+    print "\t   Having an enum entry for zero both makes the debugger print the name";
+    print "\t   for error_t-typed zero values, and prevents the compiler from";
+    print "\t   issuing warnings about 'case 0:' in a switch on an error_t-typed";
+    print "\t   value.  */";
+    print "\tESUCCESS = 0,"
+    print "";
     errnoh = 0;
     maxerrno = 0;
     in_mach_errors = "";