On Tuesday, March 7, 2023 2:28:05 AM CET Pádraig Brady wrote: > On 25/07/2019 11:59, Kamil Dudka wrote: > > I see two major issues with the patch: > > > > 1. If the file descriptor operates in non-blocking mode and it starts > > to return EAGAIN, tee will busy-loop (consume 100% CPU) until the file > > descriptor becomes ready again. > > > > 2. If fwrite() fails with EAGAIN, you cannot repeat the call with the same > > arguments because something might have been already written before EAGAIN > > was > > returned from a syscall. In that case, you would try to write the already > > written data repeatedly, which is not desired. > > > > A few months ago I proposed a patch that was free of the above issues but it > > addressed EAGAIN on tee's output only: > > > > https://lists.gnu.org/archive/html/coreutils/2018-09/msg00010.html > > > > The bad news is that the patch was rejected because a workaround exists. > > Given there are now two programs that trigger the issue, > and we've recently added portable poll() usage in the tee implementation, > I'm more inclined to add support for this now. > > The attached does this using our new iopoll module.
The proposed patch works for me. Thank you for working on it! Kamil > cheers, > Pádraig