summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Wiedenroth <wiedi@frubar.net>2014-02-10 03:02:43 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-11 12:06:52 +0100
commit6ce439a6393cd857f3eb9ffeba0ad6594cf4ae63 (patch)
tree07ebd8c52f28ec28ae7dc0d26d7a8f5001f8c2b0
parent96ea4b2629939b5ff357402245ac2e220979ee51 (diff)
downloadqtserialport-6ce439a6393cd857f3eb9ffeba0ad6594cf4ae63.tar.gz
Don't use cfmakeraw on SunOS
The cfmakeraw() function is an extension to POSIX and thus not fully portable. It doesn't exist on Solaris and Illumos. Source: http://www.perkin.org.uk/posts/solaris-portability-cfmakeraw.html Change-Id: Icf514fe32c01e85baff2a0d49321e45a320703b7 Reviewed-by: Laszlo Papp <lpapp@kde.org>
-rw-r--r--src/serialport/qserialport_unix.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp
index a904c06..844ba13 100644
--- a/src/serialport/qserialport_unix.cpp
+++ b/src/serialport/qserialport_unix.cpp
@@ -237,7 +237,15 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
}
currentTermios = restoredTermios;
+#ifdef Q_OS_SOLARIS
+ currentTermios.c_iflag &= ~(IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
+ currentTermios.c_oflag &= ~OPOST;
+ currentTermios.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
+ currentTermios.c_cflag &= ~(CSIZE|PARENB);
+ currentTermios.c_cflag |= CS8;
+#else
::cfmakeraw(&currentTermios);
+#endif
currentTermios.c_cflag |= CLOCAL;
currentTermios.c_cc[VTIME] = 0;
currentTermios.c_cc[VMIN] = 0;