[PATCH 01/10] vi: don't overwrite existing file

Alison Winters alisonatwork at outlook.com
Sun Mar 28 14:17:53 UTC 2021


This is a great set of patches you've shared the past few days!

Just a heads up to whoever reviews and merges this: I think this patch in 
particular might have a small conflict with the patch I submitted on March 
3 "vi: allow writing to another file if this one is readonly" which just 
moves around some curly brackets to fix a bug where you can't write a file 
in readonly mode.

Looking forward to these improvements!

Alison

On Sun, 28 Mar 2021, Ron Yorston wrote:

> If the name of the file being written doesn't match the current
> filename and the output file already exists vi should issue a
> warning and not overwrite the file.
>
> Because the test only compares the file names it's somewhat over-
> protective.  If the current file name is 'my_text' and the user tries
> to save to './my_text' they'll be prevented from doing so.
>
> function                                             old     new   delta
> colon                                               3092    3151     +59
> .rodata                                           105118  105146     +28
> ------------------------------------------------------------------------------
> (add/remove: 0/0 grow/shrink: 2/0 up/down: 87/0)               Total: 87 bytes
>
> Signed-off-by: Ron Yorston <rmy at pobox.com>
> ---
> editors/vi.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/editors/vi.c b/editors/vi.c
> index ccf2870ab..47b13b3ca 100644
> --- a/editors/vi.c
> +++ b/editors/vi.c
> @@ -2816,6 +2816,13 @@ static void colon(char *buf)
>
> 		// is there a file name to write to?
> 		if (args[0]) {
> +			struct stat statbuf;
> +
> +			if (!useforce && (fn == NULL || strcmp(fn, args) != 0) &&
> +					stat(args, &statbuf) == 0) {
> +				status_line_bold("File exists (:w! overrides)");
> +				goto ret;
> +			}
> 			fn = args;
> 		}
> # if ENABLE_FEATURE_VI_READONLY
> -- 
> 2.30.2
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
>


More information about the busybox mailing list