about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--manual/errno.texi24
-rw-r--r--sysdeps/gnu/errlist.c42
-rw-r--r--sysdeps/unix/sysv/linux/Versions3
4 files changed, 82 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 5b58a02c76..6a6083f08c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2004-10-20  Roland McGrath  <roland@redhat.com>
+
+	* manual/errno.texi (Error Codes): Add ENOKEY, EKEYEXPIRED,
+	EKEYREVOKED, EKEYREJECTED.
+	* sysdeps/unix/sysv/linux/Versions (libc: GLIBC_2.3.4): New errlist.
+	* sysdeps/gnu/errlist.c: Regenerated
+
+	* sysdeps/gnu/errlist-compat.awk: Don't bail if Versions gives a count
+	higher than ERR_MAX reports.  Instead, emit a #define ERR_MAX.
+	* sysdeps/gnu/Makefile ($(objpfx)errlist-compat.h): New target.
+	(generated): Add errlist-compat.h.
+	* sysdeps/gnu/errlist.awk: Make output #include <errlist-compat.h> to
+	define ERR_MAX and use that for table size.
+
 2004-10-20  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/unix/sysv/linux/syscalls.list: Add entries for setaltroot,
diff --git a/manual/errno.texi b/manual/errno.texi
index c799d268f8..7872452df3 100644
--- a/manual/errno.texi
+++ b/manual/errno.texi
@@ -1229,6 +1229,30 @@ They are not yet documented.}
 @comment errno ???/???
 @end deftypevr
 
+@comment errno.h
+@comment Linux???: Required key not available
+@deftypevr Macro int ENOKEY
+@comment errno ???/???
+@end deftypevr
+
+@comment errno.h
+@comment Linux???: Key has expired
+@deftypevr Macro int EKEYEXPIRED
+@comment errno ???/???
+@end deftypevr
+
+@comment errno.h
+@comment Linux???: Key has been revoked
+@deftypevr Macro int EKEYREVOKED
+@comment errno ???/???
+@end deftypevr
+
+@comment errno.h
+@comment Linux???: Key was rejected by service
+@deftypevr Macro int EKEYREJECTED
+@comment errno ???/???
+@end deftypevr
+
 @node Error Messages,  , Error Codes, Error Reporting
 @section Error Messages
 
diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c
index 8131038047..3098fc34c5 100644
--- a/sysdeps/gnu/errlist.c
+++ b/sysdeps/gnu/errlist.c
@@ -7,7 +7,15 @@
 # define ERR_REMAP(n) n
 #endif
 
-const char *const _sys_errlist_internal[] =
+#if !defined EMIT_ERR_MAX && !defined ERRLIST_NO_COMPAT
+# include <errlist-compat.h>
+#endif
+#ifdef ERR_MAX
+# define ERRLIST_SIZE ERR_MAX + 1
+#else
+# define ERRLIST_SIZE
+#endif
+const char *const _sys_errlist_internal[ERRLIST_SIZE] =
   {
     [0] = N_("Success"),
 #ifdef EPERM
@@ -1400,6 +1408,38 @@ TRANS error; @pxref{Cancel AIO Operations}. */
 # define ERR_MAX EMEDIUMTYPE
 # endif
 #endif
+#ifdef ENOKEY
+/* */
+    [ERR_REMAP (ENOKEY)] = N_("Required key not available"),
+# if ENOKEY > ERR_MAX
+# undef ERR_MAX
+# define ERR_MAX ENOKEY
+# endif
+#endif
+#ifdef EKEYEXPIRED
+/* */
+    [ERR_REMAP (EKEYEXPIRED)] = N_("Key has expired"),
+# if EKEYEXPIRED > ERR_MAX
+# undef ERR_MAX
+# define ERR_MAX EKEYEXPIRED
+# endif
+#endif
+#ifdef EKEYREVOKED
+/* */
+    [ERR_REMAP (EKEYREVOKED)] = N_("Key has been revoked"),
+# if EKEYREVOKED > ERR_MAX
+# undef ERR_MAX
+# define ERR_MAX EKEYREVOKED
+# endif
+#endif
+#ifdef EKEYREJECTED
+/* */
+    [ERR_REMAP (EKEYREJECTED)] = N_("Key was rejected by service"),
+# if EKEYREJECTED > ERR_MAX
+# undef ERR_MAX
+# define ERR_MAX EKEYREJECTED
+# endif
+#endif
   };
 
 const int _sys_nerr_internal
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 955d93d8af..2d38ed6247 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -117,6 +117,9 @@ libc {
 
     # new syscalls
     setaltroot; add_key; request_key; keyctl;
+
+    #errlist-compat	129
+    _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
   }
   GLIBC_PRIVATE {
     # functions used in other libraries