diff options
-rw-r--r-- | libbb/make_directory.c | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/libbb/make_directory.c b/libbb/make_directory.c index e25ac21..65be397 100644 --- a/libbb/make_directory.c +++ b/libbb/make_directory.c @@ -38,24 +38,6 @@ * Also create parent directories as necessary if flags contains * FILEUTILS_RECUR. */ -static mode_t default_permission(char *path, mode_t old_permision) -{ - struct stat statbuf; - char *pp; - - statbuf.st_mode = 0777; - - /* stat the directory */ - pp = strrchr(path, '/'); - if ((pp) && (pp != path)) { - *pp = '\0'; - stat(path, &statbuf); - *pp = '/'; - } - - return(statbuf.st_mode & old_permision); -} - int make_directory (char *path, long mode, int flags) { int ret; @@ -70,7 +52,19 @@ int make_directory (char *path, long mode, int flags) } if (mode == -1) { - mode = default_permission(path, 07777); + struct stat statbuf; + char *pp = strrchr(path, '/'); + + statbuf.st_mode = 0777; + + /* stat the directory */ + if ((pp) && (pp != path)) { + *pp = '\0'; + stat(path, &statbuf); + *pp = '/'; + } + + mode = statbuf.st_mode; } ret = mkdir(path, mode); |