summaryrefslogtreecommitdiff
path: root/fs/fs.c
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-10-30 12:04:19 +0000
committerTom Rini <trini@ti.com>2012-11-04 11:00:31 -0700
commit3f83c87ee58d86e9a9d2e50b62f38c728bfb31f6 (patch)
tree872af7c007d0f4ee399dc3531e3c88ecfac25363 /fs/fs.c
parentb6a30444365be7ef4d323b50573a2c591ef36d08 (diff)
downloadu-boot-3f83c87ee58d86e9a9d2e50b62f38c728bfb31f6.tar.gz
fs: fix number base behaviour change in fatload/ext*load
Commit 045fa1e "fs: add filesystem switch libary, implement ls and fsload commands" unified the implementation of fatload and ext*load with the new command fsload. However, this altered the interpretation of command-line numbers from always being base-16, to requiring a "0x" prefix for base-16 numbers. Enhance do_fsload() to allow commands to specify which base to use. Use base 0, thus requiring a "0x" prefix for the new fsload command. This feels much cleaner than assuming base 16. Use base 16 for the pre-existing fatload and ext*load to prevent a change in behaviour. Use base 16 exclusively for the loadaddr environment variable, since that variable is interpreted in multiple places, so we don't want the behaviour to change. Update command help text to make it clear where numbers are assumed to be hex, and where an explicit "0x" prefix is required. Signed-off-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Diffstat (limited to 'fs/fs.c')
-rw-r--r--fs/fs.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/fs.c b/fs/fs.c
index f570312610..1553af59d3 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -248,7 +248,7 @@ int fs_read(const char *filename, ulong addr, int offset, int len)
}
int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
- int fstype)
+ int fstype, int cmdline_base)
{
unsigned long addr;
const char *addr_str;
@@ -267,7 +267,7 @@ int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
return 1;
if (argc >= 4) {
- addr = simple_strtoul(argv[3], NULL, 0);
+ addr = simple_strtoul(argv[3], NULL, cmdline_base);
} else {
addr_str = getenv("loadaddr");
if (addr_str != NULL)
@@ -285,11 +285,11 @@ int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
}
}
if (argc >= 6)
- bytes = simple_strtoul(argv[5], NULL, 0);
+ bytes = simple_strtoul(argv[5], NULL, cmdline_base);
else
bytes = 0;
if (argc >= 7)
- pos = simple_strtoul(argv[6], NULL, 0);
+ pos = simple_strtoul(argv[6], NULL, cmdline_base);
else
pos = 0;