mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-21 16:26:12 +08:00
* fhandler.h (class fhandler_pipe): New ioctl() method.
* pipe.cc (fhandler_pipe::ioctl): New.
This commit is contained in:
parent
7c4f9b9a05
commit
49f7ea1675
@ -1,3 +1,8 @@
|
|||||||
|
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>
|
2002-11-07 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
* fhandler_serial.cc (fhandler_serial::ioctl): Fix typo.
|
* fhandler_serial.cc (fhandler_serial::ioctl): Fix typo.
|
||||||
|
@ -459,6 +459,7 @@ class fhandler_pipe: public fhandler_base
|
|||||||
int close ();
|
int close ();
|
||||||
void create_guard (SECURITY_ATTRIBUTES *sa) {guard = CreateMutex (sa, FALSE, NULL);}
|
void create_guard (SECURITY_ATTRIBUTES *sa) {guard = CreateMutex (sa, FALSE, NULL);}
|
||||||
int dup (fhandler_base *child);
|
int dup (fhandler_base *child);
|
||||||
|
int ioctl (unsigned int cmd, void *);
|
||||||
void fixup_after_fork (HANDLE);
|
void fixup_after_fork (HANDLE);
|
||||||
bool hit_eof ();
|
bool hit_eof ();
|
||||||
void set_eof () {broken_pipe = true;}
|
void set_eof () {broken_pipe = true;}
|
||||||
|
@ -13,6 +13,7 @@ details. */
|
|||||||
#include "winsup.h"
|
#include "winsup.h"
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
#include "cygerrno.h"
|
#include "cygerrno.h"
|
||||||
#include "security.h"
|
#include "security.h"
|
||||||
#include "fhandler.h"
|
#include "fhandler.h"
|
||||||
@ -179,6 +180,33 @@ make_pipe (int fildes[2], unsigned int psize, int mode)
|
|||||||
return res;
|
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
|
extern "C" int
|
||||||
pipe (int filedes[2])
|
pipe (int filedes[2])
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user