فهرست منبع

mkdir: Use ArgParser, support creating multiple directories

Linus Groh 5 سال پیش
والد
کامیت
6fd7966d81
2فایلهای تغییر یافته به همراه18 افزوده شده و 17 حذف شده
  1. 3 3
      Base/usr/share/man/man1/mkdir.md
  2. 15 14
      Userland/mkdir.cpp

+ 3 - 3
Base/usr/share/man/man1/mkdir.md

@@ -1,16 +1,16 @@
 ## Name
 ## Name
 
 
-mkdir - create a directory
+mkdir - create directories
 
 
 ## Synopsis
 ## Synopsis
 
 
 ```**sh
 ```**sh
-$ mkdir path
+$ mkdir directories...
 ```
 ```
 
 
 ## Description
 ## Description
 
 
-Create a new empty directory at the given *path*.
+Create a new empty directory for each of the given *directories*.
 
 
 ## Examples
 ## Examples
 
 

+ 15 - 14
Userland/mkdir.cpp

@@ -1,5 +1,6 @@
 /*
 /*
  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020, Linus Groh <mail@linusgroh.de>
  * All rights reserved.
  * All rights reserved.
  *
  *
  * Redistribution and use in source and binary forms, with or without
  * Redistribution and use in source and binary forms, with or without
@@ -24,11 +25,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
  */
 
 
-#include <assert.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <LibCore/ArgsParser.h>
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <unistd.h>
 
 
@@ -39,14 +36,18 @@ int main(int argc, char** argv)
         return 1;
         return 1;
     }
     }
 
 
-    if (argc != 2) {
-        printf("usage: mkdir <path>\n");
-        return 1;
-    }
-    int rc = mkdir(argv[1], 0755);
-    if (rc < 0) {
-        perror("mkdir");
-        return 1;
+    Vector<const char*> directories;
+
+    Core::ArgsParser args_parser;
+    args_parser.add_positional_argument(directories, "Directories to create", "directories");
+    args_parser.parse(argc, argv);
+
+    bool has_errors = false;
+    for (auto& directory : directories) {
+        if (mkdir(directory, 0755) < 0) {
+            perror("mkdir");
+            has_errors = true;
+        }
     }
     }
-    return 0;
+    return has_errors ? 1 : 0;
 }
 }