Add an option "-J" / "--pipe-buffer-size" to set the size of the output pipe buffer when the output is a pipe, and when that option is not specified, automatically increase the output pipe buffer size to match that of the input, when the first input is also a pipe (#188).

This commit is contained in:
Andrew Wood
2026-05-02 16:42:35 +01:00
parent d421024fb8
commit 17cbab3045
10 changed files with 84 additions and 9 deletions
+13 -3
View File
@@ -300,6 +300,15 @@ are explicitly switched on will be shown.
option results in a small loss of transfer efficiency. It has no
effect on systems where **splice**(2) is unavailable.
**-J BYTES, \--pipe-buffer-size BYTES**
: Attempt to set the size of the output pipe buffer to *BYTES* bytes.
This will only have an effect if the output is a pipe, and will
silently do nothing if the requested size cannot be achieved. If
this option is not specified, and both the output and the first
input are pipes, then the output pipe buffer size will automatically
be increased to match the input pipe buffer, if it was smaller.
**-E, \--skip-errors**
: Ignore read errors by attempting to skip past the offending
@@ -814,9 +823,10 @@ small input files, and "**%nL**" may be a few lines out due to buffering
within the pipeline itself.
Numbers passed to "**\--size**", "**\--rate-limit**",
"**\--buffer-size**", and "**\--error-skip-block**" may all be expressed
as decimals if followed by a suffix, so for example "*\--size 1.5G*" is
equivalent to "*\--size 1536M*".
"**\--buffer-size**", "**\--pipe-buffer-size**", and
"**\--error-skip-block**" may all be expressed as decimals if followed
by a suffix, so for example "*\--size 1.5G*" is equivalent to
"*\--size 1536M*".
Numbers passed to "**\--interval**" and "**\--delay-start**" may be
integers or decimals, but may not have a suffix.