~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
My changes in r7738 (O_NONBLOCK for Unix Plink) were half-arsed, and
[sgt/putty]
/
unix
/
uxser.c
diff --git
a/unix/uxser.c
b/unix/uxser.c
index
db98dd8
..
92961a7
100644
(file)
--- a/
unix/uxser.c
+++ b/
unix/uxser.c
@@
-162,9
+162,15
@@
static const char *serial_configure(Serial serial, Config *cfg)
logevent(serial->frontend, msg);
sfree(msg);
logevent(serial->frontend, msg);
sfree(msg);
- options.c_cflag &= ~(IXON|IXOFF);
+ options.c_iflag &= ~(IXON|IXOFF);
+#ifdef CRTSCTS
+ options.c_cflag &= ~CRTSCTS;
+#endif
+#ifdef CNEW_RTSCTS
+ options.c_cflag &= ~CNEW_RTSCTS;
+#endif
if (cfg->serflow == SER_FLOW_XONXOFF) {
if (cfg->serflow == SER_FLOW_XONXOFF) {
- options.c_
c
flag |= IXON | IXOFF;
+ options.c_
i
flag |= IXON | IXOFF;
str = "XON/XOFF";
} else if (cfg->serflow == SER_FLOW_RTSCTS) {
#ifdef CRTSCTS
str = "XON/XOFF";
} else if (cfg->serflow == SER_FLOW_RTSCTS) {
#ifdef CRTSCTS
@@
-199,7
+205,25
@@
static const char *serial_configure(Serial serial, Config *cfg)
options.c_cflag |= CLOCAL | CREAD;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
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;
options.c_cc[VMIN] = 1;
options.c_cc[VTIME] = 0;
@@
-242,6
+266,8
@@
static const char *serial_init(void *frontend_handle, void **backend_handle,
if (serial->fd < 0)
return "Unable to open serial port";
if (serial->fd < 0)
return "Unable to open serial port";
+ cloexec(serial->fd);
+
err = serial_configure(serial, cfg);
if (err)
return err;
err = serial_configure(serial, cfg);
if (err)
return err;
@@
-510,5
+536,7
@@
Backend serial_backend = {
serial_provide_logctx,
serial_unthrottle,
serial_cfg_info,
serial_provide_logctx,
serial_unthrottle,
serial_cfg_info,
- 1
+ "serial",
+ PROT_SERIAL,
+ 0
};
};