Pádraig Brady <[EMAIL PROTECTED]> wrote: > Jim Meyering wrote: >> diff --git a/tests/dd/reblock b/tests/dd/reblock >> index 542529a..ef9e036 100755 >> --- a/tests/dd/reblock >> +++ b/tests/dd/reblock >> @@ -44,7 +44,10 @@ sed 's/,.*//' err > k && mv k err >> compare err exp-reblock || fail=1 >> >> # Demonstrate that bs=N supersedes even following ibs= and obs= settings. >> -(echo x; sleep .1; echo y) | dd bs=3 ibs=1 obs=1 > out 2> err || fail=1 >> +# Choosing a delay of 0.1 would result in an occasional lost race where >> +# the consumer's first read would consume 3 bytes rather than the expected >> 2. >> +# Not wanting to sleep a full second, I'll raise that to 0.3. >> +(printf ab; sleep .3; printf cd) | dd bs=3 ibs=1 obs=1 > out 2> err || >> fail=1 >> sed 's/,.*//' err > k && mv k err >> compare err exp-no-reblock || fail=1 > > Doesn't the same logic need to be applied to both tests in this file, > as they both expect 2 short reads?
Yes. Good point. > Hmm, I wonder is there a way to get the producer > to wait until the consumer is ready. > I think both open()s on a fifo block on each other, > so the following would cause `printf ab` to happen > after dd has executed open(), which might help? > > mkfifo dd.fifo > dd ibs=3 obs=3 if=dd.fifo > out 2> err& > (printf ab; sleep .1; printf cd) > dd.fifo > wait #for dd to complete > sed 's/,.*//' err > k && mv k err > compare err exp-no-reblock || fail=1 Good idea. That looks like a more reliable solution. Do you feel like writing the patch? _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils