for consistency with nano 1.2.x and with other editors, make the mode of
newly created files 666 instead of 600 before it's modified by the umask; also add a few more minor comment fixes git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1838 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
edab0cc0a5
commit
c8c69d5449
|
@ -18,6 +18,10 @@ CVS code -
|
||||||
close_open_file()
|
close_open_file()
|
||||||
- Tweak to no longer rely on the return values of
|
- Tweak to no longer rely on the return values of
|
||||||
open_(prev|next)file(). (DLR)
|
open_(prev|next)file(). (DLR)
|
||||||
|
write_file()
|
||||||
|
- For consistency with nano 1.2.x and with other editors, make
|
||||||
|
the mode of newly created files 666 instead of 600 before
|
||||||
|
it's modified by the umask. (DLR)
|
||||||
- global.c:
|
- global.c:
|
||||||
shortcut_init()
|
shortcut_init()
|
||||||
- Fix erroneous #ifdef so that nano compiles with
|
- Fix erroneous #ifdef so that nano compiles with
|
||||||
|
|
24
src/files.c
24
src/files.c
|
@ -1369,7 +1369,7 @@ int copy_file(FILE *inn, FILE *out)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write a file out. If tmp is nonzero, we set the umask to disallow
|
/* Write a file out. If tmp is FALSE, we set the umask to disallow
|
||||||
* anyone else from accessing the file, we don't set the global variable
|
* anyone else from accessing the file, we don't set the global variable
|
||||||
* filename to its name, and we don't print out how many lines we wrote
|
* filename to its name, and we don't print out how many lines we wrote
|
||||||
* on the statusbar.
|
* on the statusbar.
|
||||||
|
@ -1392,12 +1392,12 @@ int write_file(const char *name, int tmp, int append, int nonamechange)
|
||||||
size_t lineswritten = 0;
|
size_t lineswritten = 0;
|
||||||
const filestruct *fileptr = fileage;
|
const filestruct *fileptr = fileage;
|
||||||
int fd;
|
int fd;
|
||||||
mode_t original_umask = 0;
|
mode_t original_umask;
|
||||||
/* Our umask, from when nano started. */
|
/* Our umask, from when nano started. */
|
||||||
int realexists;
|
int realexists;
|
||||||
/* The result of stat(). True if the file exists, false
|
/* The result of stat(). TRUE if the file exists, FALSE
|
||||||
* otherwise. If name is a link that points nowhere, realexists
|
* otherwise. If name is a link that points nowhere, realexists
|
||||||
* is false. */
|
* is FALSE. */
|
||||||
struct stat st;
|
struct stat st;
|
||||||
/* The status fields filled in by stat(). */
|
/* The status fields filled in by stat(). */
|
||||||
int anyexists;
|
int anyexists;
|
||||||
|
@ -1438,7 +1438,8 @@ int write_file(const char *name, int tmp, int append, int nonamechange)
|
||||||
/* If NOFOLLOW_SYMLINKS is set, it doesn't make sense to prepend or
|
/* If NOFOLLOW_SYMLINKS is set, it doesn't make sense to prepend or
|
||||||
* append to a symlink. Here we warn about the contradiction. */
|
* append to a symlink. Here we warn about the contradiction. */
|
||||||
if (ISSET(NOFOLLOW_SYMLINKS) && anyexists && S_ISLNK(lst.st_mode)) {
|
if (ISSET(NOFOLLOW_SYMLINKS) && anyexists && S_ISLNK(lst.st_mode)) {
|
||||||
statusbar(_("Cannot prepend or append to a symlink with --nofollow set"));
|
statusbar(
|
||||||
|
_("Cannot prepend or append to a symlink with --nofollow set"));
|
||||||
goto cleanup_and_exit;
|
goto cleanup_and_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1554,12 +1555,13 @@ int write_file(const char *name, int tmp, int append, int nonamechange)
|
||||||
|
|
||||||
original_umask = umask(0);
|
original_umask = umask(0);
|
||||||
umask(original_umask);
|
umask(original_umask);
|
||||||
|
|
||||||
/* If we create a temp file, we don't let anyone else access it. We
|
/* If we create a temp file, we don't let anyone else access it. We
|
||||||
* create a temp file if tmp is nonzero or if we prepend. */
|
* create a temp file if tmp is TRUE or if we're prepending. */
|
||||||
if (tmp || append == 2)
|
if (tmp || append == 2)
|
||||||
umask(S_IRWXG | S_IRWXO);
|
umask(S_IRWXG | S_IRWXO);
|
||||||
|
|
||||||
/* If we are prepending, copy the file to a temp file. */
|
/* If we're prepending, copy the file to a temp file. */
|
||||||
if (append == 2) {
|
if (append == 2) {
|
||||||
int fd_source;
|
int fd_source;
|
||||||
FILE *f_source = NULL;
|
FILE *f_source = NULL;
|
||||||
|
@ -1600,13 +1602,13 @@ int write_file(const char *name, int tmp, int append, int nonamechange)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now open the file in place. Use O_EXCL if tmp is nonzero. This
|
/* Now open the file in place. Use O_EXCL if tmp is TRUE. This is
|
||||||
* is now copied from joe, because wiggy says so *shrug*. */
|
* now copied from joe, because wiggy says so *shrug*. */
|
||||||
fd = open(realname, O_WRONLY | O_CREAT |
|
fd = open(realname, O_WRONLY | O_CREAT |
|
||||||
(append == 1 ? O_APPEND : (tmp ? O_EXCL : O_TRUNC)),
|
(append == 1 ? O_APPEND : (tmp ? O_EXCL : O_TRUNC)),
|
||||||
S_IRUSR | S_IWUSR);
|
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
|
||||||
|
|
||||||
/* Put the umask back to the user's original value. */
|
/* Set the umask back to the user's original value. */
|
||||||
umask(original_umask);
|
umask(original_umask);
|
||||||
|
|
||||||
/* First, just give up if we couldn't even open the file. */
|
/* First, just give up if we couldn't even open the file. */
|
||||||
|
|
Loading…
Reference in New Issue