Define compat version of mkdtemp for systems lacking it
PATCH 1/1 Define compat version of mkdtemp for systems lacking it
Solaris 9 doesn't have mkdtemp() so we need to emulate it for the rsync transport implementation. Since Solaris 9 is lacking this function we can also reasonably assume it is not available on Solaris 8 either. The new Makfile definition NO_MKDTEMP can be set to enable the git compat version.
Signed-off-by Shawn O. Pearce <[email protected]>
---
On top of 'next' so that the db/fetch-pack series will actually build on Solaris 9.
Makefile | 8 ++++++++ compat/mkdtemp.c | 8 ++++++++ git-compat-util.h | 5 +++++ 3 files changed, 21 insertions(+), 0 deletions(-) create mode 100644 compat/mkdtemp.c
Makefile +8 -0
@@ -38,6 +38,8 @@ all:: # # Define NO_SETENV if you don't have setenv in the C library. # +# Define NO_MKDTEMP if you don't have mkdtemp in the C library. +# # Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link. # Enable it on Windows. By default, symrefs are still used. #
@@ -414,12 +416,14 @@ ifeq ($(uname_S),SunOS) NEEDS_LIBICONV = YesPlease NO_UNSETENV = YesPlease NO_SETENV = YesPlease + NO_MKDTEMP = YesPlease NO_C99_FORMAT = YesPlease NO_STRTOUMAX = YesPlease endif ifeq ($(uname_R),5.9) NO_UNSETENV = YesPlease NO_SETENV = YesPlease + NO_MKDTEMP = YesPlease NO_C99_FORMAT = YesPlease NO_STRTOUMAX = YesPlease endif
@@ -610,6 +614,10 @@ ifdef NO_SETENV COMPAT_CFLAGS += -DNO_SETENV COMPAT_OBJS += compat/setenv.o endif +ifdef NO_MKDTEMP + COMPAT_CFLAGS += -DNO_MKDTEMP + COMPAT_OBJS += compat/mkdtemp.o +endif ifdef NO_UNSETENV COMPAT_CFLAGS += -DNO_UNSETENV COMPAT_OBJS += compat/unsetenv.o
compat/mkdtemp.c new file +8 -0
@@ -0,0 +1,8 @@ +#include "../git-compat-util.h" + +char *gitmkdtemp (char *template) +{ +if (!mktemp (template) ||mkdir (template,0700 )) +return NULL ; +return template; +}
git-compat-util.h +5 -0
@@ -147,6 +147,11 @@ extern ssize_t git_pread(int fd, void *buf, size_t count, off_t offset);extern int gitsetenv (const char *,const char *,int );#endif +#ifdef NO_MKDTEMP +#define mkdtemp gitmkdtemp +extern char *gitmkdtemp (char *); +#endif +#ifdef NO_UNSETENV #define unsetenv gitunsetenvextern void gitunsetenv (const char *);
Signature · 1 line
1.5.3.4.1270.g2fe543
Hi,
Quoted 2 lines · Shawn O. Pearce
Solaris 9 doesn't have
mkdtemp()so we need to emulate it for the rsync transport implementation.
Thanks. I've been meaning to do it for msysGit, but I never came around to do it...
Ciao,
Dscho