]> sigrok.org Git - libserialport.git/commitdiff
Fix building on Cygwin.
authorMartin Ling <redacted>
Sat, 25 Jan 2020 14:51:56 +0000 (14:51 +0000)
committerUwe Hermann <redacted>
Sun, 26 Jan 2020 20:21:21 +0000 (21:21 +0100)
There were two issues: first, feature test macros were only defined
for __linux__, so defintions we needed were not included. Enable the
same feature test macros for __CYGWIN__.

Second, the Cygwin headers do not define TIOCOUTQ, needed to use
ioctl() to get the number of bytes in the output queue. Return
SP_ERR_SUPP on Cygwin for this operation.

This fixes bug #963.

libserialport_internal.h
serialport.c

index 20b3505925a0d8e79d00ae21f641f1a0ac429f32..5b811cc3bef665c02764fb4bbba0f0105cfe182b 100644 (file)
@@ -27,8 +27,8 @@
 #define _CRT_SECURE_NO_WARNINGS
 #endif
 
-/* These Linux/glibc specific defines must appear before other headers.*/
-#ifdef __linux__
+/* These feature test macros must appear before other headers.*/
+#if defined(__linux__) || defined(__CYGWIN__)
 /* For timeradd, timersub, timercmp, realpath. */
 #define _BSD_SOURCE 1 /* for glibc < 2.19 */
 #define _DEFAULT_SOURCE 1 /* for glibc >= 2.20 */
index 422b767a50366aeae3682b5a6124ecc5c06bcdcc..eda2d19250fdcc7316b9f1f60ffa21ff4d37655f 100644 (file)
@@ -1307,6 +1307,11 @@ SP_API enum sp_return sp_output_waiting(struct sp_port *port)
 {
        TRACE("%p", port);
 
+#ifdef __CYGWIN__
+       /* TIOCOUTQ is not defined in Cygwin headers */
+       RETURN_ERROR(SP_ERR_SUPP,
+                       "Getting output bytes waiting is not supported on Cygwin");
+#else
        CHECK_OPEN_PORT();
 
        DEBUG_FMT("Checking output bytes waiting on port %s", port->name);
@@ -1324,6 +1329,7 @@ SP_API enum sp_return sp_output_waiting(struct sp_port *port)
                RETURN_FAIL("TIOCOUTQ ioctl failed");
        RETURN_INT(bytes_waiting);
 #endif
+#endif
 }
 
 SP_API enum sp_return sp_new_event_set(struct sp_event_set **result_ptr)