aboutsummaryrefslogtreecommitdiffstats
path: root/package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch')
-rw-r--r--package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch100
1 files changed, 0 insertions, 100 deletions
diff --git a/package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch b/package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch
deleted file mode 100644
index e83999d303..0000000000
--- a/package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From e88608eae24ae5934034e1ecb6c494fefbf1b9ae Mon Sep 17 00:00:00 2001
-From: Denys Vlasenko <vda.linux@googlemail.com>
-Date: Mon, 13 Mar 2017 20:50:42 +0100
-Subject: [PATCH 1/2] vi: don't touch file with :x when modified_count == 0
-
-Along with it, there are other changes
-
- - Check for uppercase X is removed as the expression will be always false and
- :X itself is another totally different command in standard vim
- - The status line will show number of written lines instead of lines requested
- by the colon command. This is also how the standard vim is doing, though
- the difference is that '!' has to be explicitly specified in vim to allow
- partial writes
-
-Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
-Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
----
- editors/vi.c | 43 ++++++++++++++++++++++++++-----------------
- 1 file changed, 26 insertions(+), 17 deletions(-)
-
---- a/editors/vi.c
-+++ b/editors/vi.c
-@@ -1038,7 +1038,9 @@ static void colon(char *buf)
- || strncmp(p, "wn", cnt) == 0
- || (p[0] == 'x' && !p[1])
- ) {
-- cnt = file_write(current_filename, text, end - 1);
-+ if (modified_count != 0 || p[0] != 'x') {
-+ cnt = file_write(current_filename, text, end - 1);
-+ }
- if (cnt < 0) {
- if (cnt == -1)
- status_line_bold("Write error: %s", strerror(errno));
-@@ -1049,8 +1051,9 @@ static void colon(char *buf)
- current_filename,
- count_lines(text, end - 1), cnt
- );
-- if (p[0] == 'x' || p[1] == 'q' || p[1] == 'n'
-- || p[0] == 'X' || p[1] == 'Q' || p[1] == 'N'
-+ if (p[0] == 'x'
-+ || p[1] == 'q' || p[1] == 'n'
-+ || p[1] == 'Q' || p[1] == 'N'
- ) {
- editing = 0;
- }
-@@ -1480,16 +1483,19 @@ static void colon(char *buf)
- goto ret;
- }
- #endif
-- // how many lines in text[]?
-- li = count_lines(q, r);
-- size = r - q + 1;
- //if (useforce) {
- // if "fn" is not write-able, chmod u+w
- // sprintf(syscmd, "chmod u+w %s", fn);
- // system(syscmd);
- // forced = TRUE;
- //}
-- l = file_write(fn, q, r);
-+ if (modified_count != 0 || cmd[0] != 'x') {
-+ size = r - q + 1;
-+ l = file_write(fn, q, r);
-+ } else {
-+ size = 0;
-+ l = 0;
-+ }
- //if (useforce && forced) {
- // chmod u-w
- // sprintf(syscmd, "chmod u-w %s", fn);
-@@ -1500,17 +1506,20 @@ static void colon(char *buf)
- if (l == -1)
- status_line_bold_errno(fn);
- } else {
-+ // how many lines written
-+ li = count_lines(q, q + l - 1);
- status_line("'%s' %dL, %dC", fn, li, l);
-- if (q == text && r == end - 1 && l == size) {
-- modified_count = 0;
-- last_modified_count = -1;
-- }
-- if ((cmd[0] == 'x' || cmd[1] == 'q' || cmd[1] == 'n'
-- || cmd[0] == 'X' || cmd[1] == 'Q' || cmd[1] == 'N'
-- )
-- && l == size
-- ) {
-- editing = 0;
-+ if (l == size) {
-+ if (q == text && q + l == end) {
-+ modified_count = 0;
-+ last_modified_count = -1;
-+ }
-+ if (cmd[0] == 'x'
-+ || cmd[1] == 'q' || cmd[1] == 'n'
-+ || cmd[1] == 'Q' || cmd[1] == 'N'
-+ ) {
-+ editing = 0;
-+ }
- }
- }
- #if ENABLE_FEATURE_VI_YANKMARK