On Fri 24 Jun 2022 at 04:03pm -07, Jim Porter wrote:
When [EOF is] received, all the bytes waiting to be read are
immediately passed to the process without waiting for a <newline>, and
the EOF is discarded. Thus, if there are no bytes waiting (that is,
the EOF occurred at the beginning of a line), a byte count of zero
shall be returned from the read(), representing an end-of-file
indication.
I interpret that to mean that the preferred way to indicate end-of-file
to `rev' in this case is to send it "hi [NL] [EOF]". The second EOF that
Eshell sends when closing the stderr output handle is superfluous, but
it works fine as far as I can tell.
[1] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap11.html
The text states unconditionally that when an EOF is received it is
discarded by the OS. So we can infer that it's fine to send three,
according to the standard -- it's not just that it happens to work.
Thanks again for working on this.