Index: fhandler.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/fhandler.cc,v
retrieving revision 1.129
diff -u -r1.129 fhandler.cc
--- fhandler.cc	20 Jun 2002 00:36:40 -0000	1.129
+++ fhandler.cc	22 Jun 2002 14:14:58 -0000
@@ -829,18 +829,23 @@
 {
   switch (get_device ())
     {
+    case FH_PIPE:
+      buf->st_mode = S_IFIFO | STD_RBITS | STD_WBITS | S_IWGRP | S_IWOTH;
+      break;
     case FH_PIPEW:
-      buf->st_mode = STD_WBITS | S_IWGRP | S_IWOTH;
+      buf->st_mode = S_IFIFO | STD_WBITS | S_IWGRP | S_IWOTH;
       break;
     case FH_PIPER:
-      buf->st_mode = STD_RBITS;
+      buf->st_mode = S_IFIFO | STD_RBITS;
+      break;
+    case FH_FLOPPY:
+      buf->st_mode = S_IFBLK | STD_RBITS | STD_WBITS | S_IWGRP | S_IWOTH;
       break;
     default:
-      buf->st_mode = STD_RBITS | STD_WBITS | S_IWGRP | S_IWOTH;
+      buf->st_mode = S_IFCHR | STD_RBITS | STD_WBITS | S_IWGRP | S_IWOTH;
       break;
     }
 
-  buf->st_mode |= get_device () == FH_FLOPPY ? S_IFBLK : S_IFCHR;
   buf->st_nlink = 1;
   buf->st_blksize = S_BLKSIZE;
   time_as_timestruc_t (&buf->st_ctim);
Index: fhandler_socket.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/fhandler_socket.cc,v
retrieving revision 1.47
diff -u -r1.47 fhandler_socket.cc
--- fhandler_socket.cc	10 Jun 2002 11:07:44 -0000	1.47
+++ fhandler_socket.cc	22 Jun 2002 14:14:58 -0000
@@ -248,7 +248,11 @@
 {
   int res = fhandler_base::fstat (buf, pc);
   if (!res)
-    buf->st_ino = (ino_t) get_handle ();
+    {
+      buf->st_mode &= ~_IFMT;
+      buf->st_mode |= _IFSOCK;
+      buf->st_ino = (ino_t) get_handle ();
+    }
   return res;
 }
 
