mirror of
https://github.com/neovim/neovim.git
synced 2025-09-14 23:38:17 +00:00
vim-patch:7.4.503 #2178
Problem: Cannot append a list of lines to a file. Solution: Add the append option to writefile(). (Yasuhiro Matsumoto) https://code.google.com/p/vim/source/detail?r=v7-4-503 -Ported old legacy test over to test/functional/legacy/writefile_spec.lua -Tests for mapping and signs from the original patch were removed since they have nothing to do this with feature Tested with: make oldtest, make test on OS X. Signed-off-by: Perry Hung <iperry@gmail.com>
This commit is contained in:

committed by
Justin M. Keyes

parent
2d0f7fa95d
commit
26e6bca769
@@ -15453,16 +15453,22 @@ static void f_writefile(typval_T *argvars, typval_T *rettv)
|
||||
}
|
||||
|
||||
bool binary = false;
|
||||
if (argvars[2].v_type != VAR_UNKNOWN
|
||||
&& STRCMP(get_tv_string(&argvars[2]), "b") == 0) {
|
||||
binary = true;
|
||||
bool append = false;
|
||||
if (argvars[2].v_type != VAR_UNKNOWN) {
|
||||
if (vim_strchr(get_tv_string(&argvars[2]), 'b')) {
|
||||
binary = true;
|
||||
}
|
||||
if (vim_strchr(get_tv_string(&argvars[2]), 'a')) {
|
||||
append = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Always open the file in binary mode, library functions have a mind of
|
||||
// their own about CR-LF conversion.
|
||||
char_u *fname = get_tv_string(&argvars[1]);
|
||||
FILE *fd;
|
||||
if (*fname == NUL || (fd = mch_fopen((char *)fname, WRITEBIN)) == NULL) {
|
||||
if (*fname == NUL || (fd = mch_fopen((char *)fname,
|
||||
append ? APPENDBIN : WRITEBIN)) == NULL) {
|
||||
EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname);
|
||||
rettv->vval.v_number = -1;
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user