[libfko] handle endian detection on PPC (and other) systems
authorMichael Rash <mbr@cipherdyne.org>
Tue, 11 Jun 2013 02:27:57 +0000 (22:27 -0400)
committerMichael Rash <mbr@cipherdyne.org>
Tue, 11 Jun 2013 02:28:00 +0000 (22:28 -0400)
Blair Zajac contributed a patch to handle endian detection on PPC systems
and issue a compile time error if it cannot be determined.  This commit affects
the BYTEORDER macro.

CREDITS
lib/fko_common.h

diff --git a/CREDITS b/CREDITS
index 96eccac..58708a3 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -140,3 +140,9 @@ hlein
     - Suggested the ability to read a passphrase from STDIN and via a new --fd
       command line argument (github #74) to allow things like:
             $ gpg -d passphrasefile.pgp | fwknop -R -n myserver
+
+Blair Zajac
+    - Contributed patches to handle endian issues on PPC systems.
+    - Reported an issue where strndup() is not available on some PPC systems
+      and the fix is to use the local lib/fko_util.c implementation similarly
+      to Windows builds.
index 24bb14c..76dbac7 100644 (file)
     #define BYTEORDER 4321
   #elif defined(_LITTLE_ENDIAN)
     #define BYTEORDER 1234
-  #else
-    #error unable to determine BYTEORDER
   #endif
+#elif defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__)
+  #if defined(__i386__) || defined(__ppc__)
+    #define BYTEORDER 4321
+  #elif defined(__x86_64__) || defined(__ppc64)
+    #define BYTEORDER 87654321
+  #endif
+#elif defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__)
+  #if defined(__i386__) || defined(__ppc__)
+    #define BYTEORDER 1234
+  #elif defined(__x86_64__) || defined(__ppc64)
+    #define BYTEORDER 12345678
+  #endif
+#endif
+
+#ifndef BYTEORDER
+  #error unable to determine BYTEORDER
 #endif
 
 #ifdef WIN32