On Wed, 2013-08-28 at 17:35 +0200, Lukas Slebodnik wrote:
On (28/08/13 09:59), Simo Sorce wrote:
>On Wed, 2013-08-28 at 15:31 +0200, Lukas Slebodnik wrote:
>> +/* Endianness-compatibility for systems running older versions of
>> glibc */
>> +
>> +#ifndef le32toh
>> +#ifdef HAVE_BYTESWAP_H
>> +# include <byteswap.h>
>> +#endif /* HAVE_BYTESWAP_H */
>> +
>> +/* support RHEL5 lack of definitions */
>> +/* Copied from endian.h on glibc 2.15 */
>> +#ifdef __USE_BSD
>> +/* Conversion interfaces. */
>> +# if __BYTE_ORDER == __LITTLE_ENDIAN
>> +# define le32toh(x) (x)
>> +# define htole32(x) (x)
>> +# else
>> +# define le32toh(x) __bswap_32 (x)
>> +# define htole32(x) __bswap_32 (x)
>> +# endif
>> +#endif /* __USE_BSD */
>> +
>> +#endif /* le32toh */
>> +
>
>If byteswap is not defined does the rest of the define work ?
>
>In the code you replace byteswap is included unconditionally as I assume
>it is the file that contains __BYTE_ORDER__ , __LITTLE_ENDIAN and other
>definitions needed to reimplement le32toh, so the if byteswap.h is not
>available I guess the rest of the ifdef will just fail ?
>
>maybe you should have instead:
>
>#ifndef le32toh
>#ifndef HAVE_BYTESWAP_H
>#error missing le32toh and byteswap.h
>#else
>/* support RHEL5 lack of definitions */
>...
>...
>#endif /* HAVE_BYTESWAP_H */
>#endif /* le32toh */
>
Changed.
I also changed patch with sss_strnlen
from ++*len
to (*len)++
Updated patches are attached
Unfortunately my example code fooled you and now the code is missing
#include <byteswap.h> completely, add it in the #else branch and you
have my ack.
Simo.
--
Simo Sorce * Red Hat, Inc * New York