Merge branch 'js/compat-mkdir'

Some mkdir(2) implementations do not want to see trailing slash in
its parameter.

* js/compat-mkdir:
  compat: some mkdir() do not like a slash at the end
This commit is contained in:
Junio C Hamano 2012-09-03 15:54:37 -07:00
commit a795b324b7
2 changed files with 29 additions and 0 deletions

24
compat/mkdir.c Normal file
View File

@ -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;
}

View File

@ -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 <libgen.h>
#else