Merge branch 'master' of git://github.com/thepowersgang/acess2
[tpg/acess2.git] / Usermode / Libraries / libc.so_src / errno.c
index a2d7890..295183c 100644 (file)
@@ -6,6 +6,7 @@
  * - errno and strerror
  */
 #include "lib.h"
+#include <stdio.h>
 #include <errno.h>
 #include <acess/sys.h>
 #include <string.h>
@@ -20,13 +21,16 @@ EXPORT char *strerror(int errnum)
        switch((enum libc_eErrorNumbers)errnum)
        {
        case EOK:       return "Success";
+       case ERANGE:    return "Value out of range";
+       case EDOM:      return "Value out of domain";
+       case EILSEQ:    return "Illegal character sequence";
+
        case ENOSYS:    return "Invalid instruction/syscall";
        case EINVAL:    return "Bad argument(s)";
        case EBADF:     return "Invalid file";
        case ENOMEM:    return "No free memory";
        case EACCES:    return "Not permitted";
        case EBUSY:     return "Resource is busy";
-       case ERANGE:    return "Value out of range";
        case ENOTFOUND: return "Item not found";
        case EROFS:     return "Read only filesystem";
        case ENOTIMPL:  return "Not implimented";
@@ -44,7 +48,16 @@ EXPORT char *strerror(int errnum)
        case EPERM:     return "Operation not permitted";
        case ENOTTY:    return "Not a TTY";
        case EAGAIN:    return "Try again";
+       case EFBIG:     return "File too big";
+       case E2BIG:     return "Value too big";
        case EALREADY:  return "Operation was no-op";
+       case ENOSPC:    return "No space left on the device";
+
+       case EAFNOSUPPORT:      return "Address family not supported";
+       case EADDRINUSE:        return "Address already in use";
+       case ETIMEDOUT: return "Operation timed out";
+       case EOPNOTSUPP:        return "Operation not supported on socket";
+
        case EINTERNAL: return "Internal error";
        }
        _SysDebug("strerror: errnum=%i unk", errnum);
@@ -62,3 +75,16 @@ EXPORT int strerror_r(int errnum, char *buf, size_t bufsiz)
        return 0;
 }
 
+// stdio.h
+EXPORT void perror(const char *s)
+{
+       int err = errno;
+       if( s && s[0] ) {
+               fprintf(stderr, "%s: (%i) %s\n", s, err, strerror(err));
+       }
+       else {
+               fprintf(stderr, "(%i) %s\n", err, strerror(err));
+       }
+       _SysDebug("perror('%s'): %s (%i)", s, strerror(err), err);
+}
+

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