Mercurial > vim
comparison src/eval.c @ 6341:094a87e76155 v7.4.503
updated for version 7.4.503
Problem: Cannot append a list of lines to a file.
Solution: Add the append option to writefile(). (Yasuhiro Matsumoto)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Wed, 05 Nov 2014 18:06:01 +0100 |
parents | 65e72747feca |
children | 6ad9facba57d |
comparison
equal
deleted
inserted
replaced
6340:a72bf2c39633 | 6341:094a87e76155 |
---|---|
19687 f_writefile(argvars, rettv) | 19687 f_writefile(argvars, rettv) |
19688 typval_T *argvars; | 19688 typval_T *argvars; |
19689 typval_T *rettv; | 19689 typval_T *rettv; |
19690 { | 19690 { |
19691 int binary = FALSE; | 19691 int binary = FALSE; |
19692 int append = FALSE; | |
19692 char_u *fname; | 19693 char_u *fname; |
19693 FILE *fd; | 19694 FILE *fd; |
19694 int ret = 0; | 19695 int ret = 0; |
19695 | 19696 |
19696 if (check_restricted() || check_secure()) | 19697 if (check_restricted() || check_secure()) |
19702 return; | 19703 return; |
19703 } | 19704 } |
19704 if (argvars[0].vval.v_list == NULL) | 19705 if (argvars[0].vval.v_list == NULL) |
19705 return; | 19706 return; |
19706 | 19707 |
19707 if (argvars[2].v_type != VAR_UNKNOWN | 19708 if (argvars[2].v_type != VAR_UNKNOWN) |
19708 && STRCMP(get_tv_string(&argvars[2]), "b") == 0) | 19709 { |
19709 binary = TRUE; | 19710 if (vim_strchr(get_tv_string(&argvars[2]), 'b') != NULL) |
19711 binary = TRUE; | |
19712 if (vim_strchr(get_tv_string(&argvars[2]), 'a') != NULL) | |
19713 append = TRUE; | |
19714 } | |
19710 | 19715 |
19711 /* Always open the file in binary mode, library functions have a mind of | 19716 /* Always open the file in binary mode, library functions have a mind of |
19712 * their own about CR-LF conversion. */ | 19717 * their own about CR-LF conversion. */ |
19713 fname = get_tv_string(&argvars[1]); | 19718 fname = get_tv_string(&argvars[1]); |
19714 if (*fname == NUL || (fd = mch_fopen((char *)fname, WRITEBIN)) == NULL) | 19719 if (*fname == NUL || (fd = mch_fopen((char *)fname, |
19720 append ? APPENDBIN : WRITEBIN)) == NULL) | |
19715 { | 19721 { |
19716 EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname); | 19722 EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname); |
19717 ret = -1; | 19723 ret = -1; |
19718 } | 19724 } |
19719 else | 19725 else |