Add bswap64()
authorNicolas Williams <nico@twosigma.com>
Thu, 21 May 2015 19:05:31 +0000 (14:05 -0500)
committerNicolas Williams <nico@twosigma.com>
Wed, 17 Feb 2016 02:49:33 +0000 (20:49 -0600)
cf/roken-frag.m4
lib/roken/bswap.c
lib/roken/roken.h.in
lib/roken/version-script.map

index 452c4fd071096b68d6cdb8541108bab4b70b0889..f22b43a5dd1c0922c48f01a8a765da8ed49de770 100644 (file)
@@ -272,6 +272,14 @@ AC_FIND_FUNC_NO_LIBS(bswap32,,
 #include <sys/bswap.h>
 #endif],0)
 
+AC_FIND_FUNC_NO_LIBS(bswap64,,
+[#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_BSWAP_H
+#include <sys/bswap.h>
+#endif],0)
+
 AC_FIND_FUNC_NO_LIBS(pidfile,util,
 [#ifdef HAVE_UTIL_H
 #include <util.h>
index 7f8c1c22b1b7d34a09b9782fdec1725769363f3a..b0c4248da11ee28748bf55696f1dbbe49c0798f1 100644 (file)
 #include <config.h>
 #include "roken.h"
 
+#ifndef HAVE_BSWAP64
+
+ROKEN_LIB_FUNCTION uint64_t ROKEN_LIB_CALL
+bswap64 (uint64_t val)
+{
+    return
+        (val & 0xffULL) << 56 |
+       (val & 0xff00ULL) << 40 |
+       (val & 0xff0000ULL) << 24 |
+       (val & 0xff000000ULL) << 8 |
+       (val & 0xff00000000ULL) >> 8 |
+       (val & 0xff0000000000ULL) >> 24 |
+       (val & 0xff000000000000ULL) >> 40 |
+       (val & 0xff00000000000000ULL) >> 56 ;
+}
+#endif
+
 #ifndef HAVE_BSWAP32
 
 ROKEN_LIB_FUNCTION unsigned int ROKEN_LIB_CALL
index 910c79a467feebfeb17387a9f66e02422fdb1976..e6b89277b6978000cbee269bf64acf560fff38c7 100644 (file)
@@ -765,6 +765,11 @@ ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL pidfile (const char*);
 #endif
 #endif
 
+#ifndef HAVE_BSWAP64
+#define bswap64 rk_bswap64
+ROKEN_LIB_FUNCTION uint64_t ROKEN_LIB_CALL bswap64(uint64_t);
+#endif
+
 #ifndef HAVE_BSWAP32
 #define bswap32 rk_bswap32
 ROKEN_LIB_FUNCTION unsigned int ROKEN_LIB_CALL bswap32(unsigned int);
index 31c942cdc9c613909323002c6bb3204e53aea967..ed2e16c4f5a8195accd145d020a2d831833cf888 100644 (file)
@@ -38,6 +38,7 @@ HEIMDAL_ROKEN_1.0 {
                rk_base64_encode;
                rk_bswap16;
                rk_bswap32;
+               rk_bswap64;
                rk_cgetent;
                rk_cgetstr;
                rk_cloexec;