summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPhilip Guenther <guenther@cvs.openbsd.org>2015-10-17 21:48:43 +0000
committerPhilip Guenther <guenther@cvs.openbsd.org>2015-10-17 21:48:43 +0000
commit8cdc1957246698c671658c78e581fff5aaa4e0d4 (patch)
treeed291c573d55acdb5fb4cb89e13969f18ad3191c /lib
parent4672f1314974ba3581d74bdc4256c558c78c6103 (diff)
Move the last of the __DBINTERFACE_PRIVATE bits from <db.h> to libc's wrapper
and eliminate the now superfluous -D option ok kettenis@ millert@
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/db/Makefile.inc4
-rw-r--r--lib/libc/hidden/db.h50
2 files changed, 50 insertions, 4 deletions
diff --git a/lib/libc/db/Makefile.inc b/lib/libc/db/Makefile.inc
index 069435a842d..a58c43db1de 100644
--- a/lib/libc/db/Makefile.inc
+++ b/lib/libc/db/Makefile.inc
@@ -1,7 +1,5 @@
-# $OpenBSD: Makefile.inc,v 1.5 2015/09/09 16:40:15 guenther Exp $
+# $OpenBSD: Makefile.inc,v 1.6 2015/10/17 21:48:42 guenther Exp $
#
-CFLAGS+=-D__DBINTERFACE_PRIVATE
-
.PATH: ${LIBCSRCDIR}/db/btree
SRCS+= bt_close.c bt_conv.c bt_debug.c bt_delete.c bt_get.c bt_open.c \
diff --git a/lib/libc/hidden/db.h b/lib/libc/hidden/db.h
index a8bc9ca9469..57eb5558010 100644
--- a/lib/libc/hidden/db.h
+++ b/lib/libc/hidden/db.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: db.h,v 1.2 2015/09/10 18:13:46 guenther Exp $ */
+/* $OpenBSD: db.h,v 1.3 2015/10/17 21:48:42 guenther Exp $ */
/*
* Copyright (c) 2015 Philip Guenther <guenther@openbsd.org>
*
@@ -20,6 +20,54 @@
#include_next <db.h>
+/*
+ * Little endian <==> big endian 32-bit swap macros.
+ * M_32_SWAP swap a memory location
+ * P_32_SWAP swap a referenced memory location
+ * P_32_COPY swap from one location to another
+ */
+#define M_32_SWAP(a) { \
+ u_int32_t _tmp = a; \
+ ((char *)&a)[0] = ((char *)&_tmp)[3]; \
+ ((char *)&a)[1] = ((char *)&_tmp)[2]; \
+ ((char *)&a)[2] = ((char *)&_tmp)[1]; \
+ ((char *)&a)[3] = ((char *)&_tmp)[0]; \
+}
+#define P_32_SWAP(a) { \
+ u_int32_t _tmp = *(u_int32_t *)a; \
+ ((char *)a)[0] = ((char *)&_tmp)[3]; \
+ ((char *)a)[1] = ((char *)&_tmp)[2]; \
+ ((char *)a)[2] = ((char *)&_tmp)[1]; \
+ ((char *)a)[3] = ((char *)&_tmp)[0]; \
+}
+#define P_32_COPY(a, b) { \
+ ((char *)&(b))[0] = ((char *)&(a))[3]; \
+ ((char *)&(b))[1] = ((char *)&(a))[2]; \
+ ((char *)&(b))[2] = ((char *)&(a))[1]; \
+ ((char *)&(b))[3] = ((char *)&(a))[0]; \
+}
+
+/*
+ * Little endian <==> big endian 16-bit swap macros.
+ * M_16_SWAP swap a memory location
+ * P_16_SWAP swap a referenced memory location
+ * P_16_COPY swap from one location to another
+ */
+#define M_16_SWAP(a) { \
+ u_int16_t _tmp = a; \
+ ((char *)&a)[0] = ((char *)&_tmp)[1]; \
+ ((char *)&a)[1] = ((char *)&_tmp)[0]; \
+}
+#define P_16_SWAP(a) { \
+ u_int16_t _tmp = *(u_int16_t *)a; \
+ ((char *)a)[0] = ((char *)&_tmp)[1]; \
+ ((char *)a)[1] = ((char *)&_tmp)[0]; \
+}
+#define P_16_COPY(a, b) { \
+ ((char *)&(b))[0] = ((char *)&(a))[1]; \
+ ((char *)&(b))[1] = ((char *)&(a))[0]; \
+}
+
__BEGIN_HIDDEN_DECLS
DB *__bt_open(const char *, int, int, const BTREEINFO *, int);
DB *__hash_open(const char *, int, int, const HASHINFO *, int);