psss / rpms / libguestfs

Forked from rpms/libguestfs 5 years ago
Clone
Blob Blame History Raw
From a4e27cdf4d3b831792dd20d796dc98a5bc684290 Mon Sep 17 00:00:00 2001
From: Richard Jones <rjones@redhat.com>
Date: Thu, 29 Oct 2009 17:54:48 +0000
Subject: [PATCH] RHEL 5: Detect endianness functions and supply them.

---
 configure.ac     |    2 +-
 hivex/hivex.c    |   31 ++++++++++++++++++++++++++++++-
 hivex/hivexget.c |    2 ++
 hivex/hivexml.c  |    2 ++
 4 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index a235a06..709b1b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -123,7 +123,7 @@ dnl Check sizeof long.
 AC_CHECK_SIZEOF([long])
 
 dnl Headers.
-AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h])
+AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
 
 dnl Check for rpcgen and XDR library.  rpcgen is optional.
 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
diff --git a/hivex/hivex.c b/hivex/hivex.c
index 16be753..85d6c7b 100644
--- a/hivex/hivex.c
+++ b/hivex/hivex.c
@@ -18,11 +18,12 @@
  * See file LICENSE for the full license.
  */
 
+#include <config.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
 #include <string.h>
-#include <endian.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <errno.h>
@@ -30,6 +31,34 @@
 #include <sys/mman.h>
 #include <sys/stat.h>
 #include <assert.h>
+#ifdef HAVE_ENDIAN_H
+#include <endian.h>
+#endif
+#ifdef HAVE_BYTESWAP_H
+#include <byteswap.h>
+#endif
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#ifndef be32toh
+#define be32toh(x) __bswap_32 (x)
+#endif
+#ifndef be64toh
+#define be64toh(x) __bswap_64 (x)
+#endif
+#ifndef le32toh
+#define le32toh(x) (x)
+#endif
+#else
+#ifndef be32toh
+#define be32toh(x) (x)
+#endif
+#ifndef be64toh
+#define be64toh(x) (x)
+#endif
+#ifndef le32toh
+#define le32toh(x) __bswap_32 (x)
+#endif
+#endif
 
 #include "hivex.h"
 
diff --git a/hivex/hivexget.c b/hivex/hivexget.c
index 9bb6bbb..04c854f 100644
--- a/hivex/hivexget.c
+++ b/hivex/hivexget.c
@@ -16,6 +16,8 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include <config.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/hivex/hivexml.c b/hivex/hivexml.c
index af3de9e..9dd394e 100644
--- a/hivex/hivexml.c
+++ b/hivex/hivexml.c
@@ -16,6 +16,8 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include <config.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-- 
1.6.5.rc2