PATCH: FlushFileBuffers / serial
Marcus Meissner
mm at lst.de
Sun Jul 14 10:16:41 CDT 2002
On Sat, Jul 13, 2002 at 09:48:05PM +0200, Rein Klazes wrote:
> On Fri, 12 Jul 2002 23:22:13 +0200, you wrote:
>
>
> > + /* MSDN says: If hFile is a handle to a communications device,
> > + * the function only flushes the transmit buffer.
> > + */
> > + ret = (tcdrain( serial->obj.fd ) != -1);
>
> Hmm, doesn't that mean you should use tcflush() instead?
Thanks, well spotted.
Ciao, Marcus
License: LGPL
Changelog:
Marcus Meissner <marcus at jet.franken.de>
Protect InternetCloseHandle() against invalid handles.
Index: serial.c
===================================================================
RCS file: /home/wine/wine/server/serial.c,v
retrieving revision 1.22
diff -u -r1.22 serial.c
--- serial.c 30 May 2002 20:12:58 -0000 1.22
+++ serial.c 14 Jul 2002 15:14:57 -0000
@@ -55,6 +55,7 @@
static void serial_queue_async(struct object *obj, void *ptr, unsigned int status, int type, int count);
static void destroy_serial(struct object *obj);
static void serial_poll_event( struct object *obj, int event );
+static int serial_flush( struct object *obj );
struct serial
{
@@ -92,7 +93,7 @@
serial_get_poll_events, /* get_poll_events */
serial_poll_event, /* poll_event */
serial_get_fd, /* get_fd */
- no_flush, /* flush */
+ serial_flush, /* flush */
serial_get_info, /* get_file_info */
serial_queue_async, /* queue_async */
destroy_serial /* destroy */
@@ -314,6 +315,21 @@
else set_error ( STATUS_INVALID_PARAMETER );
set_select_events ( obj, serial_get_poll_events ( obj ));
+}
+
+static int serial_flush( struct object *obj )
+{
+ int ret;
+ struct serial *serial = (struct serial *)grab_object(obj);
+ assert( obj->ops == &serial_ops );
+
+ /* MSDN says: If hFile is a handle to a communications device,
+ * the function only flushes the transmit buffer.
+ */
+ ret = (tcflush( serial->obj.fd, TCOFLUSH ) != -1);
+ if (!ret) file_set_error();
+ release_object( serial );
+ return ret;
}
/* create a serial */
More information about the wine-patches
mailing list