[git commit] vi: don't overwrite existing file
Denys Vlasenko
vda.linux at googlemail.com
Mon Mar 29 10:16:21 UTC 2021
commit: https://git.busybox.net/busybox/commit/?id=5ae25f40bdc839e3fb24dcb7ddd6067698bf87b0
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
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>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.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
More information about the busybox-cvs
mailing list