aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2002-10-22 21:35:21 +0000
committerChristopher Faylor <me@cgf.cx>2002-10-22 21:35:21 +0000
commit046a4e718e824a9953922eedc4f32d8fac048f10 (patch)
tree29fc4fd27910b87c67f37f532ef18df8857d047a
parent7dcbb978e046f65c6933b7c0eee6055a0e2bb4fa (diff)
downloadnewlib-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/ChangeLog6
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc56
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;