From 49bfc728fab29bafaba49cf58867906390986852 Mon Sep 17 00:00:00 2001
From: dscho <dscho>
Date: Tue, 23 Apr 2002 08:21:39 +0000
Subject: solaris endian changes

---
 main.c |  5 ++++-
 rfb.h  | 15 ++++++++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/main.c b/main.c
index 3f4580d..a6458f8 100644
--- a/main.c
+++ b/main.c
@@ -34,7 +34,10 @@
 
 MUTEX(logMutex);
 
-char rfbEndianTest = (_BYTE_ORDER == _LITTLE_ENDIAN);
+/* we cannot compare to _LITTLE_ENDIAN, because some systems
+   (as Solaris) assume little endian if _LITTLE_ENDIAN is
+   defined, even if _BYTE_ORDER is not _LITTLE_ENDIAN */
+char rfbEndianTest = (_BYTE_ORDER == 1234);
 
 /*
  * rfbLog prints a time-stamped message to the log file (stderr).
diff --git a/rfb.h b/rfb.h
index e39c2a6..71ea774 100644
--- a/rfb.h
+++ b/rfb.h
@@ -62,9 +62,22 @@ typedef unsigned long KeySym;
 #include <machine/endian.h>
 #define _BYTE_ORDER BYTE_ORDER
 #define _LITTLE_ENDIAN LITTLE_ENDIAN
-#elif sparc
+#elif defined (__SVR4) && defined (__sun) /* Solaris */
+#include <sys/types.h>
+#if defined(__sparc)
+  /* SPARC here (big endian) */
+#ifndef _BIG_ENDIAN
+#define _BIG_ENDIAN 4321
+#endif
+#define _BYTE_ORDER _BIG_ENDIAN
+#elif defined(__i386)
+#ifndef _LITTLE_ENDIAN
 #define _LITTLE_ENDIAN 1234
+#endif
 #define _BYTE_ORDER _LITTLE_ENDIAN
+#else
+#error Solaris 2.5.1 had ppc support did it not? :-)
+#endif
 #undef Bool
 #define Bool char
 #undef SIGNED
-- 
cgit v1.2.3

