* fhandler_serial.cc (fhandler_serial::raw_read): Use correct type for
minchars. (fhandler_serial::ioctl): Set errno if the ClearCommError fails. (fhandler_serial::tcsetattr): Use correct value for vmin_. (fhandler_serial::tcgetattr): Ditto.
This commit is contained in:
parent
2f5e9ace2e
commit
087a28bf5e
|
@ -1,3 +1,10 @@
|
||||||
|
2002-11-05 Sergey Okhapkin <sos@prospect.com.ru>
|
||||||
|
|
||||||
|
* fhandler_serial.cc (fhandler_serial::raw_read): Use correct type for minchars.
|
||||||
|
(fhandler_serial::ioctl): Set errno if the ClearCommError fails.
|
||||||
|
(fhandler_serial::tcsetattr): Use correct value for vmin_.
|
||||||
|
(fhandler_serial::tcgetattr): Ditto.
|
||||||
|
|
||||||
2002-11-05 Thomas Pfaff <tpfaff@gmx.net>
|
2002-11-05 Thomas Pfaff <tpfaff@gmx.net>
|
||||||
|
|
||||||
* fhandler_socket.cc (fhandler_socket::recvmsg): Call if from == NULL
|
* fhandler_socket.cc (fhandler_socket::recvmsg): Call if from == NULL
|
||||||
|
|
|
@ -626,7 +626,7 @@ class fhandler_cygdrive: public fhandler_disk_file
|
||||||
class fhandler_serial: public fhandler_base
|
class fhandler_serial: public fhandler_base
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
unsigned int vmin_; /* from termios */
|
size_t vmin_; /* from termios */
|
||||||
unsigned int vtime_; /* from termios */
|
unsigned int vtime_; /* from termios */
|
||||||
pid_t pgrp_;
|
pid_t pgrp_;
|
||||||
int rts; /* for Windows 9x purposes only */
|
int rts; /* for Windows 9x purposes only */
|
||||||
|
|
|
@ -43,7 +43,7 @@ fhandler_serial::raw_read (void *ptr, size_t ulen)
|
||||||
int tot;
|
int tot;
|
||||||
DWORD n;
|
DWORD n;
|
||||||
HANDLE w4[2];
|
HANDLE w4[2];
|
||||||
DWORD minchars = vmin_ ?: ulen;
|
size_t minchars = vmin_ ?: ulen;
|
||||||
|
|
||||||
w4[0] = io_status.hEvent;
|
w4[0] = io_status.hEvent;
|
||||||
w4[1] = signal_arrived;
|
w4[1] = signal_arrived;
|
||||||
|
@ -388,7 +388,10 @@ fhandler_serial::ioctl (unsigned int cmd, void *buffer)
|
||||||
DWORD ev;
|
DWORD ev;
|
||||||
COMSTAT st;
|
COMSTAT st;
|
||||||
if (ClearCommError (get_handle (), &ev, &st))
|
if (ClearCommError (get_handle (), &ev, &st))
|
||||||
|
{
|
||||||
|
__seterrno ();
|
||||||
res = -1;
|
res = -1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
|
@ -397,7 +400,7 @@ fhandler_serial::ioctl (unsigned int cmd, void *buffer)
|
||||||
break;
|
break;
|
||||||
case TIOCMGET:
|
case TIOCMGET:
|
||||||
DWORD modem_lines;
|
DWORD modem_lines;
|
||||||
if (GetCommModemStatus (get_handle (), &modem_lines) == 0)
|
if (!GetCommModemStatus (get_handle (), &modem_lines))
|
||||||
{
|
{
|
||||||
__seterrno ();
|
__seterrno ();
|
||||||
res = -1;
|
res = -1;
|
||||||
|
@ -794,7 +797,7 @@ fhandler_serial::tcsetattr (int action, const struct termios *t)
|
||||||
|
|
||||||
if (t->c_lflag & ICANON)
|
if (t->c_lflag & ICANON)
|
||||||
{
|
{
|
||||||
vmin_ = MAXDWORD;
|
vmin_ = 0;
|
||||||
vtime_ = 0;
|
vtime_ = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -999,7 +1002,7 @@ fhandler_serial::tcgetattr (struct termios *t)
|
||||||
t->c_oflag |= ONLCR;
|
t->c_oflag |= ONLCR;
|
||||||
|
|
||||||
debug_printf ("vmin_ %d, vtime_ %d", vmin_, vtime_);
|
debug_printf ("vmin_ %d, vtime_ %d", vmin_, vtime_);
|
||||||
if (vmin_ == MAXDWORD)
|
if (vmin_ == 0)
|
||||||
{
|
{
|
||||||
t->c_lflag |= ICANON;
|
t->c_lflag |= ICANON;
|
||||||
t->c_cc[VTIME] = t->c_cc[VMIN] = 0;
|
t->c_cc[VTIME] = t->c_cc[VMIN] = 0;
|
||||||
|
|
Loading…
Reference in New Issue