summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_virtual.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2005-01-14 22:03:40 +0000
committerCorinna Vinschen <corinna@vinschen.de>2005-01-14 22:03:40 +0000
commitaafdf30f7a7b1abfc175039a95657fd60e9ec9b6 (patch)
treec43da66d1e790a7514f40b02034ce2506035dcf4 /winsup/cygwin/fhandler_virtual.cc
parent36ca239fd4a64e2a17dfe265125b21c398a6ec59 (diff)
downloadcygnal-aafdf30f7a7b1abfc175039a95657fd60e9ec9b6.tar.gz
cygnal-aafdf30f7a7b1abfc175039a95657fd60e9ec9b6.tar.bz2
cygnal-aafdf30f7a7b1abfc175039a95657fd60e9ec9b6.zip
* fhandler_disk_file.cc (fhandler_disk_file::facl): Pretend successful
SETACL if no acls are available. * fhandler.cc (fhandler_base::facl): Implement to return sensible values on GETACL and GETACLCNT. Pretend successful SETACL. * fhandler_virtual.cc (fhandler_virtual::facl): Ditto.
Diffstat (limited to 'winsup/cygwin/fhandler_virtual.cc')
-rw-r--r--winsup/cygwin/fhandler_virtual.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/winsup/cygwin/fhandler_virtual.cc b/winsup/cygwin/fhandler_virtual.cc
index fa3d2ed2e..859455994 100644
--- a/winsup/cygwin/fhandler_virtual.cc
+++ b/winsup/cygwin/fhandler_virtual.cc
@@ -247,7 +247,12 @@ fhandler_virtual::fchown (__uid32_t uid, __gid32_t gid)
int
fhandler_virtual::facl (int cmd, int nentries, __aclent32_t *aclbufp)
{
- /* Same as on Linux. */
- set_errno (EPERM);
- return -1;
+ int res = fhandler_base::facl (cmd, nentries, aclbufp);
+ if (res >= 0 && cmd == GETACL)
+ {
+ aclbufp[0].a_perm = (S_IRUSR | (pc.isdir () ? S_IXUSR : 0)) >> 6;
+ aclbufp[1].a_perm = (S_IRGRP | (pc.isdir () ? S_IXGRP : 0)) >> 3;
+ aclbufp[2].a_perm = S_IROTH | (pc.isdir () ? S_IXOTH : 0);
+ }
+ return res;
}