Re: [Patch v1 1/3] test-lib-functions.sh: add generate_zero_bytes function
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Feb 10, 2019, 02:05 UTC
- Message-ID
- <CAPig+cRARdkKN-wR4EzVSzxuK51VOPf-kFFG57kkEsnFBfe4TA@mail.gmail.com>
- In-Reply-To
- <20190209185930.5256-2-randall.s.becker@rogers.com>
On Sat, Feb 9, 2019 at 1:59 PM <randall.s.becker@rogers.com> wrote:
Show 10 quoted lines
> t5318 and t5562 used /dev/zero, which is not portable. This function
> provides both a fixed block of NUL bytes and an infinite stream of NULs.
>
> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> ---
> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> @@ -116,6 +116,19 @@ remove_cr () {
> +# Generate an output of $1 bytes of all zeroes (NULs, not ASCII zeroes).
> +# If $1 is 'infinity', output forever or until the receiving pipe stops reading,
> +# whichever comes first.This is a somewhat unusual API. A (perhaps) more intuitive behavior would be for it to emit an infinite stream of NULs when given no argument, and a limited number of NULs when given an argument. Redefining the behavior like that also fixes the "problem" with the current implementation erroring-out if no argument is provided.
> +generate_zero_bytes () {
> + perl -e 'if ($ARGV[0] == "infinity") {s/perl/"$PERL_PATH"/
> + while (-1) {
> + print "\0"
> + }Or, more compactly:
print "\0" while 1;
> + } else {
> + print "\0" x $ARGV[0]
> + }' "$@"
> +}