From ac20ce1924a0eb563acfda6533a80701cd611bfa Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Fri, 24 Aug 2001 19:51:54 +0000 Subject: Canonicalize dirname(3) behavior. --- libbb/make_directory.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libbb/make_directory.c') diff --git a/libbb/make_directory.c b/libbb/make_directory.c index 7b7fde911..a06a410d2 100644 --- a/libbb/make_directory.c +++ b/libbb/make_directory.c @@ -50,13 +50,17 @@ int make_directory (char *path, long mode, int flags) if (stat (path, &st) < 0 && errno == ENOENT) { int status; - char *parent = dirname (path); - mode_t mask = umask (0); + char *buf, *parent; + mode_t mask; + + mask = umask (0); umask (mask); + buf = xstrdup (path); + parent = dirname (buf); status = make_directory (parent, (0777 & ~mask) | 0300, FILEUTILS_RECUR); - free (parent); + free (buf); if (status < 0 || make_directory (path, mode, 0) < 0) return -1; -- cgit v1.2.3