diff options
author | Sascha Hauer <sha@octopus.labnet.pengutronix.de> | 2007-09-27 11:59:36 +0200 |
---|---|---|
committer | Sascha Hauer <sha@octopus.labnet.pengutronix.de> | 2007-09-27 11:59:36 +0200 |
commit | 85db86ab5b0f6f8cc97444b24eaed1e98e9046d9 (patch) | |
tree | 3e1db4c6856c520659a608b484e19fb0e6d06353 /commands/mkdir.c | |
parent | 46d570539510929210511b16b066c82ffe737c0a (diff) | |
download | barebox-85db86ab5b0f6f8cc97444b24eaed1e98e9046d9.tar.gz barebox-85db86ab5b0f6f8cc97444b24eaed1e98e9046d9.tar.xz |
implement mkdir -p #2
Diffstat (limited to 'commands/mkdir.c')
-rw-r--r-- | commands/mkdir.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/commands/mkdir.c b/commands/mkdir.c index 4889ec4cf0..d6464e11c8 100644 --- a/commands/mkdir.c +++ b/commands/mkdir.c @@ -24,22 +24,40 @@ #include <command.h> #include <fs.h> #include <errno.h> +#include <getopt.h> static int do_mkdir (cmd_tbl_t *cmdtp, int argc, char *argv[]) { - int i = 1; + int opt, parent = 0, ret; - if (argc < 2) { + getopt_reset(); + + while((opt = getopt(argc, argv, "p")) > 0) { + switch(opt) { + case 'p': + parent = 1; + break; + default: + return 1; + + } + } + + if (optind == argc) { u_boot_cmd_usage(cmdtp); return 1; } - while (i < argc) { - if (mkdir(argv[i], 0)) { - printf("could not create %s: %s\n", argv[i], errno_str()); + while (optind < argc) { + if (parent) + ret = make_directory(argv[optind]); + else + ret = mkdir(argv[optind], 0); + if (ret) { + printf("could not create %s: %s\n", argv[optind], errno_str()); return 1; } - i++; + optind++; } return 0; |