From 8965af5874940d692f2aba5bfeef4d34eba1193f Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Tue, 7 Nov 2006 21:22:14 +0000 Subject: [PATCH] in do_writeout(), for consistency, when saving a file with no name, don't allow overwriting an existing file when in restricted mode git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3937 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 5 +++++ src/files.c | 20 ++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1faf5732..c8a0bdb5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ CVS code - - General: - Miscellaneous comment fixes. (DLR) +- files.c: + do_writeout() + - For consistency, when saving a file with no name, don't + allow overwriting an existing file when in restricted + mode. (DLR) GNU nano 2.0.0 - 2006.11.06 - General: diff --git a/src/files.c b/src/files.c index 6aec143c..abd3dc6b 100644 --- a/src/files.c +++ b/src/files.c @@ -1874,10 +1874,22 @@ int do_writeout(bool exiting) struct stat st; if (stat(answer, &st) != -1) { - i = do_yesno_prompt(FALSE, - _("File exists, OVERWRITE ? ")); - if (i == 0 || i == -1) - continue; + /* If we're using restricted mode, we aren't allowed + * to save a new file under the name of an existing + * file. In this case, show a "File exists" + * error. */ + if (!ISSET(RESTRICTED)) { + i = do_yesno_prompt(FALSE, + _("File exists, OVERWRITE ? ")); + if (i == 0 || i == -1) + continue; + } else { + errno = EEXIST; + statusbar(_("Error writing %s: %s"), answer, + strerror(errno)); + retval = -1; + break; + } /* If we're using restricted mode, we aren't allowed to * change the name of a file once it has one, because * that would allow reading from or writing to files not