<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Aug 17, 2018 at 10:08 AM Rob Landley <<a href="mailto:rob@landley.net">rob@landley.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Microcom says it's from "the android open source project", so presumably I<br>
should send questions that way: Why do you open the tty in nonblocking mode and<br>
then immediately switch to blocking mode for the reads (guarded by poll so they<br>
shouldn't block anyway)? Are there ttys that hang on open?<br></blockquote><div><br></div><div>iirc i took this behavior from the little tool that Android folks were using before. i suspect this snippet has been copied since the dawn of time, with no-one brave enough to remove it to see if it's still useful in 2018 (where all my serial ports at least are actually USB).<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I remember testing whether a CDROM drive had a CD in it without waiting to spin<br>
it up involves trying to open the block device in nonblock mode and seeing what<br>
error message you get. Presumably you can pull a similar trick on external USB<br>
drives that spin down if you don't want to wait for them. But I dunno how it<br>
applies to char devices?<br>
<br>
I'm combining xraw() with set_terminal(), and moving the speed setting logic<br>
into set_terminal. And while we're at it:<br>
<br>
  $ echo hello | toybox microcom -s 115200 /dev/ttyS0<br>
  microcom: tcgetattr fd: I/O error<br>
<br>
(I think about these things because "toybox expect" is on my post-1.0 todo<br>
list.) And if xraw() fails on stdin we haven't set up the signal handler yet and<br>
don't restore the tty state? Dunno if it matters...<br>
<br>
Heh. If you run "toybox top | cat" and then ctrl-c to kill it, the cursor<br>
display isn't reenabled and the _reason_ is it was disabled by an ANSI escape<br>
sequence and the signal handler that re-enables it outputs the corresponding<br>
ANSI escape sequence... which can't make it out through cat if the ctrl-c killed<br>
the whole pipeline.<br>
<br>
I'm calling that one pilot error, largely because I dunno how to fix it. (The<br>
tcsetattr call takes it back out of raw mode, but the tcsetattr man page doesn't<br>
contain the word "cursor"...)<br>
<br>
Rob<br>
_______________________________________________<br>
Toybox mailing list<br>
<a href="mailto:Toybox@lists.landley.net" target="_blank">Toybox@lists.landley.net</a><br>
<a href="http://lists.landley.net/listinfo.cgi/toybox-landley.net" rel="noreferrer" target="_blank">http://lists.landley.net/listinfo.cgi/toybox-landley.net</a><br>
</blockquote></div></div>