summaryrefslogtreecommitdiff
path: root/tempfile.c
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2020-04-27 16:27:54 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-04-27 18:27:35 (GMT)
commitbef0413c3595acb469cc212792c12b7106048ddc (patch)
treead4b4ff03a2e9014e564eb46dd2ad860335b9cf4 /tempfile.c
parente870325ee8575d5c3d7afe0ba2c9be072c692b65 (diff)
downloadgit-bef0413c3595acb469cc212792c12b7106048ddc.zip
git-bef0413c3595acb469cc212792c12b7106048ddc.tar.gz
git-bef0413c3595acb469cc212792c12b7106048ddc.tar.bz2
tempfile.c: introduce 'create_tempfile_mode'
In the next patch, 'hold_lock_file_for_update' will gain an additional 'mode' parameter to specify permissions for the associated temporary file. Since the lockfile.c machinery uses 'create_tempfile' which always creates a temporary file with global read-write permissions, introduce a variant here that allows specifying the mode. Note that the mode given to 'create_tempfile_mode' is not guaranteed to be written to disk, since it is subject to both the umask and 'core.sharedRepository'. Arguably, all temporary files should have permission 0444, since they are likely to be renamed into place and then not written to again. This is a much larger change than we may want to take on in this otherwise small patch, so for the time being, make 'create_tempfile' behave as it has always done by inlining it to 'create_tempfile_mode' with mode set to '0666'. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tempfile.c')
-rw-r--r--tempfile.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/tempfile.c b/tempfile.c
index d43ad8c..94aa18f 100644
--- a/tempfile.c
+++ b/tempfile.c
@@ -130,17 +130,17 @@ static void deactivate_tempfile(struct tempfile *tempfile)
}
/* Make sure errno contains a meaningful value on error */
-struct tempfile *create_tempfile(const char *path)
+struct tempfile *create_tempfile_mode(const char *path, int mode)
{
struct tempfile *tempfile = new_tempfile();
strbuf_add_absolute_path(&tempfile->filename, path);
tempfile->fd = open(tempfile->filename.buf,
- O_RDWR | O_CREAT | O_EXCL | O_CLOEXEC, 0666);
+ O_RDWR | O_CREAT | O_EXCL | O_CLOEXEC, mode);
if (O_CLOEXEC && tempfile->fd < 0 && errno == EINVAL)
/* Try again w/o O_CLOEXEC: the kernel might not support it */
tempfile->fd = open(tempfile->filename.buf,
- O_RDWR | O_CREAT | O_EXCL, 0666);
+ O_RDWR | O_CREAT | O_EXCL, mode);
if (tempfile->fd < 0) {
deactivate_tempfile(tempfile);
return NULL;