From f4c963630ea50959fcbd55d897defb4fafdb45eb Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 16 Aug 2007 16:59:25 +0000 Subject: [PATCH] * 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. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/fhandler_disk_file.cc | 2 ++ winsup/cygwin/fhandler_socket.cc | 5 +---- 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,3 +1,10 @@ +2007-08-16 Corinna Vinschen + + * 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 * path.h (path_conv::operator char *): Delete. 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);