[SSSD] [PATCHES] Improve portability of sssd

Simo Sorce simo at redhat.com
Wed Aug 28 17:11:07 UTC 2013


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




More information about the sssd-devel mailing list