summaryrefslogtreecommitdiff
path: root/packages/uboot/u-boot-mkimage-gta01-native/uboot-strtoul.patch
diff options
context:
space:
mode:
authorMichael Lauer <mickey@vanille-media.de>2007-06-13 17:31:37 +0000
committerMichael Lauer <mickey@vanille-media.de>2007-06-13 17:31:37 +0000
commit49fc40335631daf60d2ead73ca6e346d52b0f305 (patch)
treef5bd9553945ef5bc014068a389707376b96c5e4b /packages/uboot/u-boot-mkimage-gta01-native/uboot-strtoul.patch
parent3ddc7888534e1c11c5a64b67aa2276f1baa57811 (diff)
parenta28b3ce0ceda1bb468005d0950cb2f9b453ac68b (diff)
merge of 'bc14395624375a26acbbd5e4c92900e2e5e456f0'
and 'dfe282821bb00a1e4097acfcf4e97e3d5169bdc4'
Diffstat (limited to 'packages/uboot/u-boot-mkimage-gta01-native/uboot-strtoul.patch')
-rw-r--r--packages/uboot/u-boot-mkimage-gta01-native/uboot-strtoul.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/packages/uboot/u-boot-mkimage-gta01-native/uboot-strtoul.patch b/packages/uboot/u-boot-mkimage-gta01-native/uboot-strtoul.patch
new file mode 100644
index 0000000000..a88e94b006
--- /dev/null
+++ b/packages/uboot/u-boot-mkimage-gta01-native/uboot-strtoul.patch
@@ -0,0 +1,43 @@
+Make simple_strtoul work with upper-case hex numbers.
+
+Signed-off-by: Harald Welte <laforge@openmoko.org>
+
+Index: u-boot/lib_generic/vsprintf.c
+===================================================================
+--- u-boot.orig/lib_generic/vsprintf.c
++++ u-boot/lib_generic/vsprintf.c
+@@ -25,21 +25,22 @@ unsigned long simple_strtoul(const char
+ {
+ unsigned long result = 0,value;
+
+- if (*cp == '0') {
+- cp++;
+- if ((*cp == 'x') && isxdigit(cp[1])) {
+- base = 16;
+- cp++;
+- }
+- if (!base) {
+- base = 8;
+- }
+- }
+ if (!base) {
+ base = 10;
++ if (*cp == '0') {
++ base = 8;
++ cp++;
++ 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) {
++ while (isxdigit(*cp) &&
++ (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
+ result = result*base + value;
+ cp++;
+ }