X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Ferrno.c;h=b5fe95874ed1c285c78c0532781e65ff4da932b4;hb=42b3957c0386ec9e466dc98b1318bf389cc2a4dc;hp=987732821746028def0df9fe03f5e848ffb39241;hpb=8cf9dc88c488ba959a211f1ec653a366d16e1531;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/errno.c b/Usermode/Libraries/libc.so_src/errno.c index 98773282..b5fe9587 100644 --- a/Usermode/Libraries/libc.so_src/errno.c +++ b/Usermode/Libraries/libc.so_src/errno.c @@ -8,23 +8,38 @@ #include "lib.h" #include #include +#include EXPORT int *libc_geterrno() { return &_errno; } -EXPORT const char *strerror(int errnum) +EXPORT char *strerror(int errnum) { switch(errnum) { + case EOK: return "Success"; + case EISDIR: return "Is a directory"; + case ENOTDIR: return "Not a directory"; case ENOSYS: return "Invalid instruction/syscall"; case ENOENT: return "No such file or directory"; case EINVAL: return "Bad arguments"; case EPERM: return "Permissions error"; default: _SysDebug("strerror: errnum=%i unk", errnum); + errno = EINVAL; return "unknown error"; } } +EXPORT int strerror_r(int errnum, char *buf, size_t bufsiz) +{ + const char *str = strerror(errnum); + if(!str) + return -1; + + strncpy(buf, str, bufsiz); + return 0; +} +