From 28d3d213f12a6c5cd179d07b7bb36da364f3a7c5 Mon Sep 17 00:00:00 2001 From: Cliff Wright Date: Sun, 22 Nov 1998 15:05:18 +0000 Subject: [PATCH] Fixed a mask set, and other parity setting bugs for serial ports. --- misc/comm.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/misc/comm.c b/misc/comm.c index 920098800f0..86aec6b313a 100644 --- a/misc/comm.c +++ b/misc/comm.c @@ -255,11 +255,11 @@ BOOL16 WINAPI BuildCommDCB16(LPCSTR device, LPDCB16 lpdcb) *ptr = toupper(*ptr); TRACE(comm,"parity (%c)\n", *ptr); - lpdcb->fParity = 1; + lpdcb->fParity = TRUE; switch (*ptr) { case 'N': lpdcb->Parity = NOPARITY; - lpdcb->fParity = 0; + lpdcb->fParity = FALSE; break; case 'E': lpdcb->Parity = EVENPARITY; @@ -1459,15 +1459,18 @@ INT16 WINAPI GetCommState16(INT16 fd, LPDCB16 lpdcb) break; } - switch (port.c_cflag & ~(PARENB | PARODD)) { + switch (port.c_cflag & (PARENB | PARODD)) { case 0: - lpdcb->fParity = NOPARITY; + lpdcb->fParity = FALSE; + lpdcb->Parity = NOPARITY; break; case PARENB: - lpdcb->fParity = EVENPARITY; + lpdcb->fParity = TRUE; + lpdcb->Parity = EVENPARITY; break; case (PARENB | PARODD): - lpdcb->fParity = ODDPARITY; + lpdcb->fParity = TRUE; + lpdcb->Parity = ODDPARITY; break; } @@ -1578,15 +1581,18 @@ BOOL32 WINAPI GetCommState32(INT32 fd, LPDCB32 lpdcb) break; } - switch (port.c_cflag & ~(PARENB | PARODD)) { + switch (port.c_cflag & (PARENB | PARODD)) { case 0: - lpdcb->fParity = NOPARITY; + lpdcb->fParity = FALSE; + lpdcb->Parity = NOPARITY; break; case PARENB: - lpdcb->fParity = EVENPARITY; + lpdcb->fParity = TRUE; + lpdcb->Parity = EVENPARITY; break; case (PARENB | PARODD): - lpdcb->fParity = ODDPARITY; + lpdcb->fParity = TRUE; + lpdcb->Parity = ODDPARITY; break; }