Welcome to little lamb

Code » limb » commit 0a09b6f

Add doc for header files

author Olivier Brunel
2023-03-14 18:34:20 UTC
committer Olivier Brunel
2023-03-14 18:34:20 UTC
parent 61fdcd583077ce4f32c765bc307eb2de1af4bcb0

Add doc for header files

doc/blake3.h.0.md +41 -0
doc/buffer.h.0.md +32 -0
doc/direntry.h.0.md +27 -0
doc/djbunix.h.0.md +71 -0
doc/exitcode.h.0.md +70 -0
doc/hlookup.h.0.md +34 -0
doc/hmap.h.0.md +46 -0
doc/int.h.0.md +47 -0
doc/nextsplit.h.0.md +31 -0
doc/output.h.0.md +122 -0
doc/saencdata.h.0.md +21 -0
doc/samisc.h.0.md +28 -0
doc/sha3.h.0.md +41 -0
doc/u16.h.0.md +126 -0
doc/u32.h.0.md +126 -0
doc/u64.h.0.md +140 -0
doc/uint64.h.0.md +28 -0
doc/unix-transactional.h.0.md +36 -0
include/limb/djbunix.h +1 -0
include/limb/exitcode.h +1 -1
include/limb/u64.h +0 -1
include/limb/uint64.h +1 -0
include/limb/unix-transactional.h +2 -0

