diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-05-06 00:39:44 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-05-06 00:39:44 -0400 |
commit | d8f2c10b7108fff6b7e437291093a1cadc15ab9f (patch) | |
tree | 3fc50a19d6fbb9c94a8fe147cd2a6c4ba7f59b8d /src/commands/mkdir.c | |
parent | ansii c (diff) | |
download | lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.tar.gz lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.tar.bz2 lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.zip |
refactor
Diffstat (limited to 'src/commands/mkdir.c')
-rw-r--r-- | src/commands/mkdir.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/src/commands/mkdir.c b/src/commands/mkdir.c deleted file mode 100644 index 02fccca..0000000 --- a/src/commands/mkdir.c +++ /dev/null @@ -1,65 +0,0 @@ -#include "../command.h" - -static struct { - bool make_parent; - mode_t mode; -} flags; - -static int short_arg(char c, char* next) { - switch (c) { - case 'p': - flags.make_parent = true; - break; - case 'm': - check_arg(next); - flags.mode = get_mode(next); - return ARG_USED; - default: - return ARG_INVALID; - } - return ARG_UNUSED; -} - -static void help(void) { - printf("Usage: mkdir [-m MODE] [-p] DIRECTORY...\n\n"); - printf("Create DIRECTORY\n\n"); - printf("\t-m\tMODE\n"); - printf("\t-p\tNo error if exists; make parent directories as needed\n"); -} - -static bool mkdir_parents(char* path) { - size_t i; - for (i = 1; i < strlen(path); i++) { - if (path[i] != '/') continue; - path[i] = '\0'; - if (mkdir(path, flags.mode) < 0 && errno != EEXIST) { - error_s("failed to create directory '%s': %s", path, strerror(errno)); - return false; - }; - path[i] = '/'; - } - return true; -} - -COMMAND(makedir) { - - int start, i; - - if (argc < 1) global_help(help); - - flags.make_parent = false; - flags.mode = 0755; - - start = parse_args(argc, argv, help, short_arg, NULL); - - for (i = start; i < argc; i++) { - if (flags.make_parent && !mkdir_parents(argv[i])) { - continue; - } - if (mkdir(argv[i], flags.mode) < 0) { - error_s("failed to create directory '%s': %s", argv[i], strerror(errno)); - } - } - - return EXIT_SUCCESS; -} |