Page MenuHomeFreeBSD

D18656.id52318.diff
No OneTemporary

D18656.id52318.diff

Index: lib/libc/gen/errlst.c
===================================================================
--- lib/libc/gen/errlst.c
+++ lib/libc/gen/errlst.c
@@ -33,9 +33,12 @@
__SCCSID("@(#)errlst.c 8.2 (Berkeley) 11/16/93");
__FBSDID("$FreeBSD$");
+#include <errno.h>
#include <stdio.h>
#include "errlst.h"
+const char __uprefix[] = "Unknown error";
+
const char *const sys_errlist[] = {
"No error: 0", /* 0 - ENOERROR */
"Operation not permitted", /* 1 - EPERM */
@@ -155,8 +158,67 @@
"Not permitted in capability mode", /* 94 - ECAPMODE */
"State not recoverable", /* 95 - ENOTRECOVERABLE */
"Previous owner died", /* 96 - EOWNERDEAD */
+
+/*
+ * Reserved space in sys_errlist, take the next slot for a next error code.
+ * Reserve prevents the array size from changing for some time.
+ */
+ __uprefix, /* 97 */
+ __uprefix, /* 98 */
+ __uprefix, /* 99 */
+ __uprefix, /* 100 */
+ __uprefix, /* 101 */
+ __uprefix, /* 102 */
+ __uprefix, /* 103 */
+ __uprefix, /* 104 */
+ __uprefix, /* 105 */
+ __uprefix, /* 106 */
+ __uprefix, /* 107 */
+ __uprefix, /* 108 */
+ __uprefix, /* 109 */
+ __uprefix, /* 110 */
+ __uprefix, /* 111 */
+ __uprefix, /* 112 */
+ __uprefix, /* 113 */
+ __uprefix, /* 114 */
+ __uprefix, /* 115 */
+ __uprefix, /* 116 */
+ __uprefix, /* 117 */
+ __uprefix, /* 118 */
+ __uprefix, /* 119 */
+ __uprefix, /* 120 */
+ __uprefix, /* 121 */
+ __uprefix, /* 122 */
+ __uprefix, /* 123 */
+ __uprefix, /* 124 */
+ __uprefix, /* 125 */
+ __uprefix, /* 126 */
+ __uprefix, /* 127 */
+ __uprefix, /* 128 */
+ __uprefix, /* 129 */
+ __uprefix, /* 130 */
+ __uprefix, /* 131 */
+ __uprefix, /* 132 */
+ __uprefix, /* 133 */
+ __uprefix, /* 134 */
+ __uprefix, /* 135 */
+ __uprefix, /* 136 */
+ __uprefix, /* 137 */
+ __uprefix, /* 138 */
+ __uprefix, /* 139 */
+ __uprefix, /* 140 */
+ __uprefix, /* 141 */
+ __uprefix, /* 142 */
+ __uprefix, /* 143 */
+ __uprefix, /* 144 */
+ __uprefix, /* 145 */
+ __uprefix, /* 146 */
+ __uprefix, /* 147 */
+ __uprefix, /* 148 */
+ __uprefix, /* 149 */
+ __uprefix, /* 150 */
};
-const int sys_nerr = sizeof(sys_errlist) / sizeof(sys_errlist[0]);
+const int sys_nerr = ELAST + 1;
#ifdef PIC
__strong_reference(sys_errlist, __hidden_sys_errlist);
Index: lib/libc/include/errlst.h
===================================================================
--- lib/libc/include/errlst.h
+++ lib/libc/include/errlst.h
@@ -42,4 +42,6 @@
#define __hidden_sys_nerr sys_nerr
#endif
+extern const char __uprefix[] __hidden;
+
#endif /* __ERRLST_H__ */
Index: lib/libc/string/strerror.c
===================================================================
--- lib/libc/string/strerror.c
+++ lib/libc/string/strerror.c
@@ -46,15 +46,12 @@
#include "errlst.h"
-#define UPREFIX "Unknown error"
-
/*
- * Define a buffer size big enough to describe a 64-bit signed integer
- * converted to ASCII decimal (19 bytes), with an optional leading sign
- * (1 byte); finally, we get the prefix, delimiter (": ") and a trailing
- * NUL from UPREFIX.
+ * Define buffer big enough to contain delimiter (": ", 2 bytes),
+ * 64-bit signed integer converted to ASCII decimal (19 bytes) with
+ * optional leading sign (1 byte), and a trailing NUL.
*/
-#define EBUFSIZE (20 + 2 + sizeof(UPREFIX))
+#define EBUFSIZE (2 + 19 + 1 + 1)
/*
* Doing this by hand instead of linking with stdio(3) avoids bloat for
@@ -94,9 +91,9 @@
if (errnum < 0 || errnum >= __hidden_sys_nerr) {
errstr(errnum,
#if defined(NLS)
- catgets(catd, 1, 0xffff, UPREFIX),
+ catgets(catd, 1, 0xffff, __uprefix),
#else
- UPREFIX,
+ __uprefix,
#endif
strerrbuf, buflen);
retval = EINVAL;

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 18, 10:23 PM (5 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23867062
Default Alt Text
D18656.id52318.diff (3 KB)

Event Timeline