[Gnucash-changes] r12132 - gnucash/trunk - Don't chown() the
owner,
Christian Stimming
stimming at tuhh.de
Tue Dec 6 11:14:14 EST 2005
FTR, below is the (slightly edited) IRC discussion of this issue.
<cstim> warlord: re errno: If there were an ENOENT, then the chmod()
before would have signalled an error already.
<warlord> Ahh, I see. If the save() failed it then checks.. it only
falls into the chown/chmod if the save fails and the stat() succeeds.
<cstim> "falls into"?
<cstim> If the save fails (the else-branch) then errno is checked.
<cstim> If the save succeeds, then stat() is done
<cstim> if stat() succeeds, then chown/chmod is done.
<warlord> correct. that's what I meant. :)
<cstim> so if the chown() fails, we can't do anything about it anyway.
That's why I commented out any error message.
<cstim> BTW where is VFAT_DOESNT_SUCK defined?
<warlord> cstim: it's not defined anywhere.
<cstim> warlord: I see. http://svn.gnucash.org/trac/changeset/8947
<warlord> Yes.. The macro is never defined anywhere. The point is that
VFAT SUCKS.
<cstim> oh does it? :-)
<warlord> Yes.
<warlord> The problem is there's no way to detect what filesystem is
underlying us.. and chmod() and chown() fail if we're sitting on vfat
(or smb)
<cstim> right
<cstim> but then the qof_backend_set_error in the chmod() should go
away, too
<cstim> because that ERR_BACKEND_PERM will cause a BIG FRIGHTENING ERROR
MESSAGE.
<warlord> Probably.. I think those were added later.
<cstim> yes they were.
<cstim> the ERR_BACKEND_PERM was added by linas in r9012
<cstim> http://svn.gnucash.org/trac/changeset/9012#file1
<warlord> Perhaps we need an ERR_BACKEND_CH_FAILED that causes a
different warning message?
<cstim> that would be fine, yes.
<warlord> but yes, the chown() and chmod() failures shouldn't be PERM
17:09 *** Saved text to #gnucash to C:\Programme\XiRCON\#gnucash.log
Derek Atkins schrieb:
>>>On Mon, Dec 05, 2005 at 03:39:35PM -0500, Christian Stimming wrote:
>>>
>>>>#if VFAT_DOESNT_SUCK /* chown always fails on vfat fs */
>>>>- g_free(tmp_name);
>>>>- return FALSE;
>>>>+ /* g_free(tmp_name);
>>>>+ return FALSE; */
>>>>#endif
>>>
>>>Is this your prediction that VFAT will never not suck? :)
>>
>>No, my point is written just two lines ahead of these ones: A failed
>>chown doesn't mean that the saving itself failed. So don't abort with an
>>error here!
>
> You should check the errno value. If the errno is ENOENT
> then the saving failed. If the errno is EPERM then we shouldn't
> abort with an error..
More information about the gnucash-devel
mailing list