[PATCH 1/2] vi: don't create a new file with ZZ when no modification has been done

Yousong Zhou yszhou4tech at gmail.com
Wed Feb 22 13:11:51 UTC 2017


This is the behaviour observed with standard vim and busybox vi of at
least 1.22.1.  It was changed with commit 32afd3a "vi: some
simplifications" which happened before 1.23.0.

Mistyping filename on command line happens fairly often and it's better
we restore the old behaviour to avoid a few unnecessary flash storage
writes and sometimes efforts of debugging bugs caused by those unneeded
stray files...

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 editors/vi.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/editors/vi.c b/editors/vi.c
index bbaac50..4b5b7cd 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -715,14 +715,6 @@ static int init_text_buffer(char *fn)
 {
 	int rc;
 
-	flush_undo_data();
-	modified_count = 0;
-	last_modified_count = -1;
-#if ENABLE_FEATURE_VI_YANKMARK
-	/* init the marks */
-	memset(mark, 0, sizeof(mark));
-#endif
-
 	/* allocate/reallocate text buffer */
 	free(text);
 	text_size = 10240;
@@ -737,6 +729,14 @@ static int init_text_buffer(char *fn)
 		// file doesnt exist. Start empty buf with dummy line
 		char_insert(text, '\n', NO_UNDO);
 	}
+
+	flush_undo_data();
+	modified_count = 0;
+	last_modified_count = -1;
+#if ENABLE_FEATURE_VI_YANKMARK
+	/* init the marks */
+	memset(mark, 0, sizeof(mark));
+#endif
 	return rc;
 }
 
-- 
2.6.4



More information about the busybox mailing list