diff --git a/doc/blake3.h.0.md b/doc/blake3.h.0.md
new file mode 100644
index 0000000..b4390e2
--- /dev/null
+++ b/doc/blake3.h.0.md
@@ -0,0 +1,41 @@
+% limb manual
+% blake3.h(0)
+% limb 0.0.2
+% 2023-02-03
+
+# NAME
+
+blake3.h - BLAKE3 message digest
+
+# SYNOPSIS
+
+    #include <limb/blake3.h>
+
+# DESCRIPTION
+
+This header defines the required function to compute the BLAKE3 hash of a given
+block of data.
+
+## Types
+
+The following types are defined :
+
+: *blake3_ctx*
+:: An opaque structure to be given to the functions below.
+
+## Functions
+
+The following functions are defined :
+
+: [blake3_init](3)
+:: To initialize a blake3 context.
+
+: [blake3_update](3)
+:: To feed data into the blake3 context.
+
+: [blake3_final](3)
+:: To obtain the hash from a blake3 context.
+
+: [blake3](3)
+:: Convenience function to do all of the above at once, when the entire data is
+:: available in a single block.
diff --git a/doc/buffer.h.0.md b/doc/buffer.h.0.md
new file mode 100644
index 0000000..d2074f0
--- /dev/null
+++ b/doc/buffer.h.0.md
@@ -0,0 +1,32 @@
+% limb manual
+% buffer.h(0)
+
+# NAME
+
+buffer.h - I/O buffer interface
+
+# SYNOPSIS
+
+    #include <limb/buffer.h>
+
+# DESCRIPTION
+
+This header defines required functions to performed buffered I/O operations.
+
+! INFO: skalibs
+! This header is a complement to skalibs' own [skalibs/buffer.h](0) and thusly
+! includes said header.
+
+## Functions
+
+The following functions are defined :
+
+: [buffer_putescall](3)
+:: To write given data from a specified offset whilst escaping characters as
+:: needed.
+
+: [buffer_putesc](3)
+:: Similar but without a starting offset into given data.
+
+: [buffer_putescs](3)
+:: Similar but for a NUL-terminated string.
diff --git a/doc/direntry.h.0.md b/doc/direntry.h.0.md
new file mode 100644
index 0000000..becdd7b
--- /dev/null
+++ b/doc/direntry.h.0.md
@@ -0,0 +1,27 @@
+% limb manual
+% direntry.h(0)
+
+# NAME
+
+direntry.h - directory operations
+
+
+# SYNOPSIS
+
+    #include <limb/direntry.h>
+
+
+# DESCRIPTION
+
+The header defines the needed functions to deal with directory streams.
+
+! INFO: skalibs
+! This header is a complement to skalibs' own [skalibs/direntry.h](0) and thusly
+! includes said header.
+
+## Functions
+
+The following functions are defined :
+
+: [opendirat](3)
+:: Open a directory stream, with relative path to a given file descriptor
diff --git a/doc/djbunix.h.0.md b/doc/djbunix.h.0.md
new file mode 100644
index 0000000..9e6880e
--- /dev/null
+++ b/doc/djbunix.h.0.md
@@ -0,0 +1,71 @@
+% limb manual
+% djbunix.h(0)
+
+# NAME
+
+djbunix.h - standard I/O and other Unix system calls interfaces
+
+# SYNOPSIS
+
+    #include <limb/djbunix.h>
+
+# DESCRIPTION
+
+`djbunix` offers alternative API to basic Unix concepts, dealing with I/O
+operations, file descriptors, environment, child processes, and so on.
+
+! INFO: skalibs
+! This header is a complement to skalibs' own [skalibs/djbunix.h](0) and thusly
+! includes said header.
+
+## Functions
+
+The following functions/macros are defined :
+
+: [rm_rfat](3)
+:: Remove an entire directory entry, with relative path based on given file
+:: descriptor
+
+: [rm_rf_tmpat](3)
+: Different interface, using the given stralloc as head-allocated temporary
+:: space
+
+: [rm_rf_in_tmpat](3)
+:: Different interface, expecting the name to be found as NUL-terminated string
+:: inside the given stralloc
+
+
+: [rmstarat](3)
+:: Remove the full content of a directory, with relative path based on given
+:: file descriptor
+
+: [rmstar_tmpat](3)
+: Different interface, using the given stralloc as head-allocated temporary
+:: space
+
+: [rmstar_in_tmpat](3)
+:: Different interface, expecting the name to be found as NUL-terminated string
+:: inside the given stralloc
+
+
+: [salsat](3)
+:: Appends the names of all files in a directory into the given stralloc
+
+
+: [salst](3)
+:: Slightly different interface than [sals](3), having the stralloc as first
+:: argument
+
+: [salstat](3)
+:: Slightly different interface than [salsat](3), having the stralloc as first
+:: argument
+
+
+: [sareadlink0](3)
+:: Similar to [sareadlink](3) but ensures the content is NUL-terminated
+
+: [sareadlinkat](3)
+:: Place the content of a symbolic link into the given stralloc
+
+: [sareadlinkat0](3)
+:: Similar to [sareadlinkat](3) but ensures the content is NUL-terminated
diff --git a/doc/exitcode.h.0.md b/doc/exitcode.h.0.md
new file mode 100644
index 0000000..7b7c5e9
--- /dev/null
+++ b/doc/exitcode.h.0.md
@@ -0,0 +1,70 @@
+% limb manual
+% exitcode.h(0)
+
+# NAME
+
+exitcode.h - standardized exit codes
+
+
+# SYNOPSIS
+
+    #include <limb/exitcode.h>
+
+
+# DESCRIPTION
+
+The header defines some standardized exit codes aimed to provide consistency
+amongst applications. They are based upon/taken from BSD's own `sysexits.h`
+
+## Constants
+
+The following constants are defined :
+
+: *EX_USAGE*
+:: Incorrect usage.
+
+: *EX_DATA_ERR*
+:: Invalid input/user data.
+
+: *EX_NOINPUT*
+:: Input/user file missing or not readable.
+
+: *EX_NOUSER*
+:: Specified user does not exist.
+
+: *EX_NOHOST*
+:: Specified host does not exist.
+
+: *EX_UNAVAILABLE*
+:: Service unavailable, or support file/program does not exist.
+:: May also be a catch-all for "something didn't work, don't know what"
+
+: *EX_SOFTWARE*
+:: Internal error.
+
+: *EX_OSERR*
+:: OS error, e.g. cannot fork, cannot create pipe, etc.
+
+: *EX_OSFILE*
+:: System file (e.g. `/etc/passwd`) does not exist, cannot be open, has invalid
+:: syntax, etc.
+
+: *EX_CANTCREAT*
+:: (User-specified) output file cannot be created.
+
+: *EX_IOERR*
+:: I/O error.
+
+: *EX_TEMPFAIL*
+:: Temporary error, try again (e.g. no memory).
+
+: *EX_PROTOCOL*
+:: Invalid value during protocol exchange.
+
+: *EX_NOPERM*
+:: Permission denied.
+:: ! INFO: Recommendation
+:: ! Make sure to use *EX_NOINPUT* or *EX_CANTCREAT* instead if applicable.
+
+: *EX_CONFIG*
+:: Configuration error.
diff --git a/doc/hlookup.h.0.md b/doc/hlookup.h.0.md
new file mode 100644
index 0000000..cdd6d25
--- /dev/null
+++ b/doc/hlookup.h.0.md
@@ -0,0 +1,34 @@
+% limb manual
+% hlookup.h(0)
+
+# NAME
+
+hlookup.h - Fast lookup hashes
+
+
+# SYNOPSIS
+
+    #include <limb/hlookup.h>
+
+# DESCRIPTION
+
+The header defines the needed functions to compute fast lookup hashes. Those
+hashes are aimed to be used in hash table lookups, *not* for cryptographic
+purposes.
+
+## Functions
+
+The following functions are defined :
+
+: [hlookup](3)
+:: Compute 32bit hashes of given block of data
+
+: [hlookup32](3)
+:: Return the 32bit hash of given block of data
+
+: [hlookup64](3)
+:: Return the 64bit hash of given block of data
+
+# SEE ALSO
+
+[hmap.h](0), [blake3.h](0), [sha3.h](0)
diff --git a/doc/hmap.h.0.md b/doc/hmap.h.0.md
new file mode 100644
index 0000000..6af3f56
--- /dev/null
+++ b/doc/hmap.h.0.md
@@ -0,0 +1,46 @@
+% limb manual
+% hmap.h(0)
+
+# NAME
+
+hmap.h - hash table management
+
+
+# SYNOPSIS
+
+    #include <limb/hmap.h>
+
+# DESCRIPTION
+
+The header defines the needed functions to work with hash tables.
+
+## Constants
+
+The following constants are defined :
+
+: *HMAP_ZERO*
+:: Value that can be used to initialize a stack-allocated hash table.
+
+## Structures
+
+The following structures are defined :
+
+: *struct hmap*
+:: The structure that describes the hash table on which the functions operate,
+:: which should be considered opaque.
+
+## Functions
+
+The following functions are defined :
+
+: [hmap_init](3)
+:: Initializes an hash table, setting the size of its elements.
+
+: [hmap_set](3)
+:: Sets (or adds) the data associated with the given key.
+
+: [hmap_get](3)
+:: Returns a pointer to the data associated with the given key.
+
+: [hmap_free](3)
+:: Frees all memory allocated by the table.
diff --git a/doc/int.h.0.md b/doc/int.h.0.md
new file mode 100644
index 0000000..7f2248d
--- /dev/null
+++ b/doc/int.h.0.md
@@ -0,0 +1,47 @@
+% limb manual
+% int.h(0)
+
+# NAME
+
+int.h - integer types
+
+
+# SYNOPSIS
+
+    #include <limb/int.h>
+
+# DESCRIPTION
+
+The header defines some integers types.
+
+## Types
+
+The following types are defined :
+
+: *u8*
+:: 8bit unsigned integer
+
+: *u16*
+:: 16bit unsigned integer
+
+: *u32*
+:: 32bit unsigned integer
+
+: *u64*
+:: 64bit unsigned integer
+
+## Macros
+
+The following macros are defined :
+
+: *U8_C*(`u`)
+:: Cast number `u` to an *u8*
+
+: *U16_C*(`u`)
+:: Cast number `u` to an *u16*
+
+: *U32_C*(`u`)
+:: Cast number `u` to an *u32*
+
+: *U64_C*(`u`)
+:: Cast number `u` to an *u64*
diff --git a/doc/nextsplit.h.0.md b/doc/nextsplit.h.0.md
new file mode 100644
index 0000000..ea5434a
--- /dev/null
+++ b/doc/nextsplit.h.0.md
@@ -0,0 +1,31 @@
+% limb manual
+% nextsplit.h(0)
+
+# NAME
+
+nextplit.h - finding the next split for variable-length chunks in a data stream
+
+
+# SYNOPSIS
+
+    #include <limb/nextsplit.h>
+
+# DESCRIPTION
+
+This header defines functions to determine the next split for variable-length
+chunks in a data stream.
+
+## Functions
+
+The following functions are defined :
+
+: [nextsplit_ae](3)
+:: Use Asymmetric Extremum Content Defined Chunking to determine the next split
+:: in a given data block
+
+: [nextsplit_buz](3)
+:: Use buzhash rolling hash to determine the next split in a given data block
+
+: [nextsplit_rabin](3)
+:: Use rolling hash based on Rabin fingerprint to determine next split in a
+:: given data block
diff --git a/doc/output.h.0.md b/doc/output.h.0.md
new file mode 100644
index 0000000..63642cc
--- /dev/null
+++ b/doc/output.h.0.md
@@ -0,0 +1,122 @@
+% limb manual
+% output.h(0)
+
+# NAME
+
+output.h - writing to stdout/stderr
+
+
+# SYNOPSIS
+
+    #include <limb/output.h>
+
+# DESCRIPTION
+
+This header defines functions used to write messages/warnings to stdout or
+stderr.
+
+## Constants
+
+The following constants are defined :
+
+: *ESC*
+:: Special value that can be passed as a string to [put](3) (and related macros)
+:: to enable escaping mode for following strings (up to the next *ESC*)
+
+: *PUT_SYS*
+:: Option to [put](3) to have the error description of `errno` suffixed
+
+: *PUT_DIE*
+:: Option to [put](3) to end program execution using given exit code
+
+: *PUT_LFF*
+:: Option to [put](3) to add a LF and flush the buffer
+
+## Functions
+
+The following functions/macros are defined :
+
+: [add](3)
+:: Write given strings to *stdout*
+
+: [adde](3)
+:: Write given strings to *stderr*
+
+: [die](3)
+:: Same as [errdie](3) but prefixed with "*PROG*: "
+
+: [dief](3)
+:: Same as [die](3) but with an extra "fatal: "
+
+: [diefu](3)
+:: Same as [dief](3) but with an extra "unable to "
+
+: [diesys](3)
+:: Same as [sysdie](3) but prefixed with "*PROG*: "
+
+: [diefsys](3)
+:: Same as [diesys](3) but with an extra "fatal: "
+
+: [diefusys](3)
+:: Same as [diefsys](3) but with an extra "unable to "
+
+: [diehelp](3)
+:: Write given usage string to *stderr* prefixed with "usage: *PROG* ", a blank
+:: line, then the help string; and end program execution using given exit code
+
+: [dieusage](3)
+:: Write given string to *stderr* prefixed with "usage: *PROG* " and end
+:: program execution using given exit code
+
+: [dieversion](3)
+:: Write a version and copyright message to *stdout*
+
+: [err](3)
+:: Write given strings to *stderr*, add a LF and flush the buffer
+
+: [errdie](3)
+:: Same as [err](3) but ends program execution using given exit code
+
+: [out](3)
+:: Write given strings to *stdout*, add a LF and flush the buffer
+
+: [outdie](3)
+:: Same as [out](3) but ends program execution using given exit code
+
+: [put](3)
+:: Write given array of strings to given buffer, optionally the error
+:: description and/or aborting program execution
+
+: [sys](3)
+:: Write given strings to *stderr*, add a LF and flush the buffer
+
+: [sysdie](3)
+:: Same as [sys](3) but ends program execution using given exit code
+
+: [warn](3)
+:: Write a warning to *stderr*
+
+: [warnsys](3)
+:: Write a warning to *stderr* followed by the error description
+
+: [warnu](3)
+:: Same as [warn](3) but starting the warning with "unable to "
+
+: [warnusys](3)
+:: Same as [warnsys](3) but starting the warning with "unable to "
+
+## Macros
+
+The following macros are defined :
+
+: [retw](3)
+:: same as [warn](3) then return the given value
+
+: [retwu](3)
+:: same as [warnu](3) then return the given value
+
+: [retwsys](3)
+:: same as [warnsys](3) then return the given value
+
+: [retwusys](3)
+:: same as [warnusys](3) then return the given value
diff --git a/doc/saencdata.h.0.md b/doc/saencdata.h.0.md
new file mode 100644
index 0000000..7f1e0c7
--- /dev/null
+++ b/doc/saencdata.h.0.md
@@ -0,0 +1,21 @@
+% limb manual
+% saencdata.h(0)
+
+# NAME
+
+saencdata.h - encode data into stralloc
+
+# SYNOPSIS
+
+    #include <limb/saencdata.h>
+
+# DESCRIPTION
+
+The header defines functions used to encode data into a given stralloc.
+
+## Functions
+
+The following functions are defined :
+
+: [saencdata](3)
+:: Encode given data into given stralloc
diff --git a/doc/samisc.h.0.md b/doc/samisc.h.0.md
new file mode 100644
index 0000000..c7ddfc4
--- /dev/null
+++ b/doc/samisc.h.0.md
@@ -0,0 +1,28 @@
+% limb manual
+% samisc.h(0)
+
+# NAME
+
+samisc.h - miscellaneous functions dealing with stralloc
+
+# SYNOPSIS
+
+    #include <limb/samisc.h>
+
+# DESCRIPTION
+
+The header defines helper functions when working with stralloc.
+
+## Functions
+
+The following functions are defined :
+
+: [sacoloff](3)
+:: Collect NUL-terminated strings from the given stralloc and store their
+:: offsets into it
+
+: [sacolptr](3)
+:: Same as [sacoloff](3) but stores pointers to the strings
+
+: [saoff2ptr](3)
+:: Transform an array of offsets into an array of pointers from an stralloc
diff --git a/doc/sha3.h.0.md b/doc/sha3.h.0.md
new file mode 100644
index 0000000..41a0755
--- /dev/null
+++ b/doc/sha3.h.0.md
@@ -0,0 +1,41 @@
+% limb manual
+% sha3.h(0)
+% limb 0.0.2
+% 2023-02-03
+
+# NAME
+
+sha3.h - SHA3 message digest
+
+# SYNOPSIS
+
+    #include <limb/sha3.h>
+
+# DESCRIPTION
+
+This header defines the required function to compute the SHA3 hash of a given
+block of data.
+
+## Types
+
+The following types are defined :
+
+: *sha3_ctx*
+:: An opaque structure to be given to the functions below.
+
+## Functions
+
+The following functions are defined :
+
+: [sha3_init](3)
+:: To initialize a sha3 context.
+
+: [sha3_update](3)
+:: To feed data into the sha3 context.
+
+: [sha3_final](3)
+:: To obtain the hash from a sha3 context.
+
+: [sha3](3)
+:: Convenience function to do all of the above at once, when the entire data is
+:: available in a single block.
diff --git a/doc/u16.h.0.md b/doc/u16.h.0.md
new file mode 100644
index 0000000..59a947b
--- /dev/null
+++ b/doc/u16.h.0.md
@@ -0,0 +1,126 @@
+% limb manual
+% u16.h(0)
+
+# NAME
+
+u16.h - 16bit unsigned integers
+
+# SYNOPSIS
+
+    #include <limb/u16.h>
+
+# DESCRIPTION
+
+This header defines functions allowing to work with 16bit unsigned integers.
+It is mainly composed of macros to their `uint16_*` counterparts, offering
+slightly different interfaces.
+
+## Constants
+
+The following constants are defined :
+
+: *U16_FMT*
+:: Maximum length for a byte array that can hold an u16 value in decimal
+:: representation, plus a NUL-terminating byte
+
+: *U16_FMTG*
+:: Same as *U16_FMT* but with thousand-separators
+
+: *U16_BFMT*
+:: Same as *U16_FMT* but for binary
+
+: *U16_OFMT*
+:: Same as *U16_FMT* but for octal
+
+: *U16_XFMT*
+:: Same as *U16_FMT* but for hexadecimal
+
+## Functions
+
+The following functions/macros are defined :
+
+: [u16_be](3)
+:: Same as [uint16_big](3)
+
+: [u16_le](3)
+:: Same as [uint16_little](3)
+
+: [u16p_be](3)
+:: Same as [uint16_bigp](3)
+
+: [u16p_le](3)
+:: Same as [uint16_littlep](3)
+
+: [u16pa_be](3)
+:: Same as [uint16_bign](3)
+
+: [u16pa_le](3)
+:: Same as [uint16_littlen](3)
+
+: [u16_pack](3)
+:: Same as [uint16_pack](3)
+
+: [u16_unpack](3)
+:: Same as [uint16_unpack](3)
+
+: [u16_pack_big](3)
+:: Same as [uint16_pack_big](3)
+
+: [u16_unpack_big](3)
+:: Same as [uint16_unpack_big](3)
+
+: [u16_fmt](3)
+:: Print u16 value as decimal into given byte array
+
+: [u16_fmtg](3)
+:: Print u16 value as decimal, using coma as thousand separator, into given byte
+:: array
+
+: [u16_bfmt](3)
+:: Same as [u16_fmt](3) but as binary
+
+: [u16_ofmt](3)
+:: Same as [u16_fmt](3) but as octal
+
+: [u16_xfmt](3)
+:: Same as [u16_fmt](3) but as hexadecimal
+
+: [u160_fmt](3)
+:: Same as [u16_fmt](3) but filling with zeroes if less than given size
+
+: [u160_fmtg](3)
+:: Same as [u16_fmtg](3) but filling with zeroes if less than given size
+
+: [u160_bfmt](3)
+:: Same as [u16_bfmt](3) but filling with zeroes if less than given size
+
+: [u160_ofmt](3)
+:: Same as [u16_ofmt](3) but filling with zeroes if less than given size
+
+: [u160_xfmt](3)
+:: Same as [u16_xfmt](3) but filling with zeroes if less than given size
+
+: [u16_scan](3)
+:: Read given byte array for decimal u16 value and load into given variable
+
+: [u16_bscan](3)
+:: Same as [u16_scan](3) but for binary value
+
+: [u16_oscan](3)
+:: Same as [u16_scan](3) but for octal value
+
+: [u16_xscan](3)
+:: Same as [u16_scan](3) but for hexadecimal value
+
+: [u160_scan](3)
+:: Same as [u16_scan](3) but expects a NUL-terminated string
+
+: [u160_bscan](3)
+:: Same as [u16_bscan](3) but expects a NUL-terminated string
+
+: [u160_oscan](3)
+:: Same as [u16_oscan](3) but expects a NUL-terminated string
+
+: [u160_xscan](3)
+:: Same as [u16_xscan](3) but expects a NUL-terminated string
+
diff --git a/doc/u32.h.0.md b/doc/u32.h.0.md
new file mode 100644
index 0000000..9b12ebb
--- /dev/null
+++ b/doc/u32.h.0.md
@@ -0,0 +1,126 @@
+% limb manual
+% u32.h(0)
+
+# NAME
+
+u32.h - 32bit unsigned integers
+
+# SYNOPSIS
+
+    #include <limb/u32.h>
+
+# DESCRIPTION
+
+This header defines functions allowing to work with 32bit unsigned integers.
+It is mainly composed of macros to their `uint32_*` counterparts, offering
+slightly different interfaces.
+
+## Constants
+
+The following constants are defined :
+
+: *U32_FMT*
+:: Maximum length for a byte array that can hold an u32 value in decimal
+:: representation, plus a NUL-terminating byte
+
+: *U32_FMTG*
+:: Same as *U32_FMT* but with thousand-separators
+
+: *U32_BFMT*
+:: Same as *U32_FMT* but for binary
+
+: *U32_OFMT*
+:: Same as *U32_FMT* but for octal
+
+: *U32_XFMT*
+:: Same as *U32_FMT* but for hexadecimal
+
+## Functions
+
+The following functions/macros are defined :
+
+: [u32_be](3)
+:: Same as [uint32_big](3)
+
+: [u32_le](3)
+:: Same as [uint32_little](3)
+
+: [u32p_be](3)
+:: Same as [uint32_bigp](3)
+
+: [u32p_le](3)
+:: Same as [uint32_littlep](3)
+
+: [u32pa_be](3)
+:: Same as [uint32_bign](3)
+
+: [u32pa_le](3)
+:: Same as [uint32_littlen](3)
+
+: [u32_pack](3)
+:: Same as [uint32_pack](3)
+
+: [u32_unpack](3)
+:: Same as [uint32_unpack](3)
+
+: [u32_pack_big](3)
+:: Same as [uint32_pack_big](3)
+
+: [u32_unpack_big](3)
+:: Same as [uint32_unpack_big](3)
+
+: [u32_fmt](3)
+:: Print u32 value as decimal into given byte array
+
+: [u32_fmtg](3)
+:: Print u32 value as decimal, using coma as thousand separator, into given byte
+:: array
+
+: [u32_bfmt](3)
+:: Same as [u32_fmt](3) but as binary
+
+: [u32_ofmt](3)
+:: Same as [u32_fmt](3) but as octal
+
+: [u32_xfmt](3)
+:: Same as [u32_fmt](3) but as hexadecimal
+
+: [u320_fmt](3)
+:: Same as [u32_fmt](3) but filling with zeroes if less than given size
+
+: [u320_fmtg](3)
+:: Same as [u32_fmtg](3) but filling with zeroes if less than given size
+
+: [u320_bfmt](3)
+:: Same as [u32_bfmt](3) but filling with zeroes if less than given size
+
+: [u320_ofmt](3)
+:: Same as [u32_ofmt](3) but filling with zeroes if less than given size
+
+: [u320_xfmt](3)
+:: Same as [u32_xfmt](3) but filling with zeroes if less than given size
+
+: [u32_scan](3)
+:: Read given byte array for decimal u32 value and load into given variable
+
+: [u32_bscan](3)
+:: Same as [u32_scan](3) but for binary value
+
+: [u32_oscan](3)
+:: Same as [u32_scan](3) but for octal value
+
+: [u32_xscan](3)
+:: Same as [u32_scan](3) but for hexadecimal value
+
+: [u320_scan](3)
+:: Same as [u32_scan](3) but expects a NUL-terminated string
+
+: [u320_bscan](3)
+:: Same as [u32_bscan](3) but expects a NUL-terminated string
+
+: [u320_oscan](3)
+:: Same as [u32_oscan](3) but expects a NUL-terminated string
+
+: [u320_xscan](3)
+:: Same as [u32_xscan](3) but expects a NUL-terminated string
+
diff --git a/doc/u64.h.0.md b/doc/u64.h.0.md
new file mode 100644
index 0000000..1dc27ab
--- /dev/null
+++ b/doc/u64.h.0.md
@@ -0,0 +1,140 @@
+% limb manual
+% u64.h(0)
+
+# NAME
+
+u64.h - 64bit unsigned integers
+
+# SYNOPSIS
+
+    #include <limb/u64.h>
+
+# DESCRIPTION
+
+This header defines functions allowing to work with 64bit unsigned integers.
+It is mainly composed of macros to their `uint64_*` counterparts, offering
+slightly different interfaces.
+
+## Constants
+
+The following constants are defined :
+
+: *U64_FMT*
+:: Maximum length for a byte array that can hold an u64 value in decimal
+:: representation, plus a NUL-terminating byte
+
+: *U64_FMTG*
+:: Same as *U64_FMT* but with thousand-separators
+
+: *U64_BFMT*
+:: Same as *U64_FMT* but for binary
+
+: *U64_OFMT*
+:: Same as *U64_FMT* but for octal
+
+: *U64_XFMT*
+:: Same as *U64_FMT* but for hexadecimal
+
+## Functions
+
+The following functions/macros are defined :
+
+: [u64_be](3)
+:: Same as [uint64_big](3)
+
+: [u64_le](3)
+:: Same as [uint64_little](3)
+
+: [u64p_be](3)
+:: Same as [uint64_bigp](3)
+
+: [u64p_le](3)
+:: Same as [uint64_littlep](3)
+
+: [u64pa_be](3)
+:: Same as [uint64_bign](3)
+
+: [u64pa_le](3)
+:: Same as [uint64_littlen](3)
+
+: [u64_pack](3)
+:: Same as [uint64_pack](3)
+
+: [u64_unpack](3)
+:: Same as [uint64_unpack](3)
+
+: [u64_pack_big](3)
+:: Same as [uint64_pack_big](3)
+
+: [u64_unpack_big](3)
+:: Same as [uint64_unpack_big](3)
+
+: [u64_pack_trim](3)
+:: Same as [uint64_pack_trim](3)
+
+: [u64_unpack_trim](3)
+:: Same as [uint64_unpack_trim](3)
+
+: [u64_fmt](3)
+:: Print u64 value as decimal into given byte array
+
+: [u64_fmtg](3)
+:: Print u64 value as decimal, using coma as thousand separator, into given byte
+:: array
+
+: [u64_bfmt](3)
+:: Same as [u64_fmt](3) but as binary
+
+: [u64_ofmt](3)
+:: Same as [u64_fmt](3) but as octal
+
+: [u64_xfmt](3)
+:: Same as [u64_fmt](3) but as hexadecimal
+
+: [u640_fmt](3)
+:: Same as [u64_fmt](3) but filling with zeroes if less than given size
+
+: [u640_fmtg](3)
+:: Same as [u64_fmtg](3) but filling with zeroes if less than given size
+
+: [u640_bfmt](3)
+:: Same as [u64_bfmt](3) but filling with zeroes if less than given size
+
+: [u640_ofmt](3)
+:: Same as [u64_ofmt](3) but filling with zeroes if less than given size
+
+: [u640_xfmt](3)
+:: Same as [u64_xfmt](3) but filling with zeroes if less than given size
+
+: [u64_fmt_generic](3)
+:: Print u64 value into given byte array, encoded in specified base and
+optionally grouped using given separator
+
+: [u640_fmt_generic](3)
+:: Same as [u64_fmt_generic](3) but filling with given character if less than
+:: specified size.
+
+: [u64_scan](3)
+:: Read given byte array for decimal u64 value and load into given variable
+
+: [u64_bscan](3)
+:: Same as [u64_scan](3) but for binary value
+
+: [u64_oscan](3)
+:: Same as [u64_scan](3) but for octal value
+
+: [u64_xscan](3)
+:: Same as [u64_scan](3) but for hexadecimal value
+
+: [u640_scan](3)
+:: Same as [u64_scan](3) but expects a NUL-terminated string
+
+: [u640_bscan](3)
+:: Same as [u64_bscan](3) but expects a NUL-terminated string
+
+: [u640_oscan](3)
+:: Same as [u64_oscan](3) but expects a NUL-terminated string
+
+: [u640_xscan](3)
+:: Same as [u64_xscan](3) but expects a NUL-terminated string
+
diff --git a/doc/uint64.h.0.md b/doc/uint64.h.0.md
new file mode 100644
index 0000000..90adc28
--- /dev/null
+++ b/doc/uint64.h.0.md
@@ -0,0 +1,28 @@
+% limb manual
+% uint64.h(0)
+
+# NAME
+
+uint64.h - 64bit unsigned integers
+
+# SYNOPSIS
+
+    #include <limb/uint64.h>
+
+# DESCRIPTION
+
+This header defines functions allowing to work with 64bit unsigned integers.
+
+! INFO: skalibs
+! This header is a complement to skalibs' own [skalibs/uint64.h](0) and thusly
+! includes said header.
+
+## Functions
+
+The following functions are defined :
+
+: [uint64_pack_trim](3)
+:: Store given value into given byte array, trimming "unneeded" bits
+
+: [uint64_unpack_trim](3)
+:: Read given byte array and load value into given variable
diff --git a/doc/unix-transactional.h.0.md b/doc/unix-transactional.h.0.md
new file mode 100644
index 0000000..b48d1c9
--- /dev/null
+++ b/doc/unix-transactional.h.0.md
@@ -0,0 +1,36 @@
+% limb manual
+% unix-transactional.h(0)
+
+# NAME
+
+unix-transactional.h - transactional filesystem operations
+
+# SYNOPSIS
+
+    #include <limb/unix-transactional.h>
+
+# DESCRIPTION
+
+This header defines functions allowing to perform transactional filesystem
+operations.
+
+! INFO: skalibs
+! This header is a complement to skalibs' own [skalibs/unix-transactional.h](0)
+! and thusly includes said header.
+
+## Functions
+
+The following functions are defined :
+
+: [open_createat](3)
+:: Same as [open_create](3) but relative path are based of given file descriptor
+
+: [openc_createat](3)
+:: Same as [openc_create](3) but relative path are based of given file
+:: descriptor
+
+: [open_exclat](3)
+:: Same as [open_excl](3) but relative path are based of given file descriptor
+
+: [openc_exclat](3)
+:: Same as [openc_excl](3) but relative path are based of given file descriptor
diff --git a/include/limb/djbunix.h b/include/limb/djbunix.h
index 74d4a80..79f46ae 100644
--- a/include/limb/djbunix.h
+++ b/include/limb/djbunix.h
@@ -1,6 +1,7 @@
 #ifndef LIMB_DJBUNIX_H
 #define LIMB_DJBUNIX_H
 
