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 Sat, 2020-06-06 at 08:24 -0700, Bart Schaefer wrote:
> Just to clarify:  O_CREAT|O_EXCL is actually the NO_clobber-ing open.
> The clobbering open is just to open it for writing if allowed to. and
> start scribbling over whatever is there.

You're right; in the hypothesised case, the file already exists and
this pair of options is documented to fail in that case.

I think the O_TRUNC is therefore the crucial one in our normal clobbering
open, right?

    /* If clobbering, just open. */
    if (isset(CLOBBER) || IS_CLOBBER_REDIR(f->type))
	return open(unmeta(f->name),
		O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY, 0666);

We'll truncate at that point, then start writing.  That's the best
we can do.  If anyone else is also writing to at *at that point*
--- out of luck, only file locking will help.

> Consequently we should be looking at this as an entirely interactive
> user DWIM feature, and choosing how to implement (or not to) based on
> that.

Yes, I certainly agree with that.

pws





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