comparison src/os_unix.c @ 12847:14f287552218 v8.0.1300

patch 8.0.1300: file permissions may end up wrong when writing commit https://github.com/vim/vim/commit/cd142e3369db8888163a511dbe9907bcd138829c Author: Bram Moolenaar <Bram@vim.org> Date: Thu Nov 16 17:03:45 2017 +0100 patch 8.0.1300: file permissions may end up wrong when writing Problem: File permissions may end up wrong when writing. Solution: Use fchmod() instead of chmod() when possible. Don't truncate until we know we can change the file.
author Christian Brabandt <cb@256bit.org>
date Thu, 16 Nov 2017 17:15:06 +0100
parents 351cf7c67bbe
children ebb4f6c93598
comparison
equal deleted inserted replaced
12846:09b3b28f4400 12847:14f287552218
2723 return statb.st_mode; 2723 return statb.st_mode;
2724 #endif 2724 #endif
2725 } 2725 }
2726 2726
2727 /* 2727 /*
2728 * set file permission for 'name' to 'perm' 2728 * Set file permission for "name" to "perm".
2729 * 2729 * Return FAIL for failure, OK otherwise.
2730 * return FAIL for failure, OK otherwise
2731 */ 2730 */
2732 int 2731 int
2733 mch_setperm(char_u *name, long perm) 2732 mch_setperm(char_u *name, long perm)
2734 { 2733 {
2735 return (chmod((char *) 2734 return (chmod((char *)
2738 #else 2737 #else
2739 name, 2738 name,
2740 #endif 2739 #endif
2741 (mode_t)perm) == 0 ? OK : FAIL); 2740 (mode_t)perm) == 0 ? OK : FAIL);
2742 } 2741 }
2742
2743 #if defined(HAVE_FCHMOD) || defined(PROTO)
2744 /*
2745 * Set file permission for open file "fd" to "perm".
2746 * Return FAIL for failure, OK otherwise.
2747 */
2748 int
2749 mch_fsetperm(int fd, long perm)
2750 {
2751 return (fchmod(fd, (mode_t)perm) == 0 ? OK : FAIL);
2752 }
2753 #endif
2743 2754
2744 #if defined(HAVE_ACL) || defined(PROTO) 2755 #if defined(HAVE_ACL) || defined(PROTO)
2745 # ifdef HAVE_SYS_ACL_H 2756 # ifdef HAVE_SYS_ACL_H
2746 # include <sys/acl.h> 2757 # include <sys/acl.h>
2747 # endif 2758 # endif