This constant is now deprecated since macOS 12.0 and a new constant
named kIOMainPortDefault is provided. There is a fallback in place
that retains compatibility for older macOS versions.
https://developer.apple.com/documentation/iokit/kiomasterportdefault
[ gsi: tweak style to match existing code base ]
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.
In platforms 21 and higher of the NDK, linux/serial.h is available,
which it was not before. This broke the build, because the configure
script would detect the availability of 'struct serial_struct' in that
header and set HAVE_STRUCT_SERIAL_STRUCT, but the #ifndef __ANDROID__
in libserialport_internal.h stopped us actually including the header.
This change fixes things to build with all versions of the NDK, and is
tested with builds for arm from versions 9 to 24.
Version 21 also added availability of tcdrain(), so we also use that
where available, and only use the direct ioctl() method on NDK < 21.
Fixes#1078.
CC serialport.lo
In file included from ../serialport.c:25:0:
../serialport.c: In function 'get_config':
../libserialport_internal.h:227:25: warning: declaration of 'ret' shadows a previous local [-Wshadow]
#define TRY(x) do { int ret = x; if (ret != SP_OK) RETURN_CODEVAL(ret); } while (0)
^
../serialport.c:1566:3: note: in expansion of macro 'TRY'
TRY(get_baudrate(port->fd, &config->baudrate));
^
../serialport.c:1543:6: warning: shadowed declaration is here [-Wshadow]
int ret = get_flow(port->fd, data);
^
Also, add -Wshadow to the list of default compiler options.
This fixes the following scan-build warning:
serialport.c: In function 'sp_list_ports':
serialport.c:354:1: warning: control reaches end of non-void function [-Wreturn-type]