summaryrefslogtreecommitdiffstats
path: root/commands/mkdir.c
diff options
context:
space:
mode:
authorSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-09-27 11:59:36 +0200
committerSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-09-27 11:59:36 +0200
commit85db86ab5b0f6f8cc97444b24eaed1e98e9046d9 (patch)
tree3e1db4c6856c520659a608b484e19fb0e6d06353 /commands/mkdir.c
parent46d570539510929210511b16b066c82ffe737c0a (diff)
downloadbarebox-85db86ab5b0f6f8cc97444b24eaed1e98e9046d9.tar.gz
barebox-85db86ab5b0f6f8cc97444b24eaed1e98e9046d9.tar.xz
implement mkdir -p #2
Diffstat (limited to 'commands/mkdir.c')
-rw-r--r--commands/mkdir.c30
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;