Usermode/libc - Add C99 errno values, fix compile error in strtoi
authorJohn Hodge <[email protected]>
Sat, 10 May 2014 09:06:05 +0000 (17:06 +0800)
committerJohn Hodge <[email protected]>
Sat, 10 May 2014 09:06:05 +0000 (17:06 +0800)
Usermode/Libraries/libc.so_src/errno.c
Usermode/Libraries/libc.so_src/include_exp/errno.enum.h
Usermode/Libraries/libc.so_src/strtoi.c

index 6f95457..d651ccc 100644 (file)
@@ -21,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";
@@ -46,6 +49,7 @@ EXPORT char *strerror(int errnum)
        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 EAFNOSUPPORT:      return "Address family not supported";
        case EINTERNAL: return "Internal error";
index f943654..5813cc5 100755 (executable)
@@ -1,13 +1,16 @@
 
 enum libc_eErrorNumbers {
        EOK,
+       EDOM,   // (C99) Value out of domain
+       EILSEQ, // (C99) Illegal multi-byte sequence
+       ERANGE, // (C99) Value out of range
+       
        ENOSYS, // Invalid Instruction
        EINVAL, // Invalid Paramater
        EBADF,  // Bad FD
        ENOMEM, // No free memory
        EACCES, // Not permitted
        EBUSY,  // Resource is busy
-       ERANGE, // Value out of range
        ENOTFOUND,      // Item not found
        EROFS,  // Read only
        ENOTIMPL,       // Not implemented
@@ -29,6 +32,7 @@ enum libc_eErrorNumbers {
        EALREADY,       // Operation was a NOP
        
        EFBIG,  // File too large
+       E2BIG,  // Argument list too large
 
        // psockets
        EAFNOSUPPORT,   
index 4fd2da5..9864fd5 100644 (file)
@@ -12,7 +12,7 @@
 
 unsigned long long strtoull(const char *str, char **end, int base)
 {
-       long long       ret = 0;
+       unsigned long long      ret = 0;
        
        if( !str || base < 0 || base > 36 || base == 1 ) {
                if(end)
@@ -138,7 +138,7 @@ long long strtoll(const char *str, char **end, int base)
        //_SysDebug("strtoll - neg=%i,ret=%llu", neg, ret);
 
        if( neg ) {
-               if( -ret < LLONG_MIN ) {
+               if( ret + LLONG_MIN > 0 ) {
                        errno = ERANGE;
                        return LLONG_MIN;
                }

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