Command improvements for ubifs
authorSimon Kagstrom <simon.kagstrom@netinsight.net>
Tue, 7 Jul 2009 14:01:02 +0000 (16:01 +0200)
committerStefan Roese <sr@denx.de>
Thu, 9 Jul 2009 11:04:25 +0000 (13:04 +0200)
Check that an argument is passed to ubifsmount and that addresses and
sizes are actually numbers for ubifsload. Also improve the instructions
a bit.

Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
Signed-off-by: Stefan Roese <sr@denx.de>
common/cmd_ubifs.c

index d9f60d5..ed0e9db 100644 (file)
@@ -47,6 +47,10 @@ int do_ubifs_mount(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        char *vol_name;
        int ret;
 
+       if (argc != 2) {
+               cmd_usage(cmdtp);
+               return 1;
+       }
        vol_name = argv[1];
        debug("Using volume %s\n", vol_name);
 
@@ -88,6 +92,7 @@ int do_ubifs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 int do_ubifs_load(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        char *filename;
+       char *endp;
        int ret;
        u32 addr;
        u32 size = 0;
@@ -98,15 +103,25 @@ int do_ubifs_load(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        }
 
        if (argc < 3) {
-               printf("Usage:\n%s\n", cmdtp->usage);
+               cmd_usage(cmdtp);
                return -1;
        }
 
-       addr = simple_strtoul(argv[1], NULL, 16);
+       addr = simple_strtoul(argv[1], &endp, 16);
+       if (endp == argv[1]) {
+               cmd_usage(cmdtp);
+               return 1;
+       }
+
        filename = argv[2];
 
-       if (argc == 4)
-               size = simple_strtoul(argv[3], NULL, 16);
+       if (argc == 4) {
+               size = simple_strtoul(argv[3], &endp, 16);
+               if (endp == argv[3]) {
+                       cmd_usage(cmdtp);
+                       return 1;
+               }
+       }
        debug("Loading file '%s' to address 0x%08x (size %d)\n", filename, addr, size);
 
        ret = ubifs_load(filename, addr, size);
@@ -119,7 +134,8 @@ int do_ubifs_load(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 U_BOOT_CMD(
        ubifsmount, 2, 0, do_ubifs_mount,
        "mount UBIFS volume",
-       ""
+       "<volume-name>\n"
+       "    - mount 'volume-name' volume"
 );
 
 U_BOOT_CMD(ubifsls, 2, 0, do_ubifs_ls,