9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 653911418286685682f182efffb71d66b0aa29bf
parent abe6c3c28a0281b373311c19b4e1512e398d5cb2
Author: Roberto Vargas <roberto.vargas@arm.com>
Date:   Fri, 23 Nov 2018 17:34:55 +0000

[libc] Fix strerror()

The script was failling and the sys/errno.h were wrong in some
cases. This patch also merges the unknown case of strerror
to make easier the relocation of error messages.

Change-Id: Id480aac1deebc4e1d9e72188268f9f4ff7a21267

Diffstat:
Minclude/bits/dragonfly/sys/errno.h | 9+--------
Minclude/bits/linux/sys/errno.h | 1+
Minclude/bits/netbsd/sys/errno.h | 2+-
Minclude/bits/openbsd/sys/errno.h | 2+-
Minclude/bits/rcode/sys/errno.h | 1+
Msrc/libc/arch/mkerrstr | 4+++-
Msrc/libc/string/strerror.c | 7+++----
7 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/include/bits/dragonfly/sys/errno.h b/include/bits/dragonfly/sys/errno.h @@ -94,11 +94,4 @@ extern const int _sys_nerr; #define EMULTIHOP 90 /* Multihop attempted */ #define ENOLINK 91 /* Link has been severed */ #define EPROTO 92 /* Protocol error */ -#define ENOMEDIUM 93 /* linux */ -#define EUNUSED94 94 /* */ -#define EUNUSED95 95 /* */ -#define EUNUSED96 96 /* */ -#define EUNUSED97 97 /* */ -#define EUNUSED98 98 /* */ -#define EASYNC 99 /* XXX */ -#define ELAST 99 /* Must be equal largest errno */ +#define EUNKNOWN 93 /* Unknown error */ diff --git a/include/bits/linux/sys/errno.h b/include/bits/linux/sys/errno.h @@ -133,3 +133,4 @@ extern const int _sys_nerr; #define ENOTRECOVERABLE 131 /* State not recoverable */ #define ERFKILL 132 /* Operation not possible due to RF-kill */ #define EHWPOISON 133 /* Memory page has hardware error */ +#define EUNKNOWN 134 /* Unknown error */ diff --git a/include/bits/netbsd/sys/errno.h b/include/bits/netbsd/sys/errno.h @@ -97,5 +97,5 @@ extern const int _sys_nerr; #define ENOATTR 93 /* Attribute not found */ #define EMULTIHOP 94 /* Multihop attempted */ #define ENOLINK 95 /* Link has been severed */ -#define ELAST 96 /* Must equal largest errno */ #define EPROTO 96 /* Protocol error */ +#define EUNKNOWN 97 /* Unknown error */ diff --git a/include/bits/openbsd/sys/errno.h b/include/bits/openbsd/sys/errno.h @@ -96,5 +96,5 @@ extern const int _sys_nerr; #define EBADMSG 92 /* Bad message */ #define ENOTRECOVERABLE 93 /* State not recoverable */ #define EOWNERDEAD 94 /* Previous owner died */ -#define ELAST 95 /* Must be equal largest errno */ #define EPROTO 95 /* Protocol error */ +#define EUNKNOWN 96 /* Unknown error */ diff --git a/include/bits/rcode/sys/errno.h b/include/bits/rcode/sys/errno.h @@ -44,3 +44,4 @@ extern const int _sys_nerr; #define ETXTBSY 38 /* Text file busy */ #define EDOM 39 /* Math argument out of domain of func */ #define ERANGE 40 /* Math result not representable */ +#define EUNKNOWN 41 /* Unknown error */ diff --git a/src/libc/arch/mkerrstr b/src/libc/arch/mkerrstr @@ -18,6 +18,8 @@ END { print "char *const _sys_errlist[] = {" for (i in errstr) printf "\t%-20.20s = \"%s\",\n", "[" i "]", errstr[i] + printf "\t%-20.20s = \"%s\",\n", "[EUNKNOWN]", "Unknown error" + print "};" - print "const int _sys_nerr =", $2 + 1 ";" + print "const int _sys_nerr =", max";" }' $@ > $$.tmp && mv $$.tmp _sys_errlist.c diff --git a/src/libc/string/strerror.c b/src/libc/string/strerror.c @@ -5,8 +5,7 @@ char * strerror(int errnum) { - if (errnum < _sys_nerr) - return _sys_errlist[errnum]; - else - return "Unknown error"; + if (errnum > _sys_nerr) + errnum = EUNKNOWN; + return _sys_errlist[errnum]; }