diff -up winsup.orig/cygwin/select.cc winsup/cygwin/select.cc --- winsup.orig/cygwin/select.cc Sun Mar 12 06:30:23 2000 +++ winsup/cygwin/select.cc Mon Mar 13 14:29:41 2000 @@ -426,7 +426,8 @@ peek_pipe (select_record *s, int ignra) } } - if (!PeekNamedPipe (h, NULL, 0, NULL, (DWORD *) &n, NULL)) + if (fh->get_device () != FH_PIPEW && + !PeekNamedPipe (h, NULL, 0, NULL, (DWORD *) &n, NULL)) { select_printf ("%s, PeekNamedPipe failed, %E", fh->get_name ()); n = -1; diff -up winsup.orig/cygwin/fhandler.cc winsup/cygwin/fhandler.cc --- winsup.orig/cygwin/fhandler.cc Sun Mar 12 06:30:21 2000 +++ winsup/cygwin/fhandler.cc Mon Mar 13 14:24:38 2000 @@ -1456,8 +1456,8 @@ fhandler_dev_null::dump (void) /**********************************************************************/ /* fhandler_pipe */ -fhandler_pipe::fhandler_pipe (const char *name) : - fhandler_base (FH_PIPE, name) +fhandler_pipe::fhandler_pipe (const DWORD devtype, const char *name) : + fhandler_base (devtype, name) { set_cb (sizeof *this); } diff -up winsup.orig/cygwin/fhandler.h winsup/cygwin/fhandler.h --- winsup.orig/cygwin/fhandler.h Sun Mar 12 06:30:21 2000 +++ winsup/cygwin/fhandler.h Mon Mar 13 14:30:25 2000 @@ -327,7 +327,7 @@ public: class fhandler_pipe: public fhandler_base { public: - fhandler_pipe (const char *name = 0); + fhandler_pipe (const DWORD devtype, const char *name = 0); off_t lseek (off_t offset, int whence); /* This strange test is due to the fact that we can't rely on Windows shells to "do the right thing" with pipes. Apparently diff -up winsup.orig/cygwin/hinfo.cc winsup/cygwin/hinfo.cc --- winsup.orig/cygwin/hinfo.cc Tue Mar 07 05:33:51 2000 +++ winsup/cygwin/hinfo.cc Mon Mar 13 14:33:32 2000 @@ -261,7 +261,7 @@ hinfo::build_fhandler (int fd, DWORD dev case FH_PIPE: case FH_PIPER: case FH_PIPEW: - fh = new (buf) fhandler_pipe (name); + fh = new (buf) fhandler_pipe (dev & FH_DEVMASK, name); break; case FH_SOCKET: fh = new (buf) fhandler_socket (name); diff -up winsup.orig/cygwin/pipe.cc winsup/cygwin/pipe.cc --- winsup.orig/cygwin/pipe.cc Thu Feb 24 04:55:15 2000 +++ winsup/cygwin/pipe.cc Mon Mar 13 14:27:04 2000 @@ -30,8 +30,8 @@ make_pipe (int fildes[2], unsigned int p __seterrno (); else { - fhandler_base *fhr = dtable.build_fhandler (fdr, FH_PIPE, "/dev/piper"); - fhandler_base *fhw = dtable.build_fhandler (fdw, FH_PIPE, "/dev/pipew"); + fhandler_base *fhr = dtable.build_fhandler (fdr, FH_PIPER, "/dev/piper"); + fhandler_base *fhw = dtable.build_fhandler (fdw, FH_PIPEW, "/dev/pipew"); int binmode = mode & O_TEXT ? 0 : 1; fhr->init (r, GENERIC_READ, binmode);