From d8f2c10b7108fff6b7e437291093a1cadc15ab9f Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Sat, 6 May 2023 00:39:44 -0400 Subject: refactor --- src/commands/mkdir.c | 65 ---------------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 src/commands/mkdir.c (limited to 'src/commands/mkdir.c') 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; -} -- cgit v1.2.3-freya