X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=serialport.c;h=6104f241a17cb34db7638ef00ac9cebaff4529ce;hb=69a3739ca07a87d56e376a02f3bc1f0a0a9b64e7;hp=92156b476471cdf73f3a3efefe05bba69aff6795;hpb=ea34fba89980174892ef239ca752484055297f69;p=libserialport.git diff --git a/serialport.c b/serialport.c index 92156b4..6104f24 100644 --- a/serialport.c +++ b/serialport.c @@ -535,6 +535,23 @@ enum sp_return sp_flush(struct sp_port *port, enum sp_buffer buffers) return SP_OK; } +enum sp_return sp_drain(struct sp_port *port) +{ + CHECK_PORT(); + +#ifdef _WIN32 + /* Returns non-zero upon success, 0 upon failure. */ + if (FlushFileBuffers(port->hdl) == 0) + return SP_ERR_FAIL; +#else + /* Returns 0 upon success, -1 upon failure. */ + if (tcdrain(port->fd) < 0) + return SP_ERR_FAIL; +#endif + + return SP_OK; +} + enum sp_return sp_write(struct sp_port *port, const void *buf, size_t count) { CHECK_PORT();