diff options
author | Christopher Faylor <me@cgf.cx> | 2002-10-22 21:35:21 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-10-22 21:35:21 +0000 |
commit | 046a4e718e824a9953922eedc4f32d8fac048f10 (patch) | |
tree | 29fc4fd27910b87c67f37f532ef18df8857d047a | |
parent | 7dcbb978e046f65c6933b7c0eee6055a0e2bb4fa (diff) | |
download | newlib-046a4e718e824a9953922eedc4f32d8fac048f10.zip newlib-046a4e718e824a9953922eedc4f32d8fac048f10.tar.gz newlib-046a4e718e824a9953922eedc4f32d8fac048f10.tar.bz2 |
* 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.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_disk_file.cc | 56 |
2 files changed, 34 insertions, 28 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index b043528..80623b3 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,11 @@ 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 consider .exe files and '#!' shell scripts to be executable. diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 85b8b34..bb1f495 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]; - - /* 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); - } - } + 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; |