diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 14 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index a716bb66ab..ad2a0b2bb2 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -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 { diff --git a/src/nvim/version.c b/src/nvim/version.c index f876e78388..a957d844be 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -337,7 +337,7 @@ static int included_patches[] = { //506 NA //505 NA //504 NA - //503, + 503, //502, //501 NA 500, |