diff options
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sha1_file.c b/sha1_file.c index 1747276647..fd6096f417 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -130,6 +130,25 @@ char *git_path(const char *fmt, ...) return ret; } +int safe_create_leading_directories(char *path) +{ + char *pos = path; + + while (pos) { + pos = strchr(pos, '/'); + if (!pos) + break; + *pos = 0; + if (mkdir(path, 0777) < 0) + if (errno != EEXIST) { + *pos = '/'; + return -1; + } + *pos++ = '/'; + } + return 0; +} + int get_sha1(const char *str, unsigned char *sha1) { static const char *prefix[] = { |