diff options
Diffstat (limited to 'winsup/cygwin/fhandler_disk_file.cc')
-rw-r--r-- | winsup/cygwin/fhandler_disk_file.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 1e6a781e0..eaf065f1e 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -1210,7 +1210,12 @@ fhandler_disk_file::link (const char *newpath) char new_buf[nlen + 5]; if (!newpc.error) { - if (pc.is_lnk_special ()) + /* If the original file is a lnk special file (except for sockets), + and if the original file has a .lnk suffix, add one to the hardlink + as well. */ + if (pc.is_lnk_special () && !pc.issocket () + && RtlEqualUnicodePathSuffix (pc.get_nt_native_path (), + &ro_u_lnk, TRUE)) { /* Shortcut hack. */ stpcpy (stpcpy (new_buf, newpath), ".lnk"); |