+#include <skalibs/djbunix.h>
 #include <skalibs/stralloc.h>
 
 extern int rm_rfat(int fd, const char *name);
diff --git a/include/limb/exitcode.h b/include/limb/exitcode.h
index e68d62d..a7ea7a0 100644
--- a/include/limb/exitcode.h
+++ b/include/limb/exitcode.h
@@ -33,7 +33,7 @@ enum {
     EX_TEMPFAIL,
     /* invalid value during protocol exchange */
     EX_PROTOCOL,
-    /* permession denied. Make sure to use EX_NOINPUT or EX_CANTCREAT if
+    /* permission denied. Make sure to use EX_NOINPUT or EX_CANTCREAT if
      * applicable */
     EX_NOPERM,
     /* configuration error */
diff --git a/include/limb/u64.h b/include/limb/u64.h
index f66fd20..32b95f3 100644
--- a/include/limb/u64.h
+++ b/include/limb/u64.h
@@ -1,7 +1,6 @@
 #ifndef LIMB_U64_H
 #define LIMB_U64_H
 
-#include <skalibs/uint64.h>
 #include "limb/int.h"
 #include "limb/uint64.h"
 
diff --git a/include/limb/uint64.h b/include/limb/uint64.h
index 63feccd..f0a7c2b 100644
--- a/include/limb/uint64.h
+++ b/include/limb/uint64.h
@@ -1,6 +1,7 @@
 #ifndef LIMB_UINT64_H
 #define LIMB_UINT64_H
 
+#include <skalibs/uint64.h>
 #include "limb/int.h"
 
 extern int msb64(uint64_t val);
diff --git a/include/limb/unix-transactional.h b/include/limb/unix-transactional.h
index 9a5a8f1..43e7b3a 100644
--- a/include/limb/unix-transactional.h
+++ b/include/limb/unix-transactional.h
@@ -1,6 +1,8 @@
 #ifndef LIMB_UNIXTRANSACTIONAL_H
 #define LIMB_UNIXTRANSACTIONAL_H
 
+#include <skalibs/unix-transactional.h>
+
 extern int openc_createat(int fd, const char *file);
 extern int open_createat(int fd, const char *file);
 extern int openc_exclat(int fd, const char *file);