Older hosts may not have the be32toh function defined. Check for this and fall back to checking the endianness and calling bswap_32 directly if needed. This works on both old and new hosts. Signed-off-by: Randy MacLeod <Randy.MacLeod@xxxxxxxxxxxxx> --- configure.ac | 1 + libkmod/libkmod-signature.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 40e54cf..de2ee49 100644 --- a/configure.ac +++ b/configure.ac @@ -45,6 +45,7 @@ PKG_PROG_PKG_CONFIG AC_CHECK_FUNCS_ONCE(__xstat) AC_CHECK_FUNCS_ONCE([__secure_getenv secure_getenv]) AC_CHECK_FUNCS_ONCE([finit_module]) +AC_CHECK_FUNCS_ONCE([be32toh]) # dietlibc doesn't have st.st_mtim struct member AC_CHECK_MEMBERS([struct stat.st_mtim], [], [], [#include <sys/stat.h>]) diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c index 6237ab7..791d092 100644 --- a/libkmod/libkmod-signature.c +++ b/libkmod/libkmod-signature.c @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <endian.h> +#include <byteswap.h> #include <stdint.h> #include <stdlib.h> #include <string.h> @@ -26,6 +26,18 @@ #include "libkmod-internal.h" +/* be32toh is usually a macro definend in <endian.h>, but it might be + * a function in some system so check both, and if neither is defined + * then define be32toh (for RHEL 5). + */ +#if !defined(HAVE_BE32TOH) && !defined(be32toh) +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define be32toh(x) __bswap_32 (x) +#else +#define be32toh(x) (x) +#endif +#endif + /* These types and tables were copied from the 3.7 kernel sources. * As this is just description of the signature format, it should not be * considered derived work (so libkmod can use the LGPL license). -- 1.8.2.1 -- To unsubscribe from this list: send the line "unsubscribe linux-modules" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html