Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Any way to allow clobbering empty files when noclobber is set?



On Fri, Jun 5, 2020 at 4:07 AM Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx> wrote:
>
> Roman Perepelitsa wrote on Thu, 04 Jun 2020 07:41 +0200:
>
> > Or how to implement clobber-if-empty without ever clobbering non-empty
> > files?
>
> By using a non-clobbering open(), then calling fstat() on the open fd.
> If it's zero length, just carry on.  If it's not zero length, close()
> it and report an error.

Consider the following program:

    write() print -rn -- $1
    rm -f foo
    write hello >foo &
    write bye >foo &
    wait

With regular no_clobber it has the following guarantees:

1. `write` is executed exactly once
2. once `wait` completes, `foo` contains either "hello" or "bye"

Is there a way to provide these guarantees with clobber_empty? (2) is
especially important. Seeing "byelo" or "hellobye" in `foo` would be
quite confusing. It would look like clobbering.

Roman.



Messages sorted by: Reverse Date, Date, Thread, Author