
From: Rob Herring rob.herring@calxeda.com
Convert ext2ls and ext2load to use common device and partition parsing function.
Signed-off-by: Rob Herring rob.herring@calxeda.com --- common/cmd_ext2.c | 71 ++++++++++++----------------------------------------- 1 files changed, 16 insertions(+), 55 deletions(-)
diff --git a/common/cmd_ext2.c b/common/cmd_ext2.c index 35fb361..84dafd6 100644 --- a/common/cmd_ext2.c +++ b/common/cmd_ext2.c @@ -59,34 +59,24 @@ int do_ext2ls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *filename = "/"; - int dev=0; - int part=1; + int dev; + int part; char *ep; - block_dev_desc_t *dev_desc=NULL; + block_dev_desc_t *dev_desc; + disk_partition_t info; int part_length;
- if (argc < 3) + if (argc < 2) return cmd_usage(cmdtp);
- dev = (int)simple_strtoul (argv[2], &ep, 16); - dev_desc = get_dev(argv[1],dev); - - if (dev_desc == NULL) { - printf ("\n** Block device %s %d not supported\n", argv[1], dev); + part = get_device_and_partition(argv[1], argv[2], &dev_desc, &info); + if (part < 0) return 1; - } - - if (*ep) { - if (*ep != ':') { - puts ("\n** Invalid boot device, use `dev[:part]' **\n"); - return 1; - } - part = (int)simple_strtoul(++ep, NULL, 16); - }
if (argc == 4) filename = argv[3];
+ dev = dev_desc->dev; PRINTF("Using device %s %d:%d, directory: %s\n", argv[1], dev, part, filename);
if ((part_length = ext2fs_set_blk_dev(dev_desc, part)) == 0) { @@ -126,11 +116,11 @@ int do_ext2load (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *filename = NULL; char *ep; - int dev, part = 1; + int dev, part; ulong addr = 0, part_length; int filelen; disk_partition_t info; - block_dev_desc_t *dev_desc = NULL; + block_dev_desc_t *dev_desc; char buf [12]; unsigned long count; char *addr_str; @@ -171,43 +161,14 @@ int do_ext2load (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 1; }
- dev = (int)simple_strtoul (argv[2], &ep, 16); - dev_desc = get_dev(argv[1],dev); - if (dev_desc==NULL) { - printf ("** Block device %s %d not supported\n", argv[1], dev); + part = get_device_and_partition(argv[1], argv[2], &dev_desc, &info); + if (part < 0) return 1; - } - if (*ep) { - if (*ep != ':') { - puts ("** Invalid boot device, use `dev[:part]' **\n"); - return 1; - } - part = (int)simple_strtoul(++ep, NULL, 16); - } - - PRINTF("Using device %s%d, partition %d\n", argv[1], dev, part); - - if (part != 0) { - if (get_partition_info (dev_desc, part, &info)) { - printf ("** Bad partition %d **\n", part); - return 1; - } - - if (strncmp((char *)info.type, BOOT_PART_TYPE, sizeof(info.type)) != 0) { - printf ("** Invalid partition type "%.32s"" - " (expect "" BOOT_PART_TYPE "")\n", - info.type); - return 1; - } - printf ("Loading file "%s" " - "from %s device %d:%d (%.32s)\n", - filename, - argv[1], dev, part, info.name); - } else { - printf ("Loading file "%s" from %s device %d\n", - filename, argv[1], dev); - }
+ dev = dev_desc->dev; + printf("Loading file "%s" from %s device %d%c%c\n", + filename, argv[1], dev, + part ? ':' : ' ', part ? part + '0' : ' ');
if ((part_length = ext2fs_set_blk_dev(dev_desc, part)) == 0) { printf ("** Bad partition - %s %d:%d **\n", argv[1], dev, part);