summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_disk_file.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/fhandler_disk_file.cc')
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index aa945f588..e3c9aaf93 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -609,6 +609,18 @@ fhandler_base::fstat_helper (struct __stat64 *buf,
else
{
buf->st_mode |= S_IFREG;
+ /* Check suffix for executable file. */
+ if (pc.exec_state () == dont_know_if_executable)
+ {
+ PUNICODE_STRING path = pc.get_nt_native_path ();
+
+ if (RtlEqualUnicodePathSuffix (path, L".exe", TRUE)
+ || RtlEqualUnicodePathSuffix (path, L".bat", TRUE)
+ || RtlEqualUnicodePathSuffix (path, L".com", TRUE))
+ pc.set_exec ();
+ }
+ /* No known sufix, check file header. This catches binaries and
+ shebang scripts. */
if (pc.exec_state () == dont_know_if_executable)
{
UNICODE_STRING same;