Merge to Fedora kernel-2.6.7-1.441
[linux-2.6.git] / lib / vsprintf.c
index b6d2833..4969239 100644 (file)
@@ -40,11 +40,14 @@ unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base)
                if (*cp == '0') {
                        base = 8;
                        cp++;
-                       if ((*cp == 'x') && isxdigit(cp[1])) {
+                       if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
                                cp++;
                                base = 16;
                        }
                }
+       } else if (base == 16) {
+               if (cp[0] == '0' && toupper(cp[1]) == 'X')
+                       cp += 2;
        }
        while (isxdigit(*cp) &&
               (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
@@ -88,11 +91,14 @@ unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int base)
                if (*cp == '0') {
                        base = 8;
                        cp++;
-                       if ((*cp == 'x') && isxdigit(cp[1])) {
+                       if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
                                cp++;
                                base = 16;
                        }
                }
+       } else if (base == 16) {
+               if (cp[0] == '0' && toupper(cp[1]) == 'X')
+                       cp += 2;
        }
        while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
            ? toupper(*cp) : *cp)-'A'+10) < base) {