While waiting for input in the read builtin, if select() is interrupted
but there is no pending signal, don't assume SIGALRM;we act like we timed out, just continue.and return the
Only fake asame status as if we had been interrupted by SIGALRM return if select(), instead of looping
until we actually do times out.
While here, add* Improve validation of the timeout value.
* Replace the single select() call with a ppoll() loop.
* Add a test case that verifies that `read -t 0` behaves correctly when
correctly when input is available; we already have one that verifies that it does
that it does when there isn't.
Finally, improve validation of the timeout valuet.
PR: 290844
MFC after: 1 week