From 5e5371907e949285a80fb0ba538cdf59e98a667b Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Sat, 3 Aug 2019 21:40:53 -0400 Subject: use mode_t, do numeric modes --- mkdir.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mkdir.c b/mkdir.c index 0753cb9..853980e 100644 --- a/mkdir.c +++ b/mkdir.c @@ -27,19 +27,26 @@ #include #include #include +#include #include #include #include enum { SETMODE = 1 << 0, PARENTS = 1 << 1 }; -static int translate_mode(const char *s) +static mode_t translate_mode(const char *s) { - /* TODO: same as chmod */ + char *end = NULL; + mode_t mode = (mode_t)strtol(s, &end, 8); + + if (*end == '\0') { + return mode; + } + return 0; } -static int mk_dir(char *path, int mode, int flags) +static int mk_dir(char *path, mode_t mode, int flags) { if (flags & PARENTS) { char parent[strlen(path) + 1]; @@ -74,7 +81,7 @@ int main(int argc, char *argv[]) { setlocale(LC_ALL, ""); - int mode = S_IRWXU | S_IRWXG | S_IRWXO; + mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO; int flags = 0; int c; -- cgit v1.2.1