Date: Thu, 10 Jan 2019 10:37:20 +0000 (UTC) From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r342915 - in stable/12/lib/libc: gen include string Message-ID: <201901101037.x0AAbKFc013530@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201901101037.x0AAbKFc013530>