tech-toolchain archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: TOCTOU bug in make(1)
On Sun, Oct 09, 2022 at 11:02:58PM +0200, Roland Illig wrote:
> Am 07.10.2022 um 00:28 schrieb David Holland:
> > On Fri, Oct 07, 2022 at 12:46:06AM +0300, Valery Ushakov wrote:
> > > It also, unnecessarily, IMHO, decided to change the return type to
> > > a more "modern" bool thus further obscuring the fact that the
> > > function was a simple wrapper around unlink(2).
> >
> > Can we revert that? Using bool for success/failure is ambiguous (does
> > true mean it succeeded or failed? both are reasonable) whereas 0/-1 or
> > zero/nonzero is a clearly established and well understood idiom.
>
> Can you show me a function in the NetBSD source tree that has return
> type 'bool' (not 'int') and returns 'true' to indicate failure?
I would be shocked to find any (besides in gnu external code maybe).
The name of a function returning bool should be chosen to transfer the
proper sense of the return value. For predicates the sense could be
chosen arbitrarily, like:
if (failed_to_send_p(status))
error(....)
but for "action functions" this would be absurd, e.g.
if (send_message(target, msg))
error(....)
would be totaly obfuscated.
Side note: this is totaly different for arguments of type bool, where you
typically don't see the name of the formal parameter at the call site,
which is why I like the Qt style of a special enum for each "bool" arg
a lot (especially with newer C++ standards where the compiler flags passing
an enum value of the wrong enum type as an error).
Martin
Home |
Main Index |
Thread Index |
Old Index