bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How can redirection operator aka ">" open output in append instead o


From: howaboutsynergy
Subject: Re: How can redirection operator aka ">" open output in append instead of ordinary write mode?
Date: Thu, 16 May 2019 21:48:11 +0000

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Thursday, May 16, 2019 10:57 PM, Chet Ramey <chet.ramey@case.edu> wrote:

> On 5/16/19 4:25 PM, howaboutsynergy@protonmail.com wrote:
> 

> > Hi. Would bash devs even consider replacing the current behaviour of ">" 
> > (redirection) to do the equivalent of the following(under the hood) ?
> 

> I doubt it. That's not how it's defined to behave, and there's no good
> reason to do it.

Thanks. On second thought, there's a reason bash devs should not do it:

O_APPEND  may  lead  to  corrupted files on NFS filesystems if more than one 
process appends data to a file at once.  This is because NFS does not support 
appending to a file, so the client  kernel  has  to  simulate  it, which can't 
be done without a race condition.

- from `man 2 open`

> 

> > When:
> > `command > $somewhere`
> > then actually do(under the hood):
> > : > $somewhere
> > command >> $somewhere
> > ie. create&truncate file, then open it in append mode and redirect to it,
> > instead of what it currently does(aka not append).
> 

> Why not just use the version you supply above in the cases where it
> matters?

I'm indeed doing that for /usr/share/automake-1.16/test-driver,
but I was hoping to future proof it for unknown situations.

To answer my own question:
> If not, could the devs(or anyone) please suggest a place in the source code 
> where to look for attempting to implement/change this for myself?

in ./make_cmd.c function `make_redirection`, code:
    case r_output_direction:    /* >foo */
      case r_output_force:    /* >| foo */
      case r_err_and_out:     /* &>filename */
        temp->flags = O_TRUNC | O_WRONLY | O_CREAT;                             
                                     

        break;

Addind O_APPEND there didn't immediately hurt, 


and ./redir.c function `do_redirection_internal`
something there... 


I'll try some things.

> 

> -------------------------------------------------------------------------------
> 

> `The lyf so short, the craft so long to lerne.'' - Chaucer`Ars longa, vita 
> brevis'' - Hippocrates
> Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/

Attachment: publickey - howaboutsynergy@protonmail.com - 0x947B9B34.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]