about summary refs log tree commit diff
path: root/third_party/git/compat/mkdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/compat/mkdir.c')
-rw-r--r--third_party/git/compat/mkdir.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/third_party/git/compat/mkdir.c b/third_party/git/compat/mkdir.c
new file mode 100644
index 000000000000..9e253fb72f2d
--- /dev/null
+++ b/third_party/git/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;
+}