Re: [PATCH] commit: ensure correct permissions of the commit message
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 30, 2015, 14:50 UTC
- Message-ID
- <alpine.DEB.2.20.1512301535550.14434@virtualbox>
- In-Reply-To
- <xmqqio3rhg2f.fsf@gitster.mtv.corp.google.com>
Hi,
On Mon, 21 Dec 2015, Junio C Hamano wrote:
Show 28 quoted lines
> Jeff King <peff@peff.net> writes:
>
> > On Sun, Dec 20, 2015 at 05:31:48PM -0800, Junio C Hamano wrote:
> >
> >> we could do something like this, perhaps?
> >>
> >> FILE *fopen_forcibly(const char *path, const char *mode)
> >> {
> >> FILE *ret = fopen(path, mode);
> >>
> >> if (!ret && errno == EPERM) {
> >> if (!unlink(path))
> >> ret = fopen(path, mode);
> >> else
> >> errno = EPERM;
> >> }
> >> return ret;
> >> }
> >
> > Yeah, I think that is a much nicer solution for this case. It should
> > work even in a shared repo, since we set the permissions for the
> > surrounding $GIT_DIR appropriately[1].
> >
> > I guess it would not apply to any files that do not want to truncate the
> > existing contents. Probably it should drop the "mode" parameter at all,
> > since anything but "w" would be crazy?
>
> Absolutely. Thanks for spotting.So maybe
fcreate_or_truncate(const char *path)
{
FILE *ret = fopen(path, "w"); if (!ret && errno == EPERM) {
if (!unlink(path))
ret = fopen(path, "w");
else
errno = EPERM;
}
return ret;
}?
Ciao, Dscho