To: vim-dev@vim.org Subject: Patch 6.1b.029 Fcc: outbox From: Bram Moolenaar MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 6.1b.029 Problem: Win32: When a directory on an NTFS partition is read/execute (no delete,modify,write) and the file has modify rights, trying to write the file deletes it. Making the file read/write/execute (not delete) solves it. (Mark Canup) Solution: Use the Unix code to check for a writable directory. If not, then make a backup copy and overwrite the file. Files: src/fileio.c *** ../vim61b.028/src/fileio.c Sun Mar 17 14:22:46 2002 --- src/fileio.c Tue Mar 19 22:34:17 2002 *************** *** 2633,2644 **** { if (*p_bkc == 'y' || append) /* "yes" */ backup_copy = TRUE; ! #ifdef UNIX else if (*p_bkc == 'a') /* "auto" */ { struct stat st; int i; /* * Don't rename the file when: * - it's a hard link --- 2633,2645 ---- { if (*p_bkc == 'y' || append) /* "yes" */ backup_copy = TRUE; ! #if defined(UNIX) || defined(WIN32) else if (*p_bkc == 'a') /* "auto" */ { struct stat st; int i; + # ifdef UNIX /* * Don't rename the file when: * - it's a hard link *************** *** 2652,2657 **** --- 2653,2659 ---- || st.st_ino != st_old.st_ino) backup_copy = TRUE; else + # endif { /* * Check if we can create a file and set the owner/group to *************** *** 2672,2677 **** --- 2674,2680 ---- backup_copy = TRUE; else { + # ifdef UNIX chown((char *)IObuff, st_old.st_uid, st_old.st_gid); (void)mch_setperm(IObuff, perm); if (mch_stat((char *)IObuff, &st) < 0 *************** *** 2679,2684 **** --- 2682,2688 ---- || st.st_gid != st_old.st_gid || st.st_mode != perm) backup_copy = TRUE; + # endif mch_remove(IObuff); } } *** ../vim61b.028/src/version.c Tue Mar 19 20:16:24 2002 --- src/version.c Tue Mar 19 22:40:44 2002 *************** *** 608,609 **** --- 608,611 ---- { /* Add new patch number below this line */ + /**/ + 29, /**/ -- Violators can be fined, arrested or jailed for making ugly faces at a dog. [real standing law in Oklahoma, United States of America] /// Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net \\\ /// Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim \\\ \\\ Project leader for A-A-P -- http://www.a-a-p.org /// \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///