[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8961: stdbuf has no effect on some programs
From: |
Eric Blake |
Subject: |
bug#8961: stdbuf has no effect on some programs |
Date: |
Tue, 05 Jul 2011 15:32:04 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc14 Lightning/1.0b3pre Mnenhy/0.8.3 Thunderbird/3.1.10 |
On 07/05/2011 01:13 PM, Pádraig Brady wrote:
> On 05/07/11 16:41, Eric Blake wrote:
>> On 07/04/2011 03:08 AM, Pádraig Brady wrote:
>>> But I notice that sed no longer supports `setbuf -i0`.
>>> This is because of 3a8e165a which discards the
>>> original stdin and instead fdopens() a new one
>>> to support reading in binary mode on windos.
>>> http://git.sv.gnu.org/gitweb/?p=sed.git;a=commit;h=3a8e165a
>>
>> This seems to point to the fact that using freopen() to force binary
>> mode on stdin is the wrong approach, and that we may be better served by
>> using lower-level idioms that change the binary mode of the underlying
>> file descriptor without also altering stdin with unintended side-effects.
>
> Good point.
>
> On the other hand all uses are protected by O_BINARY?...
> and so only apply on windos. Does stdbuf work there?
> Also od and head are the only commands that
> can consume part of stdin, but they handle this
> internally with setvbuf and read() respectively.
> So this would only be a performance issue,
> discarding the users buf size and reinitialization overhead.
>
> If this was equivalent though, then it would be better:
>
> ret = O_BINARY ? fcntl(fileno (stdin), F_SETFL, O_BINARY): 0;
For cygwin, I believe that this _is_ equivalent to changing just the
mode but nothing else in stdin - fcntl changes the fd mode, then calls
into an internal stdio hook function that walks all open FILE *, and if
any of those FILE * are visiting fd, then also updates that FILE * to
reflect the new operating mode.
But I don't know if it works for all other platforms with non-zero O_BINARY.
--
Eric Blake address@hidden +1-801-349-2682
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- bug#8961: stdbuf has no effect on some programs, Bruno Haible, 2011/07/01
- bug#8961: stdbuf has no effect on some programs, Pádraig Brady, 2011/07/01
- bug#8961: stdbuf has no effect on some programs, Bruno Haible, 2011/07/03
- bug#8961: stdbuf has no effect on some programs, Bruno Haible, 2011/07/03
- bug#8961: stdbuf has no effect on some programs, Pádraig Brady, 2011/07/03
- bug#8961: stdbuf has no effect on some programs, Pádraig Brady, 2011/07/04
- bug#8961: stdbuf has no effect on some programs, Paolo Bonzini, 2011/07/04
- bug#8961: stdbuf has no effect on some programs, Eric Blake, 2011/07/05
- bug#8961: stdbuf has no effect on some programs, Pádraig Brady, 2011/07/05
- bug#8961: stdbuf has no effect on some programs,
Eric Blake <=