summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc2
-rw-r--r--winsup/cygwin/path.cc3
3 files changed, 11 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index c80307170..2faa2e514 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,10 @@
+2009-01-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhandler_disk_file::link): Only add .exe if
+ original file has .exe as well.
+ * path.cc (path_conv::is_binary): Only recognize Windows 32 and 64 bit
+ apps as binaries.
+
2009-01-02 Christopher Faylor <me+cygwin@cgf.cx>
Remove unneeded header files from source files throughout.
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index 15ad76fc0..2ad72b749 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -1153,6 +1153,8 @@ fhandler_disk_file::link (const char *newpath)
}
else if (!pc.isdir ()
&& pc.is_binary ()
+ && RtlEqualUnicodePathSuffix (pc.get_nt_native_path (),
+ L".exe", TRUE)
&& !RtlEqualUnicodePathSuffix (newpc.get_nt_native_path (),
L".exe", TRUE))
{
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index f44650a4a..da96cde01 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -1116,7 +1116,8 @@ path_conv::is_binary ()
PWCHAR bintest = tp.w_get ();
DWORD bin;
- return GetBinaryTypeW (get_wide_win32_path (bintest), &bin);
+ return GetBinaryTypeW (get_wide_win32_path (bintest), &bin)
+ && (bin == SCS_32BIT_BINARY || bin == SCS_64BIT_BINARY);
}
/* Normalize a Win32 path.