aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c14
-rw-r--r--src/nvim/version.c2
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,