diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index b0435288d..80623b3f1 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2002-10-22 Christopher Faylor <cgf@redhat.com> + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Oops. Only + do the executable thing for #! scripts since .exe files wouldn't be + executable in ntsec case regardless. + 2002-10-22 Christopher Faylor <cgf@redhat.com> * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Always diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 85b8b3463..bb1f49556 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -301,36 +301,36 @@ fhandler_disk_file::fstat_helper (struct __stat64 *buf, path_conv *pc, { buf->st_mode |= S_IFREG; } + if (pc->exec_state () == is_executable) + buf->st_mode |= STD_XBITS; } - if (buf->st_mode & STD_XBITS) - /* already derived */; - else if (pc->exec_state () == is_executable) - buf->st_mode |= STD_XBITS; - else if (pc->exec_state () == dont_know_if_executable) - { - DWORD cur, done; - char magic[3]; + 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); - } - } + /* 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;