aboutsummaryrefslogtreecommitdiff
path: root/rcynic/rcynic.c
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2006-09-20 18:58:18 +0000
committerRob Austein <sra@hactrn.net>2006-09-20 18:58:18 +0000
commit16a84fd500fa4addc7d0226e20e2bfb66091994d (patch)
tree9bdf93d4a99f4e598f0b1c068f32aa8c17bfed74 /rcynic/rcynic.c
parent74310be2f306ad34dd434b0b4b106f81cad6daed (diff)
Checkpoint
svn path=/rcynic/rcynic.c; revision=296
Diffstat (limited to 'rcynic/rcynic.c')
-rw-r--r--rcynic/rcynic.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/rcynic/rcynic.c b/rcynic/rcynic.c
index 81a236c9..e99b351d 100644
--- a/rcynic/rcynic.c
+++ b/rcynic/rcynic.c
@@ -150,3 +150,25 @@ static int run(char *prog, ...)
va_end(ap);
return ret;
}
+
+/*
+ * Make a directory if it doesn't already exist.
+ */
+
+static int mkdir_maybe(char *name)
+{
+ char *b, buffer[FILENAME_MAX];
+
+ if (!name || strlen(name) >= sizeof(buffer) - 2)
+ return 0;
+ strcpy(buffer, name);
+ strcat(buffer, "/.");
+ if (access(buffer, F_OK) == 0)
+ return 1;
+ if ((b = strrchr(strrchr(buffer, '/'), '/')) != 0) {
+ *b = '\0';
+ if (!mkdir_maybe(buffer))
+ return 0;
+ }
+ return mkdir(name, 0777) == 0;
+}