svn commit: r342915 - in stable/12/lib/libc: gen include string
Konstantin Belousov
kib at FreeBSD.org
Thu Jan 10 10:37:21 UTC 2019
Author: kib
Date: Thu Jan 10 10:37:19 2019
New Revision: 342915
URL: https://svnweb.freebsd.org/changeset/base/342915
Log:
MFC r342551, r342574:
Bump sys_errlist size to keep ABI backward-compatible for some time.
Modified:
stable/12/lib/libc/gen/errlst.c
stable/12/lib/libc/include/errlst.h
stable/12/lib/libc/string/strerror.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/lib/libc/gen/errlst.c
==============================================================================
--- stable/12/lib/libc/gen/errlst.c Thu Jan 10 08:54:33 2019 (r342914)
+++ stable/12/lib/libc/gen/errlst.c Thu Jan 10 10:37:19 2019 (r342915)
@@ -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 @@ const char *const sys_errlist[] = {
"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);
Modified: stable/12/lib/libc/include/errlst.h
==============================================================================
--- stable/12/lib/libc/include/errlst.h Thu Jan 10 08:54:33 2019 (r342914)
+++ stable/12/lib/libc/include/errlst.h Thu Jan 10 10:37:19 2019 (r342915)
@@ -42,4 +42,6 @@ extern const int __hidden_sys_nerr __hidden;
#define __hidden_sys_nerr sys_nerr
#endif
+extern const char __uprefix[] __hidden;
+
#endif /* __ERRLST_H__ */
Modified: stable/12/lib/libc/string/strerror.c
==============================================================================
--- stable/12/lib/libc/string/strerror.c Thu Jan 10 08:54:33 2019 (r342914)
+++ stable/12/lib/libc/string/strerror.c Thu Jan 10 10:37:19 2019 (r342915)
@@ -46,22 +46,19 @@ __FBSDID("$FreeBSD$");
#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
* statically linked binaries.
*/
static void
-errstr(int num, char *uprefix, char *buf, size_t len)
+errstr(int num, const char *uprefix, char *buf, size_t len)
{
char *t;
unsigned int uerr;
@@ -94,9 +91,9 @@ strerror_r(int errnum, char *strerrbuf, size_t buflen)
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;
More information about the svn-src-stable
mailing list