]> sourceware.org Git - newlib-cygwin.git/commitdiff
* fhandler_disk_file.cc (fhandler_disk_file::link): Only append .lnk
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 12 Oct 2009 11:57:29 +0000 (11:57 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 12 Oct 2009 11:57:29 +0000 (11:57 +0000)
if the original device had one, too.  Add comment.

* fhandler_socket.cc (fhandler_socket::fstat): Always return a size of
0 on sockets.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler_disk_file.cc
winsup/cygwin/fhandler_socket.cc

index 3bf9f45d51a731e285e5bab9bd9793c0ea7cdfba..5000d636af7cfce6a75f09923c6a066a25c1841b 100644 (file)
@@ -1,3 +1,11 @@
+2009-10-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::link): Only append .lnk
+       if the original device had one, too.  Add comment.
+
+       * fhandler_socket.cc (fhandler_socket::fstat): Always return a size of
+       0 on sockets.
+
 2009-10-09  Corinna Vinschen  <corinna@vinschen.de>
 
        * path.cc (tfx_chars): Convert all ASCII control characters except
index 1e6a781e0c104e2c5ffb8dd7f1b6b0fe68d3c3a9..eaf065f1ecc4674de90a68c5def058ddbff7375b 100644 (file)
@@ -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");
index 30253f9e5dd8fce5277da81ec8898c41221d0fbb..5f1ab2776d0d748b72fc567c1eaced2079994a6c 100644 (file)
@@ -698,6 +698,7 @@ fhandler_socket::fstat (struct __stat64 *buf)
       if (!res)
        {
          buf->st_mode = (buf->st_mode & ~S_IFMT) | S_IFSOCK;
+         buf->st_size = 0;
        }
     }
   else
@@ -708,6 +709,7 @@ fhandler_socket::fstat (struct __stat64 *buf)
          buf->st_dev = 0;
          buf->st_ino = (__ino64_t) ((DWORD) get_handle ());
          buf->st_mode = S_IFSOCK | S_IRWXU | S_IRWXG | S_IRWXO;
+         buf->st_size = 0;
        }
     }
   return res;
This page took 0.034465 seconds and 5 git commands to generate.