commit 6ac5f01cc94b2a6f7b6406ddd151e7b4d8fb1d7d
parent e795946971f08b80ce9518088e590afa64bf0179
Author: Michael Forney <mforney@mforney.org>
Date: Wed, 14 Dec 2016 19:40:05 -0800
mkdir -p: Fail if argument exists, but is not a directory
If it is a directory, we can just return straightaway.
Diffstat:
1 file changed, 9 insertions(+), 0 deletions(-)
diff --git a/libutil/mkdirp.c b/libutil/mkdirp.c
@@ -10,6 +10,15 @@ int
mkdirp(const char *path)
{
char tmp[PATH_MAX], *p;
+ struct stat st;
+
+ if (stat(path, &st) == 0) {
+ if (S_ISDIR(st.st_mode))
+ return 0;
+ errno = ENOTDIR;
+ weprintf("%s:", path);
+ return -1;
+ }
estrlcpy(tmp, path, sizeof(tmp));
for (p = tmp + (tmp[0] == '/'); *p; p++) {