forked from aniani/vim
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.
This commit is contained in:
@@ -2725,9 +2725,8 @@ mch_getperm(char_u *name)
|
||||
}
|
||||
|
||||
/*
|
||||
* set file permission for 'name' to 'perm'
|
||||
*
|
||||
* return FAIL for failure, OK otherwise
|
||||
* Set file permission for "name" to "perm".
|
||||
* Return FAIL for failure, OK otherwise.
|
||||
*/
|
||||
int
|
||||
mch_setperm(char_u *name, long perm)
|
||||
@@ -2741,6 +2740,18 @@ mch_setperm(char_u *name, long perm)
|
||||
(mode_t)perm) == 0 ? OK : FAIL);
|
||||
}
|
||||
|
||||
#if defined(HAVE_FCHMOD) || defined(PROTO)
|
||||
/*
|
||||
* Set file permission for open file "fd" to "perm".
|
||||
* Return FAIL for failure, OK otherwise.
|
||||
*/
|
||||
int
|
||||
mch_fsetperm(int fd, long perm)
|
||||
{
|
||||
return (fchmod(fd, (mode_t)perm) == 0 ? OK : FAIL);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_ACL) || defined(PROTO)
|
||||
# ifdef HAVE_SYS_ACL_H
|
||||
# include <sys/acl.h>
|
||||
|
Reference in New Issue
Block a user