From 281e3b24234d5e0a0ac6a2d8aaca5bffccbba0e2 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 23 Oct 2002 02:32:34 +0000 Subject: [PATCH] * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Nevermind. Revert everything to previous state wrt ntsec and exec bits. --- winsup/cygwin/ChangeLog | 5 +++ winsup/cygwin/fhandler_disk_file.cc | 52 ++++++++++++++--------------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 8b11eeefb..c5ab98a42 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2002-10-22 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Nevermind. + Revert everything to previous state wrt ntsec and exec bits. + 2002-10-22 Christopher Faylor * shared.cc (shared_info::initialize): Use correct value for version diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index bb1f49556..33dd62551 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -300,38 +300,36 @@ fhandler_disk_file::fstat_helper (struct __stat64 *buf, path_conv *pc, else { buf->st_mode |= S_IFREG; + if (pc->exec_state () == dont_know_if_executable) + { + DWORD cur, done; + char magic[3]; + + /* First retrieve current position, set to beginning + of file if not already there. */ + cur = SetFilePointer (get_handle (), 0, NULL, FILE_CURRENT); + if (cur != INVALID_SET_FILE_POINTER + && (!cur || SetFilePointer (get_handle (), 0, NULL, FILE_BEGIN) + != INVALID_SET_FILE_POINTER)) + { + /* FIXME should we use /etc/magic ? */ + magic[0] = magic[1] = magic[2] = '\0'; + if (ReadFile (get_handle (), magic, 3, &done, NULL) + && has_exec_chars (magic, done)) + { + set_execable_p (); + pc->set_exec (); + buf->st_mode |= STD_XBITS; + } + (void) SetFilePointer (get_handle (), cur, NULL, FILE_BEGIN); + } + } } + if (pc->exec_state () == is_executable) buf->st_mode |= STD_XBITS; } - if (buf->st_mode & STD_XBITS) - /* already derived */; - else if (pc->exec_state () == dont_know_if_executable) - { - DWORD cur, done; - char magic[3]; - - /* First retrieve current position, set to beginning - of file if not already there. */ - cur = SetFilePointer (get_handle (), 0, NULL, FILE_CURRENT); - if (cur != INVALID_SET_FILE_POINTER - && (!cur || SetFilePointer (get_handle (), 0, NULL, FILE_BEGIN) - != INVALID_SET_FILE_POINTER)) - { - /* FIXME should we use /etc/magic ? */ - magic[0] = magic[1] = magic[2] = '\0'; - if (ReadFile (get_handle (), magic, 3, &done, NULL) && - has_exec_chars (magic, done)) - { - set_execable_p (); - pc->set_exec (); - buf->st_mode |= STD_XBITS; - } - SetFilePointer (get_handle (), cur, NULL, FILE_BEGIN); - } - } - buf->st_uid = uid; buf->st_gid = gid;