diff options
author | Marco Hinz <mh.codebro@gmail.com> | 2014-12-20 16:17:39 +0100 |
---|---|---|
committer | Florian Walch <florian@fwalch.com> | 2014-12-20 16:31:59 +0100 |
commit | 7e31044cd8c0a0f3333dd53c70f4f28957d8514d (patch) | |
tree | d51eab562ad70c059408faf82bb5addd184632ef /src/nvim/fileio.c | |
parent | 5a1cddc47bdb9cf2b4b0d0d449c34ed9d237ea90 (diff) | |
download | rneovim-7e31044cd8c0a0f3333dd53c70f4f28957d8514d.tar.gz rneovim-7e31044cd8c0a0f3333dd53c70f4f28957d8514d.tar.bz2 rneovim-7e31044cd8c0a0f3333dd53c70f4f28957d8514d.zip |
vim-patch:7.4.456
Problem: 'backupcopy' is global, cannot write only some
files in a different way.
Solution: Make 'backupcopy' global-local. (Christian Brabandt)
https://code.google.com/p/vim/source/detail?r=v7-4-456
Diffstat (limited to 'src/nvim/fileio.c')
-rw-r--r-- | src/nvim/fileio.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c index 9c6d7c96bb..82613f5b07 100644 --- a/src/nvim/fileio.c +++ b/src/nvim/fileio.c @@ -2313,6 +2313,7 @@ buf_write ( #endif int write_undo_file = FALSE; context_sha256_T sha_ctx; + unsigned int bkc = get_bkc_value(buf); if (fname == NULL || *fname == NUL) /* safety check */ return FAIL; @@ -2701,9 +2702,9 @@ buf_write ( if (!(append && *p_pm == NUL) && !filtering && perm >= 0 && dobackup) { FileInfo file_info; - if ((bkc_flags & BKC_YES) || append) { /* "yes" */ + if ((bkc & BKC_YES) || append) { /* "yes" */ backup_copy = TRUE; - } else if ((bkc_flags & BKC_AUTO)) { /* "auto" */ + } else if ((bkc & BKC_AUTO)) { /* "auto" */ int i; # ifdef UNIX @@ -2758,19 +2759,19 @@ buf_write ( /* * Break symlinks and/or hardlinks if we've been asked to. */ - if ((bkc_flags & BKC_BREAKSYMLINK) || (bkc_flags & BKC_BREAKHARDLINK)) { + if ((bkc & BKC_BREAKSYMLINK) || (bkc & BKC_BREAKHARDLINK)) { # ifdef UNIX bool file_info_link_ok = os_fileinfo_link((char *)fname, &file_info); /* Symlinks. */ - if ((bkc_flags & BKC_BREAKSYMLINK) + if ((bkc & BKC_BREAKSYMLINK) && file_info_link_ok && !os_fileinfo_id_equal(&file_info, &file_info_old)) { backup_copy = FALSE; } /* Hardlinks. */ - if ((bkc_flags & BKC_BREAKHARDLINK) + if ((bkc & BKC_BREAKHARDLINK) && os_fileinfo_hardlinks(&file_info_old) > 1 && (!file_info_link_ok || os_fileinfo_id_equal(&file_info, &file_info_old))) { |