mkdir fix: p_flag

This commit is contained in:
Your Name 2023-12-20 17:59:13 +03:00
parent 76dfcb5328
commit 5ee1be7e93
1 changed files with 15 additions and 12 deletions

View File

@ -6,11 +6,17 @@
#include <unistd.h> #include <unistd.h>
#include <errno.h> #include <errno.h>
#include "parse_mode.h" #include "parse_mode.h"
unsigned int v_flag;
int do_mkdir(const char *path, mode_t mode) { unsigned int v_flag;
unsigned int p_flag;
mode_t mode = 0777;
int do_mkdir(const char *path) {
if (mkdir(path, mode)) { if (mkdir(path, mode)) {
fprintf(stderr, "mkdir: %s %s\n", path, strerror(errno)); if (p_flag)
return 0;
fprintf(stderr, "mkdir: %s: %s\n", path, strerror(errno));
return 1; return 1;
} }
@ -20,7 +26,7 @@ int do_mkdir(const char *path, mode_t mode) {
return 0; return 0;
} }
int do_parents(const char *path, mode_t mode) { int do_parents(const char *path) {
if (path[0] == '.' || path[0] == '/') if (path[0] == '.' || path[0] == '/')
return 0; return 0;
@ -31,17 +37,14 @@ int do_parents(const char *path, mode_t mode) {
} }
const char *par = dirname(path2); const char *par = dirname(path2);
do_parents(par, mode); do_parents(par);
do_mkdir(path2, mode); int ret = do_mkdir(path2);
free(path2); free(path2);
return 0; return ret;
} }
int main(int argc, char **argv) { int main(int argc, char **argv) {
unsigned int p_flag = 0;
mode_t mode = 0777;
int opt; int opt;
while ((opt = getopt(argc, argv, "pm:v")) != -1) { while ((opt = getopt(argc, argv, "pm:v")) != -1) {
switch (opt) { switch (opt) {
@ -68,12 +71,12 @@ int main(int argc, char **argv) {
for (int i = 0; i < argc; i++) { for (int i = 0; i < argc; i++) {
if (p_flag) { if (p_flag) {
if (do_parents(argv[i], mode)) if (do_parents(argv[i]))
return 1; return 1;
} }
else { else {
if (do_mkdir(argv[i], mode)) if (do_mkdir(argv[i]))
return 1; return 1;
} }
} }