Misc debug to fix a printf bug, traced the bug to 64-bit division code
authorJohn Hodge <[email protected]>
Sun, 20 Jun 2010 09:53:38 +0000 (17:53 +0800)
committerJohn Hodge <[email protected]>
Sun, 20 Jun 2010 09:53:38 +0000 (17:53 +0800)
Usermode/Applications/ifconfig_src/main.c
Usermode/Libraries/libc.so_src/fileIO.c
Usermode/Libraries/libgcc.so_src/libgcc.c

index ba78838..2fe0f24 100644 (file)
@@ -39,8 +39,11 @@ int main(int argc, char *argv[])
        
        if( strcmp(argv[1], "autoconf") == 0 ) {
                DoAutoConfig(argv[2]);
+               return 0;
        }
        
+       PrintUsage(argv[0]);
+       
        return 0;
 }
 
@@ -125,6 +128,7 @@ int AddInterface( char *Device )
        
        dp = open(IPSTACK_ROOT, OPENFLAG_READ);
        ret = ioctl(dp, 4, Device);
+       printf("AddInterface: ret = 0x%x = %i\n", ret, ret);
        close(dp);
        
        if( ret < 0 ) {
index 1b1d3f3..7149b3e 100644 (file)
@@ -286,12 +286,12 @@ EXPORT int vsprintf(char * __s, const char *__format, va_list __args)
 \r
 //sprintfv\r
 /**\r
- \fn EXPORT void vsnprintf(char *buf, const char *format, va_list args)\r
- \brief Prints a formatted string to a buffer\r
\param buf    Pointer - Destination Buffer\r
\param format String - Format String\r
\param args   VarArgs List - Arguments\r
-*/\r
\fn EXPORT void vsnprintf(char *buf, const char *format, va_list args)\r
\brief Prints a formatted string to a buffer\r
* \param buf  Pointer - Destination Buffer\r
* \param format       String - Format String\r
* \param args VarArgs List - Arguments\r
+ */\r
 EXPORT int vsnprintf(char *buf, size_t __maxlen, const char *format, va_list args)\r
 {\r
        char    tmp[65];\r
@@ -441,6 +441,12 @@ const char cUCDIGITS[] = "0123456789ABCDEF";
 /**\r
  * \fn static void itoa(char *buf, uint64_t num, int base, int minLength, char pad, int bSigned)\r
  * \brief Convert an integer into a character string\r
+ * \param buf  Destination Buffer\r
+ * \param num  Number to convert\r
+ * \param base Base-n number output\r
+ * \param minLength    Minimum length of output\r
+ * \param pad  Padding used to ensure minLength\r
+ * \param bSigned      Signed number output?\r
  */\r
 EXPORT void itoa(char *buf, uint64_t num, size_t base, int minLength, char pad, int bSigned)\r
 {\r
@@ -460,6 +466,7 @@ EXPORT void itoa(char *buf, uint64_t num, size_t base, int minLength, char pad,
        } else\r
                bSigned = 0;\r
        \r
+       // Encode into reversed string\r
        while(num > base-1) {\r
                tmpBuf[pos++] = cUCDIGITS[ num % base ];\r
                num = (uint64_t) num / (uint64_t)base;          // Shift {number} right 1 digit\r
index 6e7fb08..794c209 100644 (file)
@@ -106,6 +106,7 @@ uint64_t __umoddi3(uint64_t Num, uint64_t Den)
        // Speedups for common operations
        if(Den == 1)    return 0;
        if(Den == 2)    return Num & 0x01;
+       if(Den == 8)    return Num & 0x07;
        if(Den == 16)   return Num & 0x0F;
        return Num - __udivdi3(Num, Den) * Den;
        #endif

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