Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-09-24 20:22:53 +0400
committerCorinna Vinschen <corinna@vinschen.de>2010-09-24 20:22:53 +0400
commit7438a10a019106738bbec980454a2da738d430ef (patch)
treeba5dafa914f47e5738037945d3f7699845070daf /winsup
parent3498f76deb52fcff5c4f8d20050ec844608d108d (diff)
* fhandler.cc (fhandler_base::open): Handle query_write_dac flag.
* fhandler.h (enum query_state): Add query_write_dac flag. * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Open file with query_write_dac instead of query_write_control.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/fhandler.cc3
-rw-r--r--winsup/cygwin/fhandler.h3
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc2
4 files changed, 13 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 1d3797abc..ee1fc5ac3 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,12 @@
2010-09-24 Corinna Vinschen <corinna@vinschen.de>
+ * fhandler.cc (fhandler_base::open): Handle query_write_dac flag.
+ * fhandler.h (enum query_state): Add query_write_dac flag.
+ * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Open file
+ with query_write_dac instead of query_write_control.
+
+2010-09-24 Corinna Vinschen <corinna@vinschen.de>
+
* errno.cc (errmap): Map ERROR_BAD_NET_RESP to ENOSYS.
* fhandler_disk_file.cc (fhandler_disk_file::facl): Handle ENOSYS and
point to the explanation.
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index 64451f672..ce5f79b2e 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -479,6 +479,9 @@ fhandler_base::open (int flags, mode_t mode)
case query_write_control:
access = READ_CONTROL | WRITE_OWNER | WRITE_DAC | FILE_WRITE_ATTRIBUTES;
break;
+ case query_write_dac:
+ access = READ_CONTROL | WRITE_DAC | FILE_WRITE_ATTRIBUTES;
+ break;
case query_write_attributes:
access = READ_CONTROL | FILE_WRITE_ATTRIBUTES;
break;
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index 8e232f0c4..5110d6d8c 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -92,7 +92,8 @@ enum query_state {
query_read_control = 1,
query_read_attributes = 2,
query_write_control = 3,
- query_write_attributes = 4
+ query_write_dac = 4,
+ query_write_attributes = 5
};
enum del_lock_called_from {
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index 3cb831168..85be07c3d 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -799,7 +799,7 @@ fhandler_disk_file::fchmod (mode_t mode)
if (!get_handle ())
{
- query_open (query_write_control);
+ query_open (query_write_dac);
if (!(oret = open (O_BINARY, 0)))
{
/* Need WRITE_DAC|WRITE_OWNER to write ACLs. */