mirror of https://github.com/mirror/busybox.git
vi: Ensure that the edit buffer ends in a newline
Currently vi assumes that the edit buffer ends in a newline. This may not be the case. For example: $ printf test > test $ vi test <press 'o'> We fix this by inserting a newline to the end during initialization. Signed-off-by: Petja Patjas <pp01415943@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>master
parent
0af28b84e5
commit
05e5d6a381
|
@ -2315,9 +2315,10 @@ static int init_text_buffer(char *fn)
|
|||
|
||||
update_filename(fn);
|
||||
rc = file_insert(fn, text, 1);
|
||||
if (rc < 0) {
|
||||
// file doesnt exist. Start empty buf with dummy line
|
||||
char_insert(text, '\n', NO_UNDO);
|
||||
if (rc <= 0 || *(end - 1) != '\n') {
|
||||
// file doesn't exist or doesn't end in a newline.
|
||||
// insert a newline to the end
|
||||
char_insert(end, '\n', NO_UNDO);
|
||||
}
|
||||
|
||||
flush_undo_data();
|
||||
|
|
Loading…
Reference in New Issue