From: Uwe Hermann Date: Tue, 26 Nov 2013 15:29:43 +0000 (+0100) Subject: serial.c: Re-enable serial_read() error reporting. X-Git-Tag: libsigrok-0.3.0~531 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=c4d85a4026cd9c593521a635b1e477aac15eb86a;p=libsigrok.git serial.c: Re-enable serial_read() error reporting. libserialport now returns 0 (not SP_ERR_FAIL) as return value when a non-blocking read would return EAGAIN. This fixes bug #188. --- diff --git a/hardware/common/serial.c b/hardware/common/serial.c index b2515a34..342980d0 100644 --- a/hardware/common/serial.c +++ b/hardware/common/serial.c @@ -234,7 +234,7 @@ SR_PRIV int serial_read(struct sr_serial_dev_inst *serial, void *buf, size_t count) { ssize_t ret; - //char *error; + char *error; if (!serial) { sr_dbg("Invalid serial port."); @@ -253,15 +253,14 @@ SR_PRIV int serial_read(struct sr_serial_dev_inst *serial, void *buf, case SP_ERR_ARG: sr_err("Attempted serial port read with invalid arguments."); return SR_ERR_ARG; - // Temporarily disabled, will come back later. - // case SP_ERR_FAIL: - // error = sp_last_error_message(); - // sr_err("Read error: %s.", error); - // sp_free_error_message(error); - // return SR_ERR; + case SP_ERR_FAIL: + error = sp_last_error_message(); + sr_err("Read error: %s.", error); + sp_free_error_message(error); + return SR_ERR; } - if (ret >= 0) + if (ret > 0) sr_spew("Read %d/%d bytes (fd %d).", ret, count, serial->fd); return ret;