vi: saving unnamed file in readonly mode

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@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2021-04-25 11:52:55 +01:00 committed by Denys Vlasenko
parent 3b9233f05f
commit 09172582da

View File

@ -3054,7 +3054,7 @@ static void colon(char *buf)
fn = args; fn = args;
} }
# if ENABLE_FEATURE_VI_READONLY # if ENABLE_FEATURE_VI_READONLY
else if (readonly_mode && !useforce) { else if (readonly_mode && !useforce && fn) {
status_line_bold("'%s' is read only", fn); status_line_bold("'%s' is read only", fn);
goto ret; goto ret;
} }
@ -3996,7 +3996,7 @@ static void do_cmd(int c)
break; break;
} }
if (modified_count) { 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); status_line_bold("'%s' is read only", current_filename);
break; break;
} }