diff options
Diffstat (limited to 'common/cmd_fs.c')
-rw-r--r-- | common/cmd_fs.c | 164 |
1 files changed, 122 insertions, 42 deletions
diff --git a/common/cmd_fs.c b/common/cmd_fs.c index 6a0b4f7d44..bbbf8d006d 100644 --- a/common/cmd_fs.c +++ b/common/cmd_fs.c @@ -115,10 +115,16 @@ static int do_ls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return 0; } +static char cmd_ls_help[] = +"Usage: ls [OPTION]... [FILE]...\n" +"List information about the FILEs (the current directory by default).\n" +" -R list subdirectories recursively\n"; + U_BOOT_CMD_START(ls) .maxargs = CONFIG_MAXARGS, .cmd = do_ls, - .usage = "ls - list a file or directory\n", + .usage = "list a file or directory", + U_BOOT_CMD_HELP(cmd_ls_help) U_BOOT_CMD_END static int do_cd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) @@ -138,10 +144,15 @@ static int do_cd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return 0; } +static char cmd_cd_help[] = +"Usage: cd [directory]\n" +"change to directory. If called without argument, change to /\n"; + U_BOOT_CMD_START(cd) .maxargs = 2, .cmd = do_cd, - .usage = "cd - change current directory\n", + .usage = "change working directory", + U_BOOT_CMD_HELP(cmd_cd_help) U_BOOT_CMD_END static int do_pwd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) @@ -153,64 +164,100 @@ static int do_pwd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) U_BOOT_CMD_START(pwd) .maxargs = 2, .cmd = do_pwd, - .usage = "pwd - display current directory\n", + .usage = "print working directory", U_BOOT_CMD_END static int do_mkdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - int ret; + int i = 1; - ret = mkdir(argv[1]); - if (ret) { - perror("mkdir"); + if (argc < 2) { + u_boot_cmd_usage(cmdtp); return 1; } + while (i < argc) { + if (mkdir(argv[i])) { + printf("could not create %s: %s\n", argv[i], errno_str()); + return 1; + } + i++; + } + return 0; } +static char cmd_mkdir_help[] = +"Usage: mkdir [directories]\n" +"Create new directories\n"; + U_BOOT_CMD_START(mkdir) - .maxargs = 2, + .maxargs = CONFIG_MAXARGS, .cmd = do_mkdir, - .usage = "mkdir - create a new directory\n", + .usage = "make directories", + U_BOOT_CMD_HELP(cmd_mkdir_help) U_BOOT_CMD_END static int do_rm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - int ret; + int i = 1; - ret = unlink(argv[1]); - if (ret) { - perror("rm"); + if (argc < 2) { + u_boot_cmd_usage(cmdtp); return 1; } + while (i < argc) { + if (unlink(argv[i])) { + printf("could not remove %s: %s\n", argv[i], errno_str()); + return 1; + } + i++; + } + return 0; } +static char cmd_rm_help[] = +"Usage: rm [FILES]\n" +"Remove files\n"; + U_BOOT_CMD_START(rm) - .maxargs = 2, + .maxargs = CONFIG_MAXARGS, .cmd = do_rm, - .usage = "rm - remove files\n", + .usage = "remove files", + U_BOOT_CMD_HELP(cmd_rm_help) U_BOOT_CMD_END static int do_rmdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - int ret; + int i = 1; - ret = rmdir(argv[1]); - if (ret) { - perror("rmdir"); + if (argc < 2) { + u_boot_cmd_usage(cmdtp); return 1; } + while (i < argc) { + if (rmdir(argv[i])) { + printf("could not remove %s: %s\n", argv[i], errno_str()); + return 1; + } + i++; + } + return 0; } +static char cmd_rmdir_help[] = +"Usage: rmdir [directories]\n" +"Remove directories. The directories have to be empty.\n"; + U_BOOT_CMD_START(rmdir) - .maxargs = 2, + .maxargs = CONFIG_MAXARGS, .cmd = do_rmdir, - .usage = "rmdir <dir> - remove directories\n", + .usage = "remove directorie(s)", + U_BOOT_CMD_HELP(cmd_rmdir_help) U_BOOT_CMD_END static int do_mount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) @@ -232,7 +279,7 @@ static int do_mount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) } if (argc != 4) { - printf ("Usage:\n%s\n", cmdtp->usage); + u_boot_cmd_usage(cmdtp); return 1; } @@ -243,11 +290,23 @@ static int do_mount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return 0; } +static char cmd_mount_help[] = +"Usage: mount: list mounted filesystems\n" +"or: mount <device> <fstype> <mountpoint>\n" +"\n" +"Mount a filesystem of a given type to a mountpoint.\n" +"<device> can be one of /dev/* or some arbitrary string if no\n" +"device is needed for this driver (for example ramfs).\n" +"<fstype> is the filesystem driver to use. Try the 'devinfo' command\n" +"for a list of available drivers.\n" +"<mountpoint> must be an empty directory descending directly from the\n" +"root directory.\n"; + U_BOOT_CMD_START(mount) .maxargs = 4, .cmd = do_mount, - .usage = "mount - mount a filesystem to a device\n", - U_BOOT_CMD_HELP(" <device> <type> <path> add a filesystem of type 'type' on the given device") + .usage = "mount a filesystem to a device", + U_BOOT_CMD_HELP(cmd_mount_help) U_BOOT_CMD_END static int do_umount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) @@ -255,7 +314,7 @@ static int do_umount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) int ret = 0; if (argc != 2) { - printf ("Usage:\n%s\n", cmdtp->usage); + u_boot_cmd_usage(cmdtp); return 1; } @@ -264,13 +323,17 @@ static int do_umount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return 1; } return 0; - } +static char cmd_umount_help[] = +"Usage: umount <mountpoint>\n" +"umount a filesystem mounted on a specific mountpoint\n"; + U_BOOT_CMD_START(umount) .maxargs = 2, .cmd = do_umount, - .usage = "umount <path> - umount a filesystem mounted on <path>\n", + .usage = "umount a filesystem", + U_BOOT_CMD_HELP(cmd_umount_help) U_BOOT_CMD_END static int do_cat ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) @@ -279,36 +342,53 @@ static int do_cat ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) int fd, i; char *buf; int err = 0; + int args = 1; - fd = open(argv[1], 0); - if (fd < 0) { - perror("open"); + if (argc < 2) { + u_boot_cmd_usage(cmdtp); return 1; } buf = xmalloc(1024); - while((ret = read(fd, buf, 1024)) > 0) { - for(i = 0; i < ret; i++) { - if (isprint(buf[i]) || buf[i] == '\n' || buf[i] == '\t') - putc(buf[i]); - else - putc('.'); - } - if(ctrlc()) { - err = 1; + while (args < argc) { + fd = open(argv[args], 0); + if (fd < 0) { + printf("could not open %s: %s\n", argv[args], errno_str()); goto out; } + + while((ret = read(fd, buf, 1024)) > 0) { + for(i = 0; i < ret; i++) { + if (isprint(buf[i]) || buf[i] == '\n' || buf[i] == '\t') + putc(buf[i]); + else + putc('.'); + } + if(ctrlc()) { + err = 1; + close(fd); + goto out; + } + } + close(fd); + args++; } + out: free(buf); - close(fd); return err; } +static char cmd_cat_help[] = +"Usage: cat [FILES]\n" +"Concatenate files on stdout. Currently only printable characters\n" +"and \\n and \\t are printed, but this should be optional\n"; + U_BOOT_CMD_START(cat) - .maxargs = 2, + .maxargs = CONFIG_MAXARGS, .cmd = do_cat, - .usage = "cat - bla bla\n", + .usage = "Concatenate FILE(s)", + U_BOOT_CMD_HELP(cmd_cat_help) U_BOOT_CMD_END |