tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: type behavior of sys/endian.h



On Sun, Jul 12, 2009 at 04:54:11PM +0000, David Holland wrote:
> So it seems to me that the BE definition of ntohl ought to be
> 
>    #define    ntohl(x)        ((uint32_t)(x))
> 
> and similarly for all the other various nops in sys/endian.h.

No, because that would hide broken argument passing.

> Or maybe they should be made inline functions instead so they don't
> fail silently if passed pointers.

That would be better but I think we should use inline function *and*
defines. There might be some broken programs out there which use
"#ifdef ntohl" which will be true under NetBSD, Solaris and Linux at
the moment.

So what about this?

static __inline uint32_t
__ntohl_inline_dummy(uint32_t x)
{
        return x;
}
#define ntohl(x)        __ntohl_inline_dummy(x)

        Kind regards

-- 
Matthias Scheler                                  http://zhadum.org.uk/


Home | Main Index | Thread Index | Old Index