aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/microcom.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/miscutils/microcom.c b/miscutils/microcom.c
index 5ce430a03..1608960e9 100644
--- a/miscutils/microcom.c
+++ b/miscutils/microcom.c
@@ -96,14 +96,6 @@ int microcom_main(int argc ATTRIBUTE_UNUSED, char **argv)
96 // error exit code if we fail to open the device 96 // error exit code if we fail to open the device
97 signalled = 1; 97 signalled = 1;
98 98
99 // put stdin to "raw mode" (if stdin is a TTY),
100 // handle one character at a time
101 if (isatty(STDIN_FILENO)) {
102 xget1(STDIN_FILENO, &tio, &tio0);
103 if (xset1(STDIN_FILENO, &tio, "stdin"))
104 goto done;
105 }
106
107 // open device 99 // open device
108 sfd = open_or_warn(argv[0], O_RDWR | O_NOCTTY | O_NONBLOCK); 100 sfd = open_or_warn(argv[0], O_RDWR | O_NOCTTY | O_NONBLOCK);
109 if (sfd < 0) 101 if (sfd < 0)
@@ -112,11 +104,18 @@ int microcom_main(int argc ATTRIBUTE_UNUSED, char **argv)
112 104
113 // put device to "raw mode" 105 // put device to "raw mode"
114 xget1(sfd, &tio, &tiosfd); 106 xget1(sfd, &tio, &tiosfd);
115// tio.c_cflag |= (CREAD|HUPCL); // we just bail out on any device error
116 // set device speed 107 // set device speed
117 cfsetspeed(&tio, tty_value_to_baud(speed)); 108 cfsetspeed(&tio, tty_value_to_baud(speed));
118 if (xset1(sfd, &tio, argv[0])) 109 if (xset1(sfd, &tio, argv[0]))
119 goto restore0_and_done; 110 goto done;
111
112 // put stdin to "raw mode" (if stdin is a TTY),
113 // handle one character at a time
114 if (isatty(STDIN_FILENO)) {
115 xget1(STDIN_FILENO, &tio, &tio0);
116 if (xset1(STDIN_FILENO, &tio, "stdin"))
117 goto done;
118 }
120 119
121 // main loop: check with poll(), then read/write bytes across 120 // main loop: check with poll(), then read/write bytes across
122 pfd[0].fd = sfd; 121 pfd[0].fd = sfd;
@@ -169,7 +168,6 @@ skip_write: ;
169 // restore device mode 168 // restore device mode
170 tcsetattr(sfd, TCSAFLUSH, &tiosfd); 169 tcsetattr(sfd, TCSAFLUSH, &tiosfd);
171 170
172restore0_and_done:
173 if (isatty(STDIN_FILENO)) 171 if (isatty(STDIN_FILENO))
174 tcsetattr(STDIN_FILENO, TCSAFLUSH, &tio0); 172 tcsetattr(STDIN_FILENO, TCSAFLUSH, &tio0);
175 173