summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 00787ed)
raw | patch | inline | side by side (parent: 00787ed)
author | Matthieu Moy <Matthieu.Moy@imag.fr> | |
Mon, 22 Feb 2010 22:32:13 +0000 (23:32 +0100) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Mon, 22 Feb 2010 23:24:45 +0000 (15:24 -0800) |
gitmkstemps emulates the behavior of mkstemps, which is usually used
to create files in a shared directory like /tmp/, hence, it creates
files with permission 0600.
Add git_mkstemps_mode() that allows us to specify the desired mode, and
make git_mkstemps() a wrapper that always uses 0600 to call it. Later we
will use git_mkstemps_mode() when creating pack files.
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
to create files in a shared directory like /tmp/, hence, it creates
files with permission 0600.
Add git_mkstemps_mode() that allows us to specify the desired mode, and
make git_mkstemps() a wrapper that always uses 0600 to call it. Later we
will use git_mkstemps_mode() when creating pack files.
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
cache.h | patch | blob | history | |
path.c | patch | blob | history | |
wrapper.c | patch | blob | history |
index d478eff1f323f25a474cf019e0de2254c5ff0360..031963772356d925f3e1e338b72d5c8d38dd615e 100644 (file)
--- a/cache.h
+++ b/cache.h
int git_mkstemps(char *path, size_t n, const char *template, int suffix_len);
+/* set default permissions by passing mode arguments to open(2) */
+int git_mkstemps_mode(char *pattern, int suffix_len, int mode);
+int git_mkstemp_mode(char *pattern, int mode);
+
/*
* NOTE NOTE NOTE!!
*
index ab2e3687ab1c58c4a9e87679093208a701a0bfbd..03d284ba8bc76d873d289efbf45404cad58f111a 100644 (file)
--- a/path.c
+++ b/path.c
#undef TMP_MAX
#define TMP_MAX 16384
-int gitmkstemps(char *pattern, int suffix_len)
+int git_mkstemps_mode(char *pattern, int suffix_len, int mode)
{
static const char letters[] =
"abcdefghijklmnopqrstuvwxyz"
template[4] = letters[v % num_letters]; v /= num_letters;
template[5] = letters[v % num_letters]; v /= num_letters;
- fd = open(pattern, O_CREAT | O_EXCL | O_RDWR, 0600);
+ fd = open(pattern, O_CREAT | O_EXCL | O_RDWR, mode);
if (fd > 0)
return fd;
/*
return -1;
}
+int git_mkstemp_mode(char *pattern, int mode)
+{
+ /* mkstemp is just mkstemps with no suffix */
+ return git_mkstemps_mode(pattern, 0, mode);
+}
+
+int gitmkstemps(char *pattern, int suffix_len)
+{
+ return git_mkstemps_mode(pattern, suffix_len, 0600);
+}
+
int validate_headref(const char *path)
{
struct stat st;
diff --git a/wrapper.c b/wrapper.c
index 0e3e20a3fd38f6f99da44483ee0bb9753f2b217a..673762fde910b2a1740194461f4b0cdd15ce49ca 100644 (file)
--- a/wrapper.c
+++ b/wrapper.c
return fd;
}
+int xmkstemp_mode(char *template, int mode)
+{
+ int fd;
+
+ fd = git_mkstemp_mode(template, mode);
+ if (fd < 0)
+ die_errno("Unable to create temporary file");
+ return fd;
+}
+
/*
* zlib wrappers to make sure we don't silently miss errors
* at init time.