commit bd0026be86cf4ee5ae2acd766badb835ced4dd7a
parent a1bef0e953fda29600c78607a4f4e196134d3435
Author: Benno Schulenberg <bensberg@telfort.nl>
Date: Thu, 17 Oct 2019 11:15:34 +0200
tweaks: elide another two calls of umask(), and rename two variables
Diffstat:
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/src/files.c b/src/files.c
@@ -1347,7 +1347,7 @@ char *safe_tempfile(FILE **stream)
{
const char *env_dir = getenv("TMPDIR");
char *tempdir = NULL, *tempfile_name = NULL;
- mode_t original_umask = 0;
+ mode_t was_mask;
int fd;
/* Get the absolute path for the first directory among $TMPDIR
@@ -1364,12 +1364,11 @@ char *safe_tempfile(FILE **stream)
tempfile_name = charealloc(tempdir, strlen(tempdir) + 12);
strcat(tempfile_name, "nano.XXXXXX");
- original_umask = umask(0);
- umask(S_IRWXG | S_IRWXO);
+ was_mask = umask(S_IRWXG | S_IRWXO);
fd = mkstemp(tempfile_name);
- umask(original_umask);
+ umask(was_mask);
if (fd == -1) {
free(tempfile_name);
@@ -1505,14 +1504,14 @@ int copy_file(FILE *inn, FILE *out, bool close_out)
bool write_file(const char *name, FILE *stream, bool tmp,
kind_of_writing_type method, bool fullbuffer)
{
- mode_t original_umask = 0;
- /* The umask from when nano started. */
#ifndef NANO_TINY
bool isactualfile = FALSE;
/* Becomes TRUE when the file is non-temporary and exists. */
#endif
struct stat st;
/* The status fields filled in by stat(). */
+ mode_t was_mask = 0;
+ /* Will be set to the umask from when nano was started. */
char *realname;
/* The filename after tilde expansion. */
FILE *f = stream;
@@ -1709,10 +1708,8 @@ bool write_file(const char *name, FILE *stream, bool tmp,
#endif /* !NANO_TINY */
/* When going to create an emergency file, don't let others access it. */
- if (stream == NULL && tmp) {
- original_umask = umask(0);
- umask(S_IRWXG | S_IRWXO);
- }
+ if (stream == NULL && tmp)
+ was_mask = umask(S_IRWXG | S_IRWXO);
#ifndef NANO_TINY
/* When prepending, first copy the existing file to a temporary file. */
@@ -1772,7 +1769,7 @@ bool write_file(const char *name, FILE *stream, bool tmp,
#endif
/* When this is an emergency file, restore the original umask. */
if (tmp)
- umask(original_umask);
+ umask(was_mask);
/* If we couldn't open the file, give up. */
if (fd == -1) {