Usermode/libc - Fixing errors from clang, disabled heap for native build
[tpg/acess2.git] / Usermode / Libraries / libc.so_src / errno.c
1 /*
2  * Acess2 C Library
3  * - By John Hodge (thePowersGang)
4  * 
5  * errno.c
6  * - errno and strerror
7  */
8 #include "lib.h"
9 #include <errno.h>
10 #include <acess/sys.h>
11 #include <string.h>
12
13 EXPORT int *libc_geterrno()
14 {
15         return &_errno;
16 }
17
18 EXPORT char *strerror(int errnum)
19 {
20         switch(errnum)
21         {
22         case EOK:       return "Success";
23         case EISDIR:    return "Is a directory";
24         case ENOTDIR:   return "Not a directory";
25         case ENOSYS:    return "Invalid instruction/syscall";
26         case ENOENT:    return "No such file or directory";
27         case EINVAL:    return "Bad arguments";
28         case EPERM:     return "Permissions error";
29         default:
30                 _SysDebug("strerror: errnum=%i unk", errnum);
31                 errno = EINVAL;
32                 return "unknown error";
33         }
34 }
35
36 EXPORT int strerror_r(int errnum, char *buf, size_t bufsiz)
37 {
38         const char *str = strerror(errnum);
39         if(!str)
40                 return -1;
41         
42         strncpy(buf, str, bufsiz);
43         return 0;
44 }
45

UCC git Repository :: git.ucc.asn.au