#ifdef B115200
CHECKBAUD(115200);
#endif
+#ifdef B153600
+ CHECKBAUD(153600);
+#endif
#ifdef B230400
CHECKBAUD(230400);
#endif
+#ifdef B307200
+ CHECKBAUD(307200);
+#endif
+#ifdef B460800
+ CHECKBAUD(460800);
+#endif
+#ifdef B500000
+ CHECKBAUD(500000);
+#endif
+#ifdef B576000
+ CHECKBAUD(576000);
+#endif
+#ifdef B921600
+ CHECKBAUD(921600);
+#endif
+#ifdef B1000000
+ CHECKBAUD(1000000);
+#endif
+#ifdef B1152000
+ CHECKBAUD(1152000);
+#endif
+#ifdef B1500000
+ CHECKBAUD(1500000);
+#endif
+#ifdef B2000000
+ CHECKBAUD(2000000);
+#endif
+#ifdef B2500000
+ CHECKBAUD(2500000);
+#endif
+#ifdef B3000000
+ CHECKBAUD(3000000);
+#endif
+#ifdef B3500000
+ CHECKBAUD(3500000);
+#endif
+#ifdef B4000000
+ CHECKBAUD(4000000);
+#endif
#undef CHECKBAUD
#undef SETBAUD
cfsetispeed(&options, bflag);
options.c_cflag |= CLOCAL | CREAD;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
- options.c_oflag &= ~OPOST;
+ options.c_iflag &= ~(ISTRIP | IGNCR | INLCR | ICRNL
+#ifdef IUCLC
+ | IUCLC
+#endif
+ );
+ options.c_oflag &= ~(OPOST
+#ifdef ONLCR
+ | ONLCR
+#endif
+#ifdef OCRNL
+ | OCRNL
+#endif
+#ifdef ONOCR
+ | ONOCR
+#endif
+#ifdef ONLRET
+ | ONLRET
+#endif
+ );
options.c_cc[VMIN] = 1;
options.c_cc[VTIME] = 0;
if (serial->fd < 0)
return "Unable to open serial port";
+ cloexec(serial->fd);
+
err = serial_configure(serial, cfg);
if (err)
return err;
*/
finished = TRUE;
} else if (ret < 0) {
+#ifdef EAGAIN
+ if (errno == EAGAIN)
+ return 1; /* spurious */
+#endif
+#ifdef EWOULDBLOCK
+ if (errno == EWOULDBLOCK)
+ return 1; /* spurious */
+#endif
perror("read serial port");
exit(1);
} else if (ret > 0) {
serial_provide_logctx,
serial_unthrottle,
serial_cfg_info,
- 1
+ "serial",
+ PROT_SERIAL,
+ 0
};