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
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2007-08-16 20:59:25 +0400
committerCorinna Vinschen <corinna@vinschen.de>2007-08-16 20:59:25 +0400
commitf4c963630ea50959fcbd55d897defb4fafdb45eb (patch)
tree7961d6db376843a2ad7983b0dce8ba060807afe4
parent29992bf3dad77669ffbedd92d3075a5fb1b1a1ae (diff)
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Handle S_IFSOCK
mode bit by setting the SYSTEM attribute. * fhandler_socket.cc (fhandler_socket::fchmod): Add S_IFSOCK mode bit when calling fhandler_disk_file::fchmod. Don't set attributes here.
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc2
-rw-r--r--winsup/cygwin/fhandler_socket.cc5
3 files changed, 10 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index aa244343f..a6198ced9 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,12 @@
2007-08-16 Corinna Vinschen <corinna@vinschen.de>
+ * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Handle S_IFSOCK
+ mode bit by setting the SYSTEM attribute.
+ * fhandler_socket.cc (fhandler_socket::fchmod): Add S_IFSOCK mode bit
+ when calling fhandler_disk_file::fchmod. Don't set attributes here.
+
+2007-08-16 Corinna Vinschen <corinna@vinschen.de>
+
* path.h (path_conv::operator char *): Delete.
(path_conv::operator const char *): Delete.
* dlfcn.cc: Throughout, replace path_conv::operator char * and
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index cccd440f4..3dfed5a42 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -772,6 +772,8 @@ fhandler_disk_file::fchmod (mode_t mode)
pc &= (DWORD) ~FILE_ATTRIBUTE_READONLY;
else
pc |= (DWORD) FILE_ATTRIBUTE_READONLY;
+ if (mode & S_IFSOCK)
+ pc |= (DWORD) FILE_ATTRIBUTE_SYSTEM;
IO_STATUS_BLOCK io;
FILE_BASIC_INFORMATION fbi;
diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc
index a5a13d064..a901dfd10 100644
--- a/winsup/cygwin/fhandler_socket.cc
+++ b/winsup/cygwin/fhandler_socket.cc
@@ -707,10 +707,7 @@ fhandler_socket::fchmod (mode_t mode)
{
fhandler_disk_file fh (pc);
fh.get_device () = FH_FS;
- int ret = fh.fchmod (adjust_socket_file_mode (mode));
- SetFileAttributesA (pc.get_win32 (),
- GetFileAttributesA (pc.get_win32 ())
- | FILE_ATTRIBUTE_SYSTEM);
+ int ret = fh.fchmod (S_IFSOCK | adjust_socket_file_mode (mode));
return ret;
}
set_errno (EBADF);