From: Joachim Schmitz Date: Fri, 24 Aug 2012 10:31:03 +0000 (+0200) Subject: compat: some mkdir() do not like a slash at the end X-Git-Tag: v1.8.0-rc0~72^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=0539ecfdfce677b05992af5e9899a9e974130400;p=git.git compat: some mkdir() do not like a slash at the end Introduce a compatibility helper for platforms with such a mkdir(). Signed-off-by: Joachim Schmitz Signed-off-by: Junio C Hamano --- diff --git a/compat/mkdir.c b/compat/mkdir.c new file mode 100644 index 000000000..9e253fb72 --- /dev/null +++ b/compat/mkdir.c @@ -0,0 +1,24 @@ +#include "../git-compat-util.h" +#undef mkdir + +/* for platforms that can't deal with a trailing '/' */ +int compat_mkdir_wo_trailing_slash(const char *dir, mode_t mode) +{ + int retval; + char *tmp_dir = NULL; + size_t len = strlen(dir); + + if (len && dir[len-1] == '/') { + if ((tmp_dir = strdup(dir)) == NULL) + return -1; + tmp_dir[len-1] = '\0'; + } + else + tmp_dir = (char *)dir; + + retval = mkdir(tmp_dir, mode); + if (tmp_dir != dir) + free(tmp_dir); + + return retval; +} diff --git a/git-compat-util.h b/git-compat-util.h index 35b095e8a..34f040f59 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -162,6 +162,11 @@ #define probe_utf8_pathname_composition(a,b) #endif +#ifdef MKDIR_WO_TRAILING_SLASH +#define mkdir(a,b) compat_mkdir_wo_trailing_slash((a),(b)) +extern int compat_mkdir_wo_trailing_slash(const char*, mode_t); +#endif + #ifndef NO_LIBGEN_H #include #else