diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2020-08-08 16:22:55 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2020-08-08 16:22:55 +0200 |
| commit | 284e1b7a5c4b1b0b0f38d16ecb1507ea4ac964f4 (patch) | |
| tree | 838e1c692f431ed83d615c5c0cfe63d57d757c64 /mkdir | |
| parent | 40560618aa165add94a80f70d2b187546ed47cfe (diff) | |
| download | coreutils-284e1b7a5c4b1b0b0f38d16ecb1507ea4ac964f4.tar.gz coreutils-284e1b7a5c4b1b0b0f38d16ecb1507ea4ac964f4.tar.bz2 coreutils-284e1b7a5c4b1b0b0f38d16ecb1507ea4ac964f4.zip | |
Moved everything in root
Diffstat (limited to 'mkdir')
| -rw-r--r-- | mkdir/mkdir.c | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/mkdir/mkdir.c b/mkdir/mkdir.c deleted file mode 100644 index 3ab73d1..0000000 --- a/mkdir/mkdir.c +++ /dev/null @@ -1,86 +0,0 @@ -#define _POSIX_C_SOURCE 2 - -#include <unistd.h> -#include <stdio.h> -#include <stdlib.h> -#include <stdbool.h> -#include <string.h> -#include <errno.h> -#include <sys/stat.h> -#include <sys/types.h> - -char *g_name = "mkdir"; - -int mkdir_wrapper(const char *path, mode_t mode, bool verbose) -{ - int ret; - - if ((ret = mkdir(path, mode)) == -1 && (verbose || errno != EEXIST)) - fprintf(stderr, "%s: cannot create directory '%s': %s\n", g_name, path, strerror(errno)); - else if (verbose) - printf("%s: created directory '%s'\n", g_name, path); - return ret; -} - -int main(int argc, char **argv) -{ - int option; - mode_t mode = 0755; - bool parent = false; - bool verbose = false; - - g_name = argv[0]; - if (argc == 1) - { - fprintf(stderr, "%s: missing operand\n", g_name); - return EXIT_FAILURE; - } - while ((option = getopt(argc, argv, "m:pv")) != -1) - { - switch (option) - { - case 'm': - sscanf(optarg, "%o", &mode); // TODO mode not working - break; - case 'p': - parent = true; - break; - case 'v': - verbose = true; - break; - } - } - for (; optind < argc; optind++) - { - // remove duplicate slash - for (size_t i = 0; argv[optind][i] != '\0'; i++) - { - if (argv[optind][i] == '/' && argv[optind][i + 1] == '/') - { - memmove(&argv[optind][i], &argv[optind][i + 1], strlen(&argv[optind][i + 1]) + 1); - i--; - } - } - - if (parent) - { - char *tmp; - char *searched = argv[optind]; - - if (*searched == '/') - searched++; - for (; (tmp = strchr(searched, '/')) != NULL; searched = tmp + 1) - { - if (tmp[1] == '\0') - continue; - *tmp = '\0'; - mkdir_wrapper(argv[optind], mode, verbose); - *tmp = '/'; - } - mkdir_wrapper(argv[optind], mode, verbose); - } - else - mkdir_wrapper(argv[optind], mode, verbose); - } - return EXIT_SUCCESS; -} |
