[Toybox] [PATCH] More line buffering.

enh enh at google.com
Mon Apr 26 15:43:49 PDT 2021


This patch does two things:

1. Enable line buffering for echo and yes. I found this through test
   flakiness from the toybox xargs tests running in CI on devices where
   "echo" is provided by toybox. For `echo y`, GNU echo does one write
   of "y\n" but toybox echo was doing two writes, which makes it more
   likely (4% on the heavily-loaded CI machines) for writes from the two
   processes to be interleaved.

2. Fix line buffering on glibc if you're calling `toybox foo` rather
   than `foo`. Otherwise we come through once and switch to unbuffered
   mode, then again and switch to line buffered mode --- which doesn't
   seem to actually work in glibc unless you specify a buffer (so
   passing toybuf and sizeof(toybuf) works, but NULL and 0 doesn't).

I hit the second issue trying to reproduce the first issue on the desktop
rather than on Android.

(If you're scratching your head wondering "why yes(1) too, not just
echo(1)?", that represents a blind alley I went down when I mistook
which tool was in use. It seemed like the same principle should apply,
and it matches what other implementations do.)
---
 main.c            | 2 +-
 toys/other/yes.c  | 2 +-
 toys/posix/echo.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20210426/c9aa2081/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-More-line-buffering.patch
Type: text/x-patch
Size: 2713 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20210426/c9aa2081/attachment-0002.bin>


More information about the Toybox mailing list