Ust cleaning up
[tpg/acess2.git] / Kernel / lib.c
index 116dce6..586a2e8 100644 (file)
@@ -232,7 +232,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                        pad = ' ';
                
                // - Minimum length
-               if(c == '*') {
+               if(c == '*') {  // Dynamic length
                        minSize = val;
                        val = va_arg(args, Uint);
                        c = *__format++;
@@ -270,10 +270,14 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                {
                case 'd':
                case 'i':
-                       if( (isLongLong && val >> 63) || (!isLongLong && val >> 31) ) {
+                       if( isLongLong && val >> 63 ) {
                                PUTCH('-');
                                val = -val;
                        }
+                       else if( !isLongLong && val >> 31 ) {
+                               PUTCH('-');
+                               val = -(Sint32)val;
+                       }
                        itoa(p, val, 10, minSize, pad);
                        goto printString;
                case 'u':
@@ -296,7 +300,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                
                // String - Null Terminated Array
                case 's':
-                       p = (char*)(Uint)val;
+                       p = (char*)(tVAddr)val;
                printString:
                        if(!p)          p = "(null)";
                        len = strlen(p);
@@ -306,9 +310,8 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                        break;
                
                case 'C':       // Non-Null Terminated Character Array
-                       p = (char*)(Uint)val;
+                       p = (char*)(tVAddr)val;
                        if(!p)  goto printString;
-                       //while(minSize--)      PUTCH(*p++);
                        while(minSize--)        PUTCH(*p++);
                        break;
                
@@ -688,6 +691,9 @@ Uint rand(void)
  */
 int CheckString(char *String)
 {
+       if( !MM_GetPhysAddr( (tVAddr)String ) )
+               return 0;
+       
        // Check 1st page
        if( MM_IsUser( (tVAddr)String ) )
        {

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