[git commit] vi: saving unnamed file in readonly mode

Denys Vlasenko vda.linux at googlemail.com
Wed Apr 28 09:29:33 UTC 2021


commit: https://git.busybox.net/busybox/commit/?id=09172582daa98f575a711de2f0e3cf3bf88b8346
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Suppose vi is started with the command 'vi -R', that is, in readonly
mode with no filename.  Attempting to save the file with 'ZZ' or ':w'
results in the message:

   '(null)' is read only

Skip the code which prints this if no filename was provided, thus
falling through to file_write() which gives the more helpful message
'No current filename'.

function                                             old     new   delta
colon                                               3867    3874      +7
do_cmd                                              4668    4673      +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 12/0)               Total: 12 bytes

Signed-off-by: Ron Yorston <rmy at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 editors/vi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/editors/vi.c b/editors/vi.c
index d818127e2..a38f2189d 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -3054,7 +3054,7 @@ static void colon(char *buf)
 			fn = args;
 		}
 # if ENABLE_FEATURE_VI_READONLY
-		else if (readonly_mode && !useforce) {
+		else if (readonly_mode && !useforce && fn) {
 			status_line_bold("'%s' is read only", fn);
 			goto ret;
 		}
@@ -3996,7 +3996,7 @@ static void do_cmd(int c)
 			break;
 		}
 		if (modified_count) {
-			if (ENABLE_FEATURE_VI_READONLY && readonly_mode) {
+			if (ENABLE_FEATURE_VI_READONLY && readonly_mode && current_filename) {
 				status_line_bold("'%s' is read only", current_filename);
 				break;
 			}


More information about the busybox-cvs mailing list