* fhandler_disk_file.cc (fhandler_base::fstat_helper): Don't remove
write bits for directories with R/O attribute. (fhandler_base::fhaccess): Don't shortcircuit R/O attribute with W_OK scenarios for directories.
This commit is contained in:
parent
2b50cd503e
commit
101f07b907
|
@ -1,3 +1,10 @@
|
||||||
|
2007-10-30 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Don't remove
|
||||||
|
write bits for directories with R/O attribute.
|
||||||
|
(fhandler_base::fhaccess): Don't shortcircuit R/O attribute with W_OK
|
||||||
|
scenarios for directories.
|
||||||
|
|
||||||
2007-10-22 Corinna Vinschen <corinna@vinschen.de>
|
2007-10-22 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* cygheap.h (struct cwdstuff): Drop hash member. Drop get_hash,
|
* cygheap.h (struct cwdstuff): Drop hash member. Drop get_hash,
|
||||||
|
|
|
@ -376,7 +376,8 @@ fhandler_base::fhaccess (int flags)
|
||||||
|
|
||||||
if (is_fs_special ())
|
if (is_fs_special ())
|
||||||
/* short circuit */;
|
/* short circuit */;
|
||||||
else if (has_attribute (FILE_ATTRIBUTE_READONLY) && (flags & W_OK))
|
else if (has_attribute (FILE_ATTRIBUTE_READONLY) && (flags & W_OK)
|
||||||
|
&& !pc.isdir ())
|
||||||
goto eaccess_done;
|
goto eaccess_done;
|
||||||
else if (has_acls () && allow_ntsec)
|
else if (has_acls () && allow_ntsec)
|
||||||
{
|
{
|
||||||
|
|
|
@ -535,7 +535,7 @@ fhandler_base::fstat_helper (struct __stat64 *buf,
|
||||||
{
|
{
|
||||||
/* If read-only attribute is set, modify ntsec return value */
|
/* If read-only attribute is set, modify ntsec return value */
|
||||||
if (::has_attribute (dwFileAttributes, FILE_ATTRIBUTE_READONLY)
|
if (::has_attribute (dwFileAttributes, FILE_ATTRIBUTE_READONLY)
|
||||||
&& !pc.issymlink ())
|
&& !pc.isdir () && !pc.issymlink ())
|
||||||
buf->st_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
|
buf->st_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
|
||||||
|
|
||||||
if (buf->st_mode & S_IFMT)
|
if (buf->st_mode & S_IFMT)
|
||||||
|
@ -554,7 +554,7 @@ fhandler_base::fstat_helper (struct __stat64 *buf,
|
||||||
buf->st_mode |= STD_RBITS;
|
buf->st_mode |= STD_RBITS;
|
||||||
|
|
||||||
if (!::has_attribute (dwFileAttributes, FILE_ATTRIBUTE_READONLY)
|
if (!::has_attribute (dwFileAttributes, FILE_ATTRIBUTE_READONLY)
|
||||||
&& !pc.issymlink ())
|
&& !pc.isdir () && !pc.issymlink ())
|
||||||
buf->st_mode |= STD_WBITS;
|
buf->st_mode |= STD_WBITS;
|
||||||
/* | S_IWGRP | S_IWOTH; we don't give write to group etc */
|
/* | S_IWGRP | S_IWOTH; we don't give write to group etc */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue