[Libguestfs] [PATCH 1/3] macosx: Includes/defines for byteswap operations

Margaret Lewicka
Thu, 12 Feb 2015 17:28:46 -0000

---
 src/inspect-apps.c       | 13 ++++++++++++-
 src/inspect-fs-windows.c |  6 ++++++
 src/journal.c            |  5 +++++
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/inspect-apps.c b/src/inspect-apps.c
index 20cf00a..8fbae9c 100644
--- a/src/inspect-apps.c
+++ b/src/inspect-apps.c
@@ -35,11 +35,22 @@
 #include <sys/endian.h>
 #endif

-/* be32toh is usually a macro definend in <endian.h>, but it might be
+/* be32toh is usually a macro defined 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 defined __APPLE__ && defined __MACH__
+/* Define/include necessary items on MacOS X */
+#include <machine/endian.h>
+#define __BIG_ENDIAN    BIG_ENDIAN
+#define __LITTLE_ENDIAN   LITTLE_ENDIAN
+#define __BYTE_ORDER    BYTE_ORDER
+#include <libkern/OSByteOrder.h>
+#define __bswap_32      OSSwapConstInt32
+#endif /* __APPLE__ */
+
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 #define be32toh(x) __bswap_32 (x)
 #else
diff --git a/src/inspect-fs-windows.c b/src/inspect-fs-windows.c
index 682157a..421a5b1 100644
--- a/src/inspect-fs-windows.c
+++ b/src/inspect-fs-windows.c
@@ -36,6 +36,12 @@
 #include <sys/endian.h>
 #endif

+#if defined __APPLE__ && defined __MACH__
+#include <libkern/OSByteOrder.h>
+#define le32toh(x) OSSwapLittleToHostInt32(x)
+#define le64toh(x) OSSwapLittleToHostInt64(x)
+#endif
+
 #include <pcre.h>

 #include "c-ctype.h"
diff --git a/src/journal.c b/src/journal.c
index 1070067..c563b7f 100644
--- a/src/journal.c
+++ b/src/journal.c
@@ -35,6 +35,11 @@
 #include <sys/endian.h>
 #endif

+#if defined __APPLE__ && defined __MACH__
+#include <libkern/OSByteOrder.h>
+#define be64toh(x) OSSwapBigToHostInt64(x)
+#endif
+
 #include "full-read.h"

 #include "guestfs.h"
--
1.9.3