ntdll: Fix set_XOff and set_XOn.
authorWolfgang Walter <wine@stwm.de>
Sat, 20 Dec 2008 15:56:22 +0000 (16:56 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 22 Dec 2008 13:21:07 +0000 (14:21 +0100)
dlls/ntdll/serial.c

index 95be78d8b8fb8076c1ece407440101bcff06edf4..e174c12c1d7f46875d5bd97034506caa1af4b44f 100644 (file)
@@ -800,39 +800,25 @@ static NTSTATUS set_wait_mask(HANDLE hDevice, DWORD mask)
     return status;
 }
 
+/*
+ * does not change IXOFF but simulates that IXOFF has been received:
+ */
 static NTSTATUS set_XOff(int fd)
 {
-    struct termios      port;
-
-    if (tcgetattr(fd,&port) == -1)
-    {
-        FIXME("tcgetattr on fd %d failed (%s)!\n", fd, strerror(errno));
-        return FILE_GetNtStatus();
-
-
-    }
-    port.c_iflag |= IXOFF;
-    if (tcsetattr(fd, TCSADRAIN, &port) == -1)
+    if (tcflow(fd, TCOOFF))
     {
-        FIXME("tcsetattr on fd %d failed (%s)!\n", fd, strerror(errno));
         return FILE_GetNtStatus();
     }
     return STATUS_SUCCESS;
 }
 
+/*
+ * does not change IXON but simulates that IXON has been received:
+ */
 static NTSTATUS set_XOn(int fd)
 {
-    struct termios      port;
-
-    if (tcgetattr(fd,&port) == -1)
-    {
-        FIXME("tcgetattr on fd %d failed (%s)!\n", fd, strerror(errno));
-        return FILE_GetNtStatus();
-    }
-    port.c_iflag |= IXON;
-    if (tcsetattr(fd, TCSADRAIN, &port) == -1)
+    if (tcflow(fd, TCOON))
     {
-        FIXME("tcsetattr on fd %d failed (%s)!\n", fd, strerror(errno));
         return FILE_GetNtStatus();
     }
     return STATUS_SUCCESS;