aboutsummaryrefslogtreecommitdiffstats
path: root/testing/lizardfs/0001-common-Add-multi-platform-endian-conversion-function.patch
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2015-07-02 10:04:33 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2015-07-08 12:37:33 +0000
commit814d953133975a9d377cfb745cbc367eb6abafed (patch)
tree84d9325c0320e5c4f19230abbecb90d80e992bc7 /testing/lizardfs/0001-common-Add-multi-platform-endian-conversion-function.patch
parent9edc33e91cc13c75d6d411456604c5b9f1ef7ce2 (diff)
downloadaports-814d953133975a9d377cfb745cbc367eb6abafed.tar.bz2
aports-814d953133975a9d377cfb745cbc367eb6abafed.tar.xz
testing/lizardfs: new aport
a highly reliable, scalable and efficient distributed file system https://github.com/lizardfs/lizardfs/
Diffstat (limited to 'testing/lizardfs/0001-common-Add-multi-platform-endian-conversion-function.patch')
-rw-r--r--testing/lizardfs/0001-common-Add-multi-platform-endian-conversion-function.patch152
1 files changed, 152 insertions, 0 deletions
diff --git a/testing/lizardfs/0001-common-Add-multi-platform-endian-conversion-function.patch b/testing/lizardfs/0001-common-Add-multi-platform-endian-conversion-function.patch
new file mode 100644
index 0000000000..0c805d9b56
--- /dev/null
+++ b/testing/lizardfs/0001-common-Add-multi-platform-endian-conversion-function.patch
@@ -0,0 +1,152 @@
+From 9b03a1b4481ed48f8950c2cffd36112f67d6e183 Mon Sep 17 00:00:00 2001
+From: Frank Denis <github@pureftpd.org>
+Date: Thu, 19 Mar 2015 11:52:40 +0100
+Subject: [PATCH] common: Add multi-platform endian conversion functions
+
+This commit adds portable_endian.h file with set of endian conversion
+functions.
+
+Change-Id: I145cdc7c79eb9a16bd5199247af1976e18c59814
+---
+ src/common/portable_endian.h | 116 +++++++++++++++++++++++++++++++++++++++++++
+ src/common/posix_acl_xattr.h | 1 +
+ 2 files changed, 117 insertions(+)
+ create mode 100644 src/common/portable_endian.h
+
+diff --git a/src/common/portable_endian.h b/src/common/portable_endian.h
+new file mode 100644
+index 0000000..e1d1d59
+--- /dev/null
++++ b/src/common/portable_endian.h
+@@ -0,0 +1,116 @@
++// "License": Public Domain
++// I, Mathias Panzenböck, place this file hereby into the public domain. Use it at your own risk for whatever you like.
++// In case there are jurisdictions that don't support putting things in the public domain you can also consider it to
++// be "dual licensed" under the BSD, MIT and Apache licenses, if you want to. This code is trivial anyway. Consider it
++// an example on how to get the endian conversion functions on different platforms.
++
++#pragma once
++
++#include "common/platform.h"
++
++#if (defined(_WIN16) || defined(_WIN32) || defined(_WIN64)) && !defined(__WINDOWS__)
++
++#define __WINDOWS__
++
++#endif
++
++#if defined(__linux__) || defined(__CYGWIN__)
++
++#include <endian.h>
++
++#elif defined(__APPLE__)
++
++#include <libkern/OSByteOrder.h>
++
++#define htobe16(x) OSSwapHostToBigInt16(x)
++#define htole16(x) OSSwapHostToLittleInt16(x)
++#define be16toh(x) OSSwapBigToHostInt16(x)
++#define le16toh(x) OSSwapLittleToHostInt16(x)
++
++#define htobe32(x) OSSwapHostToBigInt32(x)
++#define htole32(x) OSSwapHostToLittleInt32(x)
++#define be32toh(x) OSSwapBigToHostInt32(x)
++#define le32toh(x) OSSwapLittleToHostInt32(x)
++
++#define htobe64(x) OSSwapHostToBigInt64(x)
++#define htole64(x) OSSwapHostToLittleInt64(x)
++#define be64toh(x) OSSwapBigToHostInt64(x)
++#define le64toh(x) OSSwapLittleToHostInt64(x)
++
++#define __BYTE_ORDER BYTE_ORDER
++#define __BIG_ENDIAN BIG_ENDIAN
++#define __LITTLE_ENDIAN LITTLE_ENDIAN
++#define __PDP_ENDIAN PDP_ENDIAN
++
++#elif defined(__OpenBSD__)
++
++#include <sys/endian.h>
++
++#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
++
++#include <sys/endian.h>
++
++#define be16toh(x) betoh16(x)
++#define le16toh(x) letoh16(x)
++
++#define be32toh(x) betoh32(x)
++#define le32toh(x) letoh32(x)
++
++#define be64toh(x) betoh64(x)
++#define le64toh(x) letoh64(x)
++
++#elif defined(__WINDOWS__)
++
++#include <winsock2.h>
++#include <sys/param.h>
++
++#if BYTE_ORDER == LITTLE_ENDIAN
++
++#define htobe16(x) htons(x)
++#define htole16(x) (x)
++#define be16toh(x) ntohs(x)
++#define le16toh(x) (x)
++
++#define htobe32(x) htonl(x)
++#define htole32(x) (x)
++#define be32toh(x) ntohl(x)
++#define le32toh(x) (x)
++
++#define htobe64(x) htonll(x)
++#define htole64(x) (x)
++#define be64toh(x) ntohll(x)
++#define le64toh(x) (x)
++
++#elif BYTE_ORDER == BIG_ENDIAN
++
++#define htobe16(x) (x)
++#define htole16(x) __builtin_bswap16(x)
++#define be16toh(x) (x)
++#define le16toh(x) __builtin_bswap16(x)
++
++#define htobe32(x) (x)
++#define htole32(x) __builtin_bswap32(x)
++#define be32toh(x) (x)
++#define le32toh(x) __builtin_bswap32(x)
++
++#define htobe64(x) (x)
++#define htole64(x) __builtin_bswap64(x)
++#define be64toh(x) (x)
++#define le64toh(x) __builtin_bswap64(x)
++
++#else
++
++#error byte order not supported
++
++#endif
++
++#define __BYTE_ORDER BYTE_ORDER
++#define __BIG_ENDIAN BIG_ENDIAN
++#define __LITTLE_ENDIAN LITTLE_ENDIAN
++#define __PDP_ENDIAN PDP_ENDIAN
++
++#else
++
++#error platform not supported
++
++#endif
+diff --git a/src/common/posix_acl_xattr.h b/src/common/posix_acl_xattr.h
+index 29c3543..c293dc9 100644
+--- a/src/common/posix_acl_xattr.h
++++ b/src/common/posix_acl_xattr.h
+@@ -8,6 +8,7 @@
+
+ #include "common/exception.h"
+ #include "common/massert.h"
++#include "common/portable_endian.h"
+
+ // These #defines and structs were extracted from kernel sources
+
+--
+2.4.5
+