Hi Carl, Padraig, Thanks for the ACK. I've sent the signed copyright assignment form; I'll keep you posted on that.
On Tue, 13 Dec 2022, Pádraig Brady wrote:
>> Re HAVE_INOTIFY, that's really a proxy for a linux kernel, and so would be
>> most appropriately changed to:
>>
>> defined __linux__ || defined __ANDROID__
>>
>> I'm thinking these hardcoded defines would be best for now at least as it
>> covers the vast majority of systems, and avoids complicated (cross) compile
>> time checks.
It might also be good to give a quick test on FreeBSD, since it has some
popularity too.
>> A modularised iopoll.c would be better, given the potential uses by other
>> tools, though we'd probably release for just tee initially.
>>
>> As for interface to this functionality I'm wondering if we could just have
>> the existing tee {-p,--output-error} imply the use of poll() on output.
>>
>> I.e. from a high level -p just means to deal more appropriately with non file
>> outputs, and as part of that, dealing immediately with closed outputs would
>> be an improvement.
That seems reasonable to me.
>> Note also tail(1) enables this functionality by default. I'm not sure about
>> other utilities, but we can deal with that later if needed.
Carl Edquist via GNU coreutils General Discussion <[email protected]> writes:
>
> Thanks Pádraig for the feedback - that all sounds good.
>
> Will try to follow-up sometime this week...
If you prefer, I'll have some time in the latter part of this week too.
Let's not forget to include the testcase posted previously (with -p
instead of -P, since it was suggested to enable polling for -p):
( sleep 5 | (timeout 3 tee -p 2>/dev/null && echo TEST_PASSED >&8) | : ) 8>&1 |
grep -qx TEST_PASSED
To annotate it, and let's include this info in a comment:
- sleep emulates misbehaving input.
- The timeout is our failure safety-net.
- We ignore stderr from tee, and should have no stdout anyway.
- If that succeeds, we print TEST_PASSED into FD 8 to grep for later.
(FD 8 was selected by a D20 roll, or rather, a software emulation)
- The colon is the immediately closed output process.
- We redirect 8 back into stdout to grep it.
If tee fails, for instance because it times out, or it fails to
recognize -P for some reason, the echo simply won't run. The grep
options are in POSIX (or, at least, in POSIX.1-2017).
Thank you both, have a great night.
--
Arsen Arsenović
signature.asc
Description: PGP signature
