From 8965af5874940d692f2aba5bfeef4d34eba1193f Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
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
-- 
GitLab