summaryrefslogtreecommitdiffstats
path: root/common/cmd_fs.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/cmd_fs.c')
-rw-r--r--common/cmd_fs.c164
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