summaryrefslogtreecommitdiff
path: root/src/headers
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2014-09-18 18:55:44 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2014-09-18 18:55:44 +0000
commit3534b428629be185e096be99e3bd5fdfe32d5544 (patch)
tree210ef3198ed66bc7f7b7bf6a85e4579f455e5a36 /src/headers
downloadskalibs-3534b428629be185e096be99e3bd5fdfe32d5544.tar.xz
initial commit with rc for skalibs-2.0.0.0
Diffstat (limited to 'src/headers')
-rw-r--r--src/headers/error-addrinuse3
-rw-r--r--src/headers/error-already1
-rw-r--r--src/headers/error-footer2
-rw-r--r--src/headers/error-header12
-rw-r--r--src/headers/error-proto3
-rw-r--r--src/headers/gidstuff-167
-rw-r--r--src/headers/gidstuff-327
-rw-r--r--src/headers/gidstuff-647
-rw-r--r--src/headers/gidstuff-footer2
-rw-r--r--src/headers/gidstuff-header5
-rw-r--r--src/headers/ip46-footer10
-rw-r--r--src/headers/ip46-header34
-rw-r--r--src/headers/ip46-with24
-rw-r--r--src/headers/ip46-without28
-rw-r--r--src/headers/setgroups-footer2
-rw-r--r--src/headers/setgroups-header5
-rw-r--r--src/headers/setgroups-stub2
-rw-r--r--src/headers/uint-1634
-rw-r--r--src/headers/uint-3234
-rw-r--r--src/headers/uint-6434
-rw-r--r--src/headers/uint-footer10
-rw-r--r--src/headers/uint-header5
-rw-r--r--src/headers/uint16-bendian3
-rw-r--r--src/headers/uint16-footer40
-rw-r--r--src/headers/uint16-header9
-rw-r--r--src/headers/uint16-lendian3
-rw-r--r--src/headers/uint32-bendian3
-rw-r--r--src/headers/uint32-footer39
-rw-r--r--src/headers/uint32-header9
-rw-r--r--src/headers/uint32-inttypesh3
-rw-r--r--src/headers/uint32-lendian3
-rw-r--r--src/headers/uint32-noulong322
-rw-r--r--src/headers/uint32-stdinth3
-rw-r--r--src/headers/uint32-ulong322
-rw-r--r--src/headers/uint64-bendian3
-rw-r--r--src/headers/uint64-footer39
-rw-r--r--src/headers/uint64-header5
-rw-r--r--src/headers/uint64-lendian3
-rw-r--r--src/headers/uint64-noulong642
-rw-r--r--src/headers/uint64-stdinth3
-rw-r--r--src/headers/uint64-ulong641
-rw-r--r--src/headers/ulong-3232
-rw-r--r--src/headers/ulong-6432
-rw-r--r--src/headers/ulong-footer10
-rw-r--r--src/headers/ulong-header5
-rw-r--r--src/headers/ushort-1634
-rw-r--r--src/headers/ushort-3234
-rw-r--r--src/headers/ushort-footer10
-rw-r--r--src/headers/ushort-header5
49 files changed, 608 insertions, 0 deletions
diff --git a/src/headers/error-addrinuse b/src/headers/error-addrinuse
new file mode 100644
index 0000000..6f1e4fe
--- /dev/null
+++ b/src/headers/error-addrinuse
@@ -0,0 +1,3 @@
+
+/* BSD sucks */
+#define error_isalready(e) (((e) == EALREADY) || ((e) == EINPROGRESS) || ((e) == EADDRINUSE))
diff --git a/src/headers/error-already b/src/headers/error-already
new file mode 100644
index 0000000..ac6b8a7
--- /dev/null
+++ b/src/headers/error-already
@@ -0,0 +1 @@
+#define error_isalready(e) (((e) == EALREADY) || ((e) == EINPROGRESS))
diff --git a/src/headers/error-footer b/src/headers/error-footer
new file mode 100644
index 0000000..ddd5dae
--- /dev/null
+++ b/src/headers/error-footer
@@ -0,0 +1,2 @@
+
+#endif
diff --git a/src/headers/error-header b/src/headers/error-header
new file mode 100644
index 0000000..b891b6b
--- /dev/null
+++ b/src/headers/error-header
@@ -0,0 +1,12 @@
+/* ISC license. */
+
+#ifndef ERROR_H
+#define ERROR_H
+
+#include <errno.h>
+#include <skalibs/gccattributes.h>
+
+extern char const *error_str (int) gccattr_const ;
+extern int error_temp (int) gccattr_const ;
+
+#define error_isagain(e) (((e) == EAGAIN) || ((e) == EWOULDBLOCK))
diff --git a/src/headers/error-proto b/src/headers/error-proto
new file mode 100644
index 0000000..fd0c01d
--- /dev/null
+++ b/src/headers/error-proto
@@ -0,0 +1,3 @@
+
+/* Did I ever mention that BSD sucks ? */
+#define EPROTO EPROTOTYPE
diff --git a/src/headers/gidstuff-16 b/src/headers/gidstuff-16
new file mode 100644
index 0000000..491de89
--- /dev/null
+++ b/src/headers/gidstuff-16
@@ -0,0 +1,7 @@
+#include <skalibs/uint16.h>
+
+#define GID_FMT UINT16_FMT
+#define gid_fmt(s, u) uint16_fmt(s, u)
+#define gid_scan(s, u) uint16_scan(s, u)
+#define gid_fmtlist(s, tab, n) uint16_fmtlist(s, tab, n)
+#define gid_scanlist(tab, max, s, num) uint16_scanlist(tab, max, s, num)
diff --git a/src/headers/gidstuff-32 b/src/headers/gidstuff-32
new file mode 100644
index 0000000..a8ed0e8
--- /dev/null
+++ b/src/headers/gidstuff-32
@@ -0,0 +1,7 @@
+#include <skalibs/uint32.h>
+
+#define GID_FMT UINT32_FMT
+#define gid_fmt(s, u) uint32_fmt(s, u)
+#define gid_scan(s, u) uint32_scan(s, u)
+#define gid_fmtlist(s, tab, n) uint32_fmtlist(s, tab, n)
+#define gid_scanlist(tab, max, s, num) uint32_scanlist(tab, max, s, num)
diff --git a/src/headers/gidstuff-64 b/src/headers/gidstuff-64
new file mode 100644
index 0000000..3d441e6
--- /dev/null
+++ b/src/headers/gidstuff-64
@@ -0,0 +1,7 @@
+#include <skalibs/uint64.h>
+
+#define GID_FMT UINT64_FMT
+#define gid_fmt(s, u) uint64_fmt(s, u)
+#define gid_scan(s, u) uint64_scan(s, u)
+#define gid_fmtlist(s, tab, n) uint64_fmtlist(s, tab, n)
+#define gid_scanlist(tab, max, s, num) uint64_scanlist(tab, max, s, num)
diff --git a/src/headers/gidstuff-footer b/src/headers/gidstuff-footer
new file mode 100644
index 0000000..ddd5dae
--- /dev/null
+++ b/src/headers/gidstuff-footer
@@ -0,0 +1,2 @@
+
+#endif
diff --git a/src/headers/gidstuff-header b/src/headers/gidstuff-header
new file mode 100644
index 0000000..73bf86b
--- /dev/null
+++ b/src/headers/gidstuff-header
@@ -0,0 +1,5 @@
+/* ISC license. */
+
+#ifndef GIDSTUFF_H
+#define GIDSTUFF_H
+
diff --git a/src/headers/ip46-footer b/src/headers/ip46-footer
new file mode 100644
index 0000000..4340daf
--- /dev/null
+++ b/src/headers/ip46-footer
@@ -0,0 +1,10 @@
+
+#define ip46_from_ip(i, s, h) ((h) ? ip46_from_ip6(i, s) : ip46_from_ip4(i, s))
+
+#define socket_recvnb46_g(fd, buf, len, i, port, deadline) socket_recvnb46(fd, buf, len, i, port, (deadline), &STAMP)
+#define socket_sendnb46_g(fd, buf, len, i, port, deadline) socket_sendnb46(fd, buf, len, i, port, (deadline), &STAMP)
+
+extern int socket_deadlineconnstamp46 (int, ip46_t const *, uint16, tain_t const *, tain_t *) ;
+#define socket_deadlineconnstamp46_g(fd, ip, port, deadline) socket_deadlineconnstamp46(fd, ip, port, (deadline), &STAMP)
+
+#endif
diff --git a/src/headers/ip46-header b/src/headers/ip46-header
new file mode 100644
index 0000000..4f0cf8c
--- /dev/null
+++ b/src/headers/ip46-header
@@ -0,0 +1,34 @@
+/* ISC license. */
+
+#ifndef IP46_H
+#define IP46_H
+
+#include <errno.h>
+#include <skalibs/uint16.h>
+#include <skalibs/bytestr.h>
+#include <skalibs/fmtscan.h>
+#include <skalibs/tai.h>
+#include <skalibs/socket.h>
+
+#define IP46_FMT IP6_FMT
+#define IP4_ANY "\0\0\0"
+#define IP6_ANY "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+#define IP4_LOCAL "\177\0\0\1"
+#define IP6_LOCAL "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1"
+
+typedef struct ip46full_s ip46full_t, *ip46full_t_ref ;
+
+struct ip46full_s
+{
+ char ip[16] ;
+ unsigned int is6: 1 ;
+} ;
+#define IP46FULL_ZERO { .ip = IP6_ANY, .is6 = 0 }
+
+#define ip46full_is6(i) ((i)->is6)
+#define ip46full_fmt(s, i) ((i)->is6 ? ip6_fmt(s, (i)->ip) : ip4_fmt(s, (i)->ip))
+extern unsigned int ip46full_scan (char const *, ip46full_t_ref) ;
+extern unsigned int ip46full_scanlist (ip46full_t_ref, unsigned int, char const *, unsigned int *) ;
+#define ip46full_from_ip4(i, ip4) (byte_copy((i)->ip, 4, ip4), byte_zero((i)->ip + 4, 12), (i)->is6 = 0)
+#define ip46full_from_ip6(i, ip6) (byte_copy((i)->ip, 16, ip6), (i)->is6 = 1)
+
diff --git a/src/headers/ip46-with b/src/headers/ip46-with
new file mode 100644
index 0000000..0cd3d19
--- /dev/null
+++ b/src/headers/ip46-with
@@ -0,0 +1,24 @@
+typedef ip46full_t ip46_t, *ip46_t_ref ;
+#define IP46_ZERO IP46FULL_ZERO
+
+#define SKALIBS_IPV6_ENABLED
+#define SKALIBS_IP_SIZE 16
+#define ip46_is6(i) ip46full_is6(i)
+#define ip46_fmt(s, i) ip46full_fmt(s, i)
+#define ip46_scan(s, i) ip46full_scan(s, i)
+#define ip46_scanlist(out, max, s, num) ip46full_scanlist(out, max, s, num)
+#define ip46_from_ip4(i, ip4) (ip46full_from_ip4(i, ip4), 1)
+#define ip46_from_ip6(i, ip6) (ip46full_from_ip6(i, ip6), 1)
+
+#define socket_connect46(s, i, port) ((i)->is6 ? socket_connect6(s, (i)->ip, port) : socket_connect4(s, (i)->ip, port))
+#define socket_bind46(s, i, port) ((i)->is6 ? socket_bind6(s, (i)->ip, port) : socket_bind4(s, (i)->ip, port))
+#define socket_bind46_reuse(s, i, port) ((i)->is6 ? socket_bind6_reuse(s, (i)->ip, port) : socket_bind4_reuse(s, (i)->ip, port))
+#define socket_tcp46(h) ((h) ? socket_tcp6() : socket_tcp4())
+#define socket_udp46(h) ((h) ? socket_udp6() : socket_udp4())
+#define socket_recv46(fd, s, len, i, port) ((i)->is6 ? socket_recv6(fd, s, len, (i)->ip, port) : socket_recv4(fd, s, len, (i)->ip, port))
+#define socket_send46(fd, s, len, i, port) ((i)->is6 ? socket_send6(fd, s, len, (i)->ip, port) : socket_send4(fd, s, len, (i)->ip, port))
+extern int socket_local46 (int, ip46_t_ref, uint16 *) ;
+extern int socket_remote46 (int, ip46_t_ref, uint16 *) ;
+
+#define socket_recvnb46(fd, buf, len, i, port, deadline, stamp) ((i)->is6 ? socket_recvnb6(fd, buf, len, (i)->ip, port, deadline, stamp) : socket_recvnb4(fd, buf, len, (i)->ip, port, deadline, stamp))
+#define socket_sendnb46(fd, buf, len, i, port, deadline, stamp) ((i)->is6 ? socket_sendnb6(fd, buf, len, (i)->ip, port, deadline, stamp) : socket_sendnb4(fd, buf, len, (i)->ip, port, deadline, stamp))
diff --git a/src/headers/ip46-without b/src/headers/ip46-without
new file mode 100644
index 0000000..7887482
--- /dev/null
+++ b/src/headers/ip46-without
@@ -0,0 +1,28 @@
+typedef struct ip46_s ip46_t, *ip46_t_ref ;
+struct ip46_s
+{
+ char ip[4] ;
+} ;
+#define IP46_ZERO { .ip = "\0\0\0" }
+
+#undef SKALIBS_IPV6_ENABLED
+#define SKALIBS_IP_SIZE 4
+#define ip46_is6(ip) 0
+#define ip46_fmt(s, i) ip4_fmt(s, (i)->ip)
+#define ip46_scan(s, i) ip4_scan(s, (i)->ip)
+#define ip46_scanlist(out, max, s, num) ip4_scanlist((out)->ip, max, s, num)
+#define ip46_from_ip4(i, ip4) (byte_copy((i)->ip, 4, ip4), 1)
+#define ip46_from_ip6(i, ip6) (errno = ENOSYS, 0)
+
+#define socket_connect46(s, i, port) socket_connect4(s, (i)->ip, port)
+#define socket_bind46(s, i, port) socket_bind4(s, (i)->ip, port)
+#define socket_bind46_reuse(s, i, port) socket_bind4_reuse(s, (i)->ip, port)
+#define socket_tcp46(h) socket_tcp4()
+#define socket_udp46(h) socket_udp4()
+#define socket_recv46(fd, s, len, i, port) socket_recv4(fd, s, len, (i)->ip, port)
+#define socket_send46(fd, s, len, i, port) socket_send4(fd, s, len, (i)->ip, port)
+#define socket_local46(fd, i, port) socket_local4(fd, (i)->ip, port)
+#define socket_remote46(fd, i, port) socket_remote4(fd, (i)->ip, port)
+
+#define socket_recvnb46(fd, buf, len, i, port, deadline, stamp) socket_recvnb4(fd, buf, len, (i)->ip, port, deadline, stamp)
+#define socket_sendnb46(fd, buf, len, i, port, deadline, stamp) socket_sendnb4(fd, buf, len, (i)->ip, port, deadline, stamp)
diff --git a/src/headers/setgroups-footer b/src/headers/setgroups-footer
new file mode 100644
index 0000000..ddd5dae
--- /dev/null
+++ b/src/headers/setgroups-footer
@@ -0,0 +1,2 @@
+
+#endif
diff --git a/src/headers/setgroups-header b/src/headers/setgroups-header
new file mode 100644
index 0000000..0b8697a
--- /dev/null
+++ b/src/headers/setgroups-header
@@ -0,0 +1,5 @@
+/* ISC license. */
+
+#ifndef SETGROUPS_H
+#define SETGROUPS_H
+
diff --git a/src/headers/setgroups-stub b/src/headers/setgroups-stub
new file mode 100644
index 0000000..3c54861
--- /dev/null
+++ b/src/headers/setgroups-stub
@@ -0,0 +1,2 @@
+#include <errno.h>
+#define setgroups(n, s) (errno = ENOSYS, -1)
diff --git a/src/headers/uint-16 b/src/headers/uint-16
new file mode 100644
index 0000000..85434db
--- /dev/null
+++ b/src/headers/uint-16
@@ -0,0 +1,34 @@
+#include <skalibs/uint16.h>
+
+#define UINT_PACK 2
+#define uint_pack uint16_pack
+#define uint_pack_big uint16_pack_big
+#define uint_unpack(s, u) uint16_unpack(s, (uint16 *)(char *)(u))
+#define uint_unpack_big(s, u) uint16_unpack_big(s, (uint16 *)(char *)(u))
+
+#define uint_reverse uint16_reverse
+#define uint_big_endian uint16_big_endian
+#define uint_little_endian uint16_little_endian
+
+#define UINT_FMT UINT16_FMT
+#define UINT_OFMT UINT16_OFMT
+#define UINT_XFMT UINT16_XFMT
+#define UINT_BFMT UINT16_BFMT
+
+#define uint_fmt_base uint16_fmt_base
+#define uint0_fmt_base uint160_fmt_base
+#define uint_fmt uint16_fmt
+#define uint0_fmt uint160_fmt
+#define uint_ofmt uint16_ofmt
+#define uint0_ofmt uint160_ofmt
+#define uint_xfmt uint16_xfmt
+#define uint0_xfmt uint160_xfmt
+#define uint_bfmt uint16_bfmt
+#define uint0_bfmt uint160_bfmt
+
+#define uint_fmtlist(s, tab, n) uint16_fmtlist(s, tab, n)
+
+#define uint_scan_base(s, u, b) uint16_scan_base(s, (uint16 *)(char *)(u), b)
+#define uint0_scan_base(s, u, b) uint160_scan_base(s, (uint16 *)(char *)(u), b)
+
+#define uint_scanlist(tab, max, s, num) uint16_scanlist(tab, max, s, num)
diff --git a/src/headers/uint-32 b/src/headers/uint-32
new file mode 100644
index 0000000..32c6600
--- /dev/null
+++ b/src/headers/uint-32
@@ -0,0 +1,34 @@
+#include <skalibs/uint32.h>
+
+#define UINT_PACK 4
+#define uint_pack uint32_pack
+#define uint_pack_big uint32_pack_big
+#define uint_unpack(s, u) uint32_unpack(s, (uint32 *)(char *)(u))
+#define uint_unpack_big(s, u) uint32_unpack_big(s, (uint32 *)(char *)(u))
+
+#define uint_reverse uint32_reverse
+#define uint_big_endian uint32_big_endian
+#define uint_little_endian uint32_little_endian
+
+#define UINT_FMT UINT32_FMT
+#define UINT_OFMT UINT32_OFMT
+#define UINT_XFMT UINT32_XFMT
+#define UINT_BFMT UINT32_BFMT
+
+#define uint_fmt_base uint32_fmt_base
+#define uint0_fmt_base uint320_fmt_base
+#define uint_fmt uint32_fmt
+#define uint0_fmt uint320_fmt
+#define uint_ofmt uint32_ofmt
+#define uint0_ofmt uint320_ofmt
+#define uint_xfmt uint32_xfmt
+#define uint0_xfmt uint320_xfmt
+#define uint_bfmt uint32_bfmt
+#define uint0_bfmt uint320_bfmt
+
+#define uint_fmtlist(s, tab, n) uint32_fmtlist(s, tab, n)
+
+#define uint_scan_base(s, u, b) uint32_scan_base(s, (uint32 *)(char *)(u), b)
+#define uint0_scan_base(s, u, b) uint320_scan_base(s, (uint32 *)(char *)(u), b)
+
+#define uint_scanlist(tab, max, s, num) uint32_scanlist(tab, max, s, num)
diff --git a/src/headers/uint-64 b/src/headers/uint-64
new file mode 100644
index 0000000..31926d9
--- /dev/null
+++ b/src/headers/uint-64
@@ -0,0 +1,34 @@
+#include <skalibs/uint64.h>
+
+#define UINT_PACK 8
+#define uint_pack uint64_pack
+#define uint_pack_big uint64_pack_big
+#define uint_unpack(s, u) uint64_unpack(s, (uint64 *)(char *)(u))
+#define uint_unpack_big(s, u) uint64_unpack_big(s, (uint64 *)(char *)(u))
+
+#define uint_reverse uint64_reverse
+#define uint_big_endian uint64_big_endian
+#define uint_little_endian uint64_little_endian
+
+#define UINT_FMT UINT64_FMT
+#define UINT_OFMT UINT64_OFMT
+#define UINT_XFMT UINT64_XFMT
+#define UINT_BFMT UINT64_BFMT
+
+#define uint_fmt_base uint64_fmt_base
+#define uint0_fmt_base uint640_fmt_base
+#define uint_fmt uint64_fmt
+#define uint0_fmt uint640_fmt
+#define uint_ofmt uint64_ofmt
+#define uint0_ofmt uint640_ofmt
+#define uint_xfmt uint64_xfmt
+#define uint0_xfmt uint640_xfmt
+#define uint_bfmt uint64_bfmt
+#define uint0_bfmt uint640_bfmt
+
+#define uint_fmtlist(s, tab, n) uint64_fmtlist(s, tab, n)
+
+#define uint_scan_base(s, u, b) uint64_scan_base(s, (uint64 *)(char *)(u), b)
+#define uint0_scan_base(s, u, b) uint640_scan_base(s, (uint64 *)(char *)(u), b)
+
+#define uint_scanlist(tab, max, s, num) uint64_scanlist(tab, max, s, num)
diff --git a/src/headers/uint-footer b/src/headers/uint-footer
new file mode 100644
index 0000000..68bbaf7
--- /dev/null
+++ b/src/headers/uint-footer
@@ -0,0 +1,10 @@
+#define uint_scan(s, u) uint_scan_base(s, (u), 10)
+#define uint0_scan(s, u) uint0_scan_base(s, (u), 10)
+#define uint_oscan(s, u) uint_scan_base(s, (u), 8)
+#define uint0_oscan(s, u) uint0_scan_base(s, (u), 8)
+#define uint_xscan(s, u) uint_scan_base(s, (u), 16)
+#define uint0_xscan(s, u) uint0_scan_base(s, (u), 16)
+#define uint_bscan(s, u) uint_scan_base(s, (u), 2)
+#define uint0_bscan(s, u) uint0_scan_base(s, (u), 2)
+
+#endif
diff --git a/src/headers/uint-header b/src/headers/uint-header
new file mode 100644
index 0000000..8136b0c
--- /dev/null
+++ b/src/headers/uint-header
@@ -0,0 +1,5 @@
+/* ISC license. */
+
+#ifndef UINT_H
+#define UINT_H
+
diff --git a/src/headers/uint16-bendian b/src/headers/uint16-bendian
new file mode 100644
index 0000000..e1d0427
--- /dev/null
+++ b/src/headers/uint16-bendian
@@ -0,0 +1,3 @@
+#define uint16_little_endian(s, n) uint16_reverse((s), (n))
+#define uint16_big_endian(s, n)
+
diff --git a/src/headers/uint16-footer b/src/headers/uint16-footer
new file mode 100644
index 0000000..5602571
--- /dev/null
+++ b/src/headers/uint16-footer
@@ -0,0 +1,40 @@
+
+extern void uint16_pack (char *, uint16) ;
+extern void uint16_pack_big (char *, uint16) ;
+extern void uint16_unpack (char const *, uint16 *) ;
+extern void uint16_unpack_big (char const *, uint16 *) ;
+extern void uint16_reverse (char *, unsigned int) ;
+
+#define UINT16_FMT 6
+#define UINT16_OFMT 7
+#define UINT16_XFMT 5
+#define UINT16_BFMT 17
+
+#define uint16_fmt_base(s, u, b) uint64_fmt_base(s, (uint64)(uint16)(u), b)
+#define uint160_fmt_base(s, u, n, b) uint640_fmt_base(s, (uint64)(uint16)(u), n, b)
+
+#define uint16_fmt(s, u) uint64_fmt(s, (uint64)(uint16)(u))
+#define uint160_fmt(s, u, n) uint64_fmt(s, (uint64)(uint16)(u), n)
+#define uint16_ofmt(s, o) uint64_ofmt(s, (uint64)(uint16)(o))
+#define uint160_ofmt(s, o, n) uint64_ofmt(s, (uint64)(uint16)(o), n)
+#define uint16_xfmt(s, x) uint64_xfmt(s, (uint64)(uint16)(x))
+#define uint160_xfmt(s, x, n) uint64_xfmt(s, (uint64)(uint16)(x), n)
+#define uint16_bfmt(s, b) uint64_bfmt(s, (uint64)(uint16)(b))
+#define uint160_bfmt(s, b, n) uint64_bfmt(s, (uint64)(uint16)(b), n)
+
+extern unsigned int uint16_fmtlist (char *, uint16 const *, unsigned int) ;
+
+extern unsigned int uint16_scan_base (char const *, uint16 *, unsigned char) ;
+extern unsigned int uint160_scan_base (char const *, uint16 *, unsigned char) ;
+#define uint16_scan(s, u) uint16_scan_base(s, (u), 10)
+#define uint160_scan(s, u) uint160_scan_base(s, (u), 10)
+#define uint16_oscan(s, u) uint16_scan_base(s, (u), 8)
+#define uint160_oscan(s, u) uint160_scan_base(s, (u), 8)
+#define uint16_xscan(s, u) uint16_scan_base(s, (u), 16)
+#define uint160_xscan(s, u) uint160_scan_base(s, (u), 16)
+#define uint16_bscan(s, u) uint16_scan_base(s, (u), 2)
+#define uint160_bscan(s, u) uint160_scan_base(s, (u), 2)
+
+extern unsigned int uint16_scanlist (uint16 *, unsigned int, char const *, unsigned int *) ;
+
+#endif
diff --git a/src/headers/uint16-header b/src/headers/uint16-header
new file mode 100644
index 0000000..a8058c6
--- /dev/null
+++ b/src/headers/uint16-header
@@ -0,0 +1,9 @@
+/* ISC license. */
+
+#ifndef UINT16_H
+#define UINT16_H
+
+#include <stdint.h>
+#include <skalibs/uint64.h>
+
+typedef uint16_t uint16 ;
diff --git a/src/headers/uint16-lendian b/src/headers/uint16-lendian
new file mode 100644
index 0000000..a9f9945
--- /dev/null
+++ b/src/headers/uint16-lendian
@@ -0,0 +1,3 @@
+#define uint16_little_endian(s, n)
+#define uint16_big_endian(s, n) uint16_reverse((s), (n))
+
diff --git a/src/headers/uint32-bendian b/src/headers/uint32-bendian
new file mode 100644
index 0000000..27903c7
--- /dev/null
+++ b/src/headers/uint32-bendian
@@ -0,0 +1,3 @@
+#define uint32_little_endian(s, n) uint32_reverse((s), (n))
+#define uint32_big_endian(s, n)
+
diff --git a/src/headers/uint32-footer b/src/headers/uint32-footer
new file mode 100644
index 0000000..7cfe7ba
--- /dev/null
+++ b/src/headers/uint32-footer
@@ -0,0 +1,39 @@
+extern void uint32_pack (char *, uint32) ;
+extern void uint32_pack_big (char *, uint32) ;
+extern void uint32_unpack (char const *, uint32 *) ;
+extern void uint32_unpack_big (char const *, uint32 *) ;
+extern void uint32_reverse (char *, unsigned int) ;
+
+#define UINT32_FMT 11
+#define UINT32_OFMT 13
+#define UINT32_XFMT 9
+#define UINT32_BFMT 33
+
+#define uint32_fmt_base(s, u, b) uint64_fmt_base(s, (uint64)(uint32)(u), b)
+#define uint320_fmt_base(s, u, n, b) uint640_fmt_base(s, (uint64)(uint32)(u), n, b)
+
+#define uint32_fmt(s, u) uint64_fmt(s, (uint64)(uint32)(u))
+#define uint320_fmt(s, u, n) uint640_fmt(s, (uint64)(uint32)(u), n)
+#define uint32_ofmt(s, o) uint64_ofmt(s, (uint64)(uint32)(o))
+#define uint320_ofmt(s, o, n) uint640_ofmt(s, (uint64)(uint32)(o), n)
+#define uint32_xfmt(s, x) uint64_xfmt(s, (uint64)(uint32)(x))
+#define uint320_xfmt(s, x, n) uint640_xfmt(s, (uint64)(uint32)(x), n)
+#define uint32_bfmt(s, b) uint64_bfmt(s, (uint64)(uint32)(b))
+#define uint320_bfmt(s, b, n) uint640_bfmt(s, (uint64)(uint32)(b), n)
+
+extern unsigned int uint32_fmtlist (char *, uint32 const *, unsigned int) ;
+
+extern unsigned int uint32_scan_base (char const *, uint32 *, unsigned char) ;
+extern unsigned int uint320_scan_base (char const *, uint32 *, unsigned char) ;
+#define uint32_scan(s, u) uint32_scan_base(s, (u), 10)
+#define uint320_scan(s, u) uint320_scan_base(s, (u), 10)
+#define uint32_oscan(s, u) uint32_scan_base(s, (u), 8)
+#define uint320_oscan(s, u) uint320_scan_base(s, (u), 8)
+#define uint32_xscan(s, u) uint32_scan_base(s, (u), 16)
+#define uint320_xscan(s, u) uint320_scan_base(s, (u), 16)
+#define uint32_bscan(s, u) uint32_scan_base(s, (u), 2)
+#define uint320_bscan(s, u) uint320_scan_base(s, (u), 2)
+
+extern unsigned int uint32_scanlist (uint32 *, unsigned int, char const *, unsigned int *) ;
+
+#endif
diff --git a/src/headers/uint32-header b/src/headers/uint32-header
new file mode 100644
index 0000000..f71267f
--- /dev/null
+++ b/src/headers/uint32-header
@@ -0,0 +1,9 @@
+/* ISC license. */
+
+#ifndef UINT32_H
+#define UINT32_H
+
+#include <stdint.h>
+#include <skalibs/uint64.h>
+
+typedef uint32_t uint32 ;
diff --git a/src/headers/uint32-inttypesh b/src/headers/uint32-inttypesh
new file mode 100644
index 0000000..47a8910
--- /dev/null
+++ b/src/headers/uint32-inttypesh
@@ -0,0 +1,3 @@
+#include <inttypes.h>
+typedef uint32_t uint32 ;
+
diff --git a/src/headers/uint32-lendian b/src/headers/uint32-lendian
new file mode 100644
index 0000000..f88c111
--- /dev/null
+++ b/src/headers/uint32-lendian
@@ -0,0 +1,3 @@
+#define uint32_little_endian(s, n)
+#define uint32_big_endian(s, n) uint32_reverse((s), (n))
+
diff --git a/src/headers/uint32-noulong32 b/src/headers/uint32-noulong32
new file mode 100644
index 0000000..4705047
--- /dev/null
+++ b/src/headers/uint32-noulong32
@@ -0,0 +1,2 @@
+typedef unsigned int uint32 ;
+
diff --git a/src/headers/uint32-stdinth b/src/headers/uint32-stdinth
new file mode 100644
index 0000000..dc9eb42
--- /dev/null
+++ b/src/headers/uint32-stdinth
@@ -0,0 +1,3 @@
+#include <stdint.h>
+typedef uint32_t uint32 ;
+
diff --git a/src/headers/uint32-ulong32 b/src/headers/uint32-ulong32
new file mode 100644
index 0000000..87119a5
--- /dev/null
+++ b/src/headers/uint32-ulong32
@@ -0,0 +1,2 @@
+typedef unsigned long uint32 ;
+
diff --git a/src/headers/uint64-bendian b/src/headers/uint64-bendian
new file mode 100644
index 0000000..2485bec
--- /dev/null
+++ b/src/headers/uint64-bendian
@@ -0,0 +1,3 @@
+#define uint64_little_endian(s, n) uint64_reverse((s), (n))
+#define uint64_big_endian(s, n)
+
diff --git a/src/headers/uint64-footer b/src/headers/uint64-footer
new file mode 100644
index 0000000..df620a5
--- /dev/null
+++ b/src/headers/uint64-footer
@@ -0,0 +1,39 @@
+extern void uint64_pack (char *, uint64) ;
+extern void uint64_pack_big (char *, uint64) ;
+extern void uint64_unpack (char const *, uint64 *) ;
+extern void uint64_unpack_big (char const *, uint64 *) ;
+extern void uint64_reverse (char *, unsigned int) ;
+
+#define UINT64_FMT 21
+#define UINT64_OFMT 25
+#define UINT64_XFMT 17
+#define UINT64_BFMT 65
+
+extern unsigned int uint64_fmt_base (char *, uint64, unsigned char) ;
+extern unsigned int uint640_fmt_base (char *, uint64, unsigned int, unsigned char) ;
+
+#define uint64_fmt(s, u) uint64_fmt_base(s, (u), 10)
+#define uint640_fmt(s, u, n) uint640_fmt_base(s, u, (n), 10)
+#define uint64_ofmt(s, u) uint64_fmt_base(s, (u), 8)
+#define uint640_ofmt(s, u, n) uint640_fmt_base(s, u, (n), 8)
+#define uint64_xfmt(s, u) uint64_fmt_base(s, (u), 16)
+#define uint640_xfmt(s, u, n) uint640_fmt_base(s, u, (n), 16)
+#define uint64_bfmt(s, u) uint64_fmt_base(s, (u), 2)
+#define uint640_bfmt(s, u, n) uint640_fmt_base(s, u, (n), 2)
+
+extern unsigned int uint64_fmtlist (char *, uint64 const *, unsigned int) ;
+
+extern unsigned int uint64_scan_base (char const *, uint64 *, unsigned char) ;
+extern unsigned int uint640_scan_base (char const *, uint64 *, unsigned char) ;
+#define uint64_scan(s, u) uint64_scan_base(s, (u), 10)
+#define uint640_scan(s, u) uint640_scan_base(s, (u), 10)
+#define uint64_oscan(s, u) uint64_scan_base(s, (u), 8)
+#define uint640_oscan(s, u) uint640_scan_base(s, (u), 8)
+#define uint64_xscan(s, u) uint64_scan_base(s, (u), 16)
+#define uint640_xscan(s, u) uint640_scan_base(s, (u), 16)
+#define uint64_bscan(s, u) uint64_scan_base(s, (u), 2)
+#define uint640_bscan(s, u) uint640_scan_base(s, (u), 2)
+
+extern unsigned int uint64_scanlist (uint64 *, unsigned int, char const *, unsigned int *) ;
+
+#endif
diff --git a/src/headers/uint64-header b/src/headers/uint64-header
new file mode 100644
index 0000000..f0f10e6
--- /dev/null
+++ b/src/headers/uint64-header
@@ -0,0 +1,5 @@
+/* ISC license. */
+
+#ifndef UINT64_H
+#define UINT64_H
+
diff --git a/src/headers/uint64-lendian b/src/headers/uint64-lendian
new file mode 100644
index 0000000..ffdb4de
--- /dev/null
+++ b/src/headers/uint64-lendian
@@ -0,0 +1,3 @@
+#define uint64_little_endian(s, n)
+#define uint64_big_endian(s, n) uint64_reverse((s), (n))
+
diff --git a/src/headers/uint64-noulong64 b/src/headers/uint64-noulong64
new file mode 100644
index 0000000..c72ebef
--- /dev/null
+++ b/src/headers/uint64-noulong64
@@ -0,0 +1,2 @@
+typedef unsigned long long uint64 ;
+
diff --git a/src/headers/uint64-stdinth b/src/headers/uint64-stdinth
new file mode 100644
index 0000000..9c43f44
--- /dev/null
+++ b/src/headers/uint64-stdinth
@@ -0,0 +1,3 @@
+#include <stdint.h>
+
+typedef uint64_t uint64 ;
diff --git a/src/headers/uint64-ulong64 b/src/headers/uint64-ulong64
new file mode 100644
index 0000000..d9313d4
--- /dev/null
+++ b/src/headers/uint64-ulong64
@@ -0,0 +1 @@
+typedef unsigned long uint64 ;
diff --git a/src/headers/ulong-32 b/src/headers/ulong-32
new file mode 100644
index 0000000..b1b3326
--- /dev/null
+++ b/src/headers/ulong-32
@@ -0,0 +1,32 @@
+#include <skalibs/uint32.h>
+
+#define ULONG_PACK 4
+#define ulong_pack uint32_pack
+#define ulong_pack_big uint32_pack_big
+#define ulong_unpack(s, u) uint32_unpack(s, (uint32 *)(char *)(u))
+#define ulong_unpack_big(s, u) uint32_unpack_big(s, (uint32 *)(char *)(u))
+
+#define ulong_reverse uint32_reverse
+#define ulong_big_endian uint32_big_endian
+#define ulong_little_endian uint32_little_endian
+
+#define ULONG_FMT UINT32_FMT
+#define ULONG_OFMT UINT32_OFMT
+#define ULONG_XFMT UINT32_XFMT
+#define ULONG_BFMT UINT32_BFMT
+
+#define ulong_fmt uint32_fmt
+#define ulong0_fmt uint320_fmt
+#define ulong_ofmt uint32_ofmt
+#define ulong0_ofmt uint320_ofmt
+#define ulong_xfmt uint32_xfmt
+#define ulong0_xfmt uint320_xfmt
+#define ulong_bfmt uint32_bfmt
+#define ulong0_bfmt uint320_bfmt
+
+#define ulong_fmtlist(s, tab, n) uint32_fmtlist(s, tab, n)
+
+#define ulong_scan_base(s, u, b) uint32_scan_base(s, (uint32 *)(char *)(u), b)
+#define ulong0_scan_base(s, u, b) uint320_scan_base(s, (uint32 *)(char *)(u), b)
+
+#define ulong_scanlist(tab, max, s, num) uint32_scanlist(tab, max, s, num)
diff --git a/src/headers/ulong-64 b/src/headers/ulong-64
new file mode 100644
index 0000000..016fd1f
--- /dev/null
+++ b/src/headers/ulong-64
@@ -0,0 +1,32 @@
+#include <skalibs/uint64.h>
+
+#define ULONG_PACK 8
+#define ulong_pack uint64_pack
+#define ulong_pack_big uint64_pack_big
+#define ulong_unpack(s, u) uint64_unpack(s, (uint64 *)(char *)(u))
+#define ulong_unpack_big(s, u) uint64_unpack_big(s, (uint64 *)(char *)(u))
+
+#define ulong_reverse uint64_reverse
+#define ulong_big_endian uint64_big_endian
+#define ulong_little_endian uint64_little_endian
+
+#define ULONG_FMT UINT64_FMT
+#define ULONG_OFMT UINT64_OFMT
+#define ULONG_XFMT UINT64_XFMT
+#define ULONG_BFMT UINT64_BFMT
+
+#define ulong_fmt uint64_fmt
+#define ulong0_fmt uint640_fmt
+#define ulong_ofmt uint64_ofmt
+#define ulong0_ofmt uint640_ofmt
+#define ulong_xfmt uint64_xfmt
+#define ulong0_xfmt uint640_xfmt
+#define ulong_bfmt uint64_bfmt
+#define ulong0_bfmt uint640_bfmt
+
+#define ulong_fmtlist(s, tab, n) uint64_fmtlist(s, tab, n)
+
+#define ulong_scan_base(s, u, b) uint64_scan_base(s, (uint64 *)(char *)(u), b)
+#define ulong0_scan_base(s, u, b) uint640_scan_base(s, (uint64 *)(char *)(u), b)
+
+#define ulong_scanlist(tab, max, s, num) uint64_scanlist(tab, max, s, num)
diff --git a/src/headers/ulong-footer b/src/headers/ulong-footer
new file mode 100644
index 0000000..0607872
--- /dev/null
+++ b/src/headers/ulong-footer
@@ -0,0 +1,10 @@
+#define ulong_scan(s, u) ulong_scan_base(s, (u), 10)
+#define ulong0_scan(s, u) ulong0_scan_base(s, (u), 10)
+#define ulong_oscan(s, u) ulong_scan_base(s, (u), 8)
+#define ulong0_oscan(s, u) ulong0_scan_base(s, (u), 8)
+#define ulong_xscan(s, u) ulong_scan_base(s, (u), 16)
+#define ulong0_xscan(s, u) ulong0_scan_base(s, (u), 16)
+#define ulong_bscan(s, u) ulong_scan_base(s, (u), 2)
+#define ulong0_bscan(s, u) ulong0_scan_base(s, (u), 2)
+
+#endif
diff --git a/src/headers/ulong-header b/src/headers/ulong-header
new file mode 100644
index 0000000..98e6f37
--- /dev/null
+++ b/src/headers/ulong-header
@@ -0,0 +1,5 @@
+/* ISC license. */
+
+#ifndef ULONG_H
+#define ULONG_H
+
diff --git a/src/headers/ushort-16 b/src/headers/ushort-16
new file mode 100644
index 0000000..0e210c6
--- /dev/null
+++ b/src/headers/ushort-16
@@ -0,0 +1,34 @@
+#include <skalibs/uint16.h>
+
+#define USHORT_PACK 2
+#define ushort_pack uint16_pack
+#define ushort_pack_big uint16_pack_big
+#define ushort_unpack(s, u) uint16_unpack(s, (uint16 *)(char *)(u))
+#define ushort_unpack_big(s, u) uint16_unpack_big(s, (uint16 *)(char *)(u))
+
+#define ushort_reverse uint16_reverse
+#define ushort_big_endian uint16_big_endian
+#define ushort_little_endian uint16_little_endian
+
+#define USHORT_FMT UINT16_FMT
+#define USHORT_OFMT UINT16_OFMT
+#define USHORT_XFMT UINT16_XFMT
+#define USHORT_BFMT UINT16_BFMT
+
+#define ushort_fmt_base uint16_fmt_base
+#define ushort0_fmt_base uint160_fmt_base
+#define ushort_fmt uint16_fmt
+#define ushort0_fmt uint160_fmt
+#define ushort_ofmt uint16_ofmt
+#define ushort0_ofmt uint160_ofmt
+#define ushort_xfmt uint16_xfmt
+#define ushort0_xfmt uint160_xfmt
+#define ushort_bfmt uint16_bfmt
+#define ushort0_bfmt uint160_bfmt
+
+#define ushort_fmtlist(s, tab, n) uint16_fmtlist(s, tab, n)
+
+#define ushort_scan_base(s, u, b) uint16_scan_base(s, (uint16 *)(char *)(u), b)
+#define ushort0_scan_base(s, u, b) uint160_scan_base(s, (uint16 *)(char *)(u), b)
+
+#define ushort_scanlist(tab, max, s, num) uint16_scanlist(tab, max, s, num)
diff --git a/src/headers/ushort-32 b/src/headers/ushort-32
new file mode 100644
index 0000000..b41aef4
--- /dev/null
+++ b/src/headers/ushort-32
@@ -0,0 +1,34 @@
+#include <skalibs/uint32.h>
+
+#define USHORT_PACK 4
+#define ushort_pack uint32_pack
+#define ushort_pack_big uint32_pack_big
+#define ushort_unpack(s, u) uint32_unpack(s, (uint32 *)(char *)(u))
+#define ushort_unpack_big(s, u) uint32_unpack_big(s, (uint32 *)(char *)(u))
+
+#define ushort_reverse uint32_reverse
+#define ushort_big_endian uint32_big_endian
+#define ushort_little_endian uint32_little_endian
+
+#define USHORT_FMT UINT32_FMT
+#define USHORT_OFMT UINT32_OFMT
+#define USHORT_XFMT UINT32_XFMT
+#define USHORT_BFMT UINT32_BFMT
+
+#define ushort_fmt_base uint32_fmt_base
+#define ushort0_fmt_base uint320_fmt_base
+#define ushort_fmt uint32_fmt
+#define ushort0_fmt uint320_fmt
+#define ushort_ofmt uint32_ofmt
+#define ushort0_ofmt uint320_ofmt
+#define ushort_xfmt uint32_xfmt
+#define ushort0_xfmt uint320_xfmt
+#define ushort_bfmt uint32_bfmt
+#define ushort0_bfmt uint320_bfmt
+
+#define ushort_fmtlist(s, tab, n) uint32_fmtlist(s, tab, n)
+
+#define ushort_scan_base(s, u, b) uint32_scan_base(s, (uint32 *)(char *)(u), b)
+#define ushort0_scan_base(s, u, b) uint320_scan_base(s, (uint32 *)(char *)(u), b)
+
+#define ushort_scanlist(tab, max, s, num) uint32_scanlist(tab, max, s, num)
diff --git a/src/headers/ushort-footer b/src/headers/ushort-footer
new file mode 100644
index 0000000..db56f73
--- /dev/null
+++ b/src/headers/ushort-footer
@@ -0,0 +1,10 @@
+#define ushort_scan(s, u) ushort_scan_base(s, (u), 10)
+#define ushort0_scan(s, u) ushort0_scan_base(s, (u), 10)
+#define ushort_oscan(s, u) ushort_scan_base(s, (u), 8)
+#define ushort0_oscan(s, u) ushort0_scan_base(s, (u), 8)
+#define ushort_xscan(s, u) ushort_scan_base(s, (u), 16)
+#define ushort0_xscan(s, u) ushort0_scan_base(s, (u), 16)
+#define ushort_bscan(s, u) ushort_scan_base(s, (u), 2)
+#define ushort0_bscan(s, u) ushort0_scan_base(s, (u), 2)
+
+#endif
diff --git a/src/headers/ushort-header b/src/headers/ushort-header
new file mode 100644
index 0000000..66b7f9a
--- /dev/null
+++ b/src/headers/ushort-header
@@ -0,0 +1,5 @@
+/* ISC license. */
+
+#ifndef USHORT_H
+#define USHORT_H
+