diff options
Diffstat (limited to 'package/busybox/patches/006-busybox-1.23.0-vi.patch')
-rw-r--r-- | package/busybox/patches/006-busybox-1.23.0-vi.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/package/busybox/patches/006-busybox-1.23.0-vi.patch b/package/busybox/patches/006-busybox-1.23.0-vi.patch new file mode 100644 index 000000000..3a07ab9d9 --- /dev/null +++ b/package/busybox/patches/006-busybox-1.23.0-vi.patch @@ -0,0 +1,49 @@ +--- busybox-1.23.0/editors/vi.c ++++ busybox-1.23.0-vi/editors/vi.c +@@ -542,9 +542,6 @@ static void cookmode(void); // return to + static int mysleep(int); + static int readit(void); // read (maybe cursor) key from stdin + static int get_one_char(void); // read 1 char from stdin +-#if !ENABLE_FEATURE_VI_READONLY +-#define file_insert(fn, p, update_ro_status) file_insert(fn, p) +-#endif + // file_insert might reallocate text[]! + static int file_insert(const char *, char *, int); + static int file_write(char *, char *, char *); +@@ -1325,7 +1322,7 @@ static void colon(char *buf) + q = next_line(q); + { // dance around potentially-reallocated text[] + uintptr_t ofs = q - text; +- size = file_insert(fn, q, /*update_ro:*/ 0); ++ size = file_insert(fn, q, 0); + q = text + ofs; + } + if (size < 0) +@@ -2905,7 +2902,7 @@ static char *get_input_line(const char * + } + + // might reallocate text[]! +-static int file_insert(const char *fn, char *p, int update_ro_status) ++static int file_insert(const char *fn, char *p, int initial) + { + int cnt = -1; + int fd, size; +@@ -2918,7 +2915,8 @@ static int file_insert(const char *fn, c + + fd = open(fn, O_RDONLY); + if (fd < 0) { +- status_line_bold_errno(fn); ++ if (!initial) ++ status_line_bold_errno(fn); + return cnt; + } + +@@ -2946,7 +2944,7 @@ static int file_insert(const char *fn, c + close(fd); + + #if ENABLE_FEATURE_VI_READONLY +- if (update_ro_status ++ if (initial + && ((access(fn, W_OK) < 0) || + /* root will always have access() + * so we check fileperms too */ |