mirror of
https://github.com/git/git.git
synced 2024-05-18 21:46:26 +02:00
git_mkstemp_mode, xmkstemp_mode: variants of gitmkstemps with mode argument.
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>
This commit is contained in:
parent
00787ed55a
commit
b862b61c03
4
cache.h
4
cache.h
|
@ -641,6 +641,10 @@ int git_mkstemp(char *path, size_t n, const char *template);
|
||||||
|
|
||||||
int git_mkstemps(char *path, size_t n, const char *template, int suffix_len);
|
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!!
|
* NOTE NOTE NOTE!!
|
||||||
*
|
*
|
||||||
|
|
15
path.c
15
path.c
|
@ -162,7 +162,7 @@ int git_mkstemps(char *path, size_t len, const char *template, int suffix_len)
|
||||||
#undef TMP_MAX
|
#undef TMP_MAX
|
||||||
#define TMP_MAX 16384
|
#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[] =
|
static const char letters[] =
|
||||||
"abcdefghijklmnopqrstuvwxyz"
|
"abcdefghijklmnopqrstuvwxyz"
|
||||||
|
@ -204,7 +204,7 @@ int gitmkstemps(char *pattern, int suffix_len)
|
||||||
template[4] = letters[v % num_letters]; v /= num_letters;
|
template[4] = letters[v % num_letters]; v /= num_letters;
|
||||||
template[5] = 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)
|
if (fd > 0)
|
||||||
return fd;
|
return fd;
|
||||||
/*
|
/*
|
||||||
|
@ -226,6 +226,17 @@ int gitmkstemps(char *pattern, int suffix_len)
|
||||||
return -1;
|
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)
|
int validate_headref(const char *path)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
10
wrapper.c
10
wrapper.c
|
@ -204,6 +204,16 @@ int xmkstemp(char *template)
|
||||||
return fd;
|
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
|
* zlib wrappers to make sure we don't silently miss errors
|
||||||
* at init time.
|
* at init time.
|
||||||
|
|
Loading…
Reference in New Issue