[PATCH] vi: allow writing to another file if this one is readonly

Alison Winters alisonatwork at outlook.com
Wed Mar 3 04:39:25 UTC 2021


Replying to myself to add the missing [PATCH] header in the subject line, 
and give an easier-to-parse version of this patch. Sorry, I was a bit 
sleepy yesterday.

This basically fixes a bug where after you open a read only file, you 
can't write it anywhere any more. The error message was also misleading, 
since if you did :w other-name, it would tell you that other-name was read 
only when it wasn't.

Anyway, take two.

---
  editors/vi.c | 5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/editors/vi.c b/editors/vi.c
index abc0aeae8..9d603b6f2 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -2822,13 +2822,12 @@ static void colon(char *buf)
  		// is there a file name to write to?
  		if (args[0]) {
  			fn = args;
-		}
  # if ENABLE_FEATURE_VI_READONLY
-		if (readonly_mode && !useforce) {
+		} else if (readonly_mode && !useforce) {
  			status_line_bold("'%s' is read only", fn);
  			goto ret;
-		}
  # endif
+		}
  		//if (useforce) {
  			// if "fn" is not write-able, chmod u+w
  			// sprintf(syscmd, "chmod u+w %s", fn);
-- 
2.30.1



On Tue, 2 Mar 2021, Alison Winters wrote:

> ---
> editors/vi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/editors/vi.c b/editors/vi.c
> index abc0aeae8..8bb126d14 100644
> --- a/editors/vi.c
> +++ b/editors/vi.c
> @@ -2824,7 +2824,7 @@ static void colon(char *buf)
> 			fn = args;
> 		}
> # if ENABLE_FEATURE_VI_READONLY
> -		if (readonly_mode && !useforce) {
> +		else if (readonly_mode && !useforce) {
> 			status_line_bold("'%s' is read only", fn);
> 			goto ret;
> 		}
> -- 
> 2.30.1
>
>


More information about the busybox mailing list