* pipe.cc (fhandler_pipe::ioctl): New.
+2002-11-06 Sergey Okhapkin <sos@prospect.com.ru>
+
+ * fhandler.h (class fhandler_pipe): New ioctl() method.
+ * pipe.cc (fhandler_pipe::ioctl): New.
+
2002-11-07 Christopher Faylor <cgf@redhat.com>
* fhandler_serial.cc (fhandler_serial::ioctl): Fix typo.
int close ();
void create_guard (SECURITY_ATTRIBUTES *sa) {guard = CreateMutex (sa, FALSE, NULL);}
int dup (fhandler_base *child);
+ int ioctl (unsigned int cmd, void *);
void fixup_after_fork (HANDLE);
bool hit_eof ();
void set_eof () {broken_pipe = true;}
#include "winsup.h"
#include <unistd.h>
#include <errno.h>
+#include <sys/socket.h>
#include "cygerrno.h"
#include "security.h"
#include "fhandler.h"
return res;
}
+int
+fhandler_pipe::ioctl (unsigned int cmd, void *p)
+{
+ int n;
+
+ switch (cmd)
+ {
+ case FIONREAD:
+ if (get_device () == FH_PIPEW)
+ {
+ set_errno (EINVAL);
+ return -1;
+ }
+ if (!PeekNamedPipe (get_handle (), NULL, 0, NULL, (DWORD *) &n, NULL))
+ {
+ __seterrno ();
+ return -1;
+ }
+ break;
+ default:
+ return fhandler_base::ioctl (cmd, p);
+ break;
+ }
+ *(int *) p = n;
+ return 0;
+}
+
extern "C" int
pipe (int filedes[2])
{