eval: Add s flag, use p_fs by default, error out on unknown flag

This commit is contained in:
ZyX
2017-04-03 02:11:27 +03:00
parent 5dcf280445
commit 97a7f4745d
3 changed files with 27 additions and 13 deletions

View File

@@ -17421,20 +17421,24 @@ static void f_writefile(typval_T *argvars, typval_T *rettv, FunPtr fptr)
bool binary = false;
bool append = false;
bool do_fsync = true;
bool do_fsync = !!p_fs;
if (argvars[2].v_type != VAR_UNKNOWN) {
const char *const flags = tv_get_string_chk(&argvars[2]);
if (flags == NULL) {
return;
}
if (strchr(flags, 'b')) {
binary = true;
}
if (strchr(flags, 'a')) {
append = true;
}
if (strchr(flags, 'S')) {
do_fsync = false;
for (const char *p = flags; *p; p++) {
switch (*p) {
case 'b': { binary = true; break; }
case 'a': { append = true; break; }
case 's': { do_fsync = true; break; }
case 'S': { do_fsync = false; break; }
default: {
// Using %s, p and not %c, *p to preserve multibyte characters
emsgf(_("E5060: Unknown flag: %s"), p);
return;
}
}
}
}