Go to file
leitner 3128a340ac make unit tests self contained
array half-hearted improvements to Windows compilability
buffer make unit tests self contained
byte add byte_start, byte_starts
case #include <foo.h> -> #include <libowfat/foo.h>
cdb fix memory leak in error path
critbit #include <foo.h> -> #include <libowfat/foo.h>
dns use write in buffer_put for a slight perf improvement
examples include <foo> -> include "foo"
fmt add man pages for fmt_copybytes and fmt_copybytes_sizeof_minus1
io port the epoll optimizations to kqueue, hopefully repairing it in the process
mmap make mmap_private on Windows work on read-only files, too
mult move unit tests into each file (compile with -DUNITTEST)
open #include <foo.h> -> #include <libowfat/foo.h>
scan remove compiler warnings in ent
socket less warnings
str add unit test
stralloc #include <foo.h> -> #include <libowfat/foo.h>
tai #include <foo.h> -> #include <libowfat/foo.h>
taia #include <foo.h> -> #include <libowfat/foo.h>
test add libowfat/ to includes
textcode fix two complaints by clang's static analyzer
uint #include <foo.h> -> #include <libowfat/foo.h>
unix use write in buffer_put for a slight perf improvement
.cvsignore put includes into <libowfat/*.h>
CAS.h remove a few compiler warnings
CHANGES add byte_start, byte_starts
COPYING Initial revision
GNUmakefile add static analyzer targets
Makefile half-hearted Windows compilability improvements
README mention my email address
TODO fix for NetBSD 3.0 (they broke their sys/types.h)
array.h make headers work in C++
buffer.h add buffer_peekc
byte.h give __readmem__ its own #ifndef
case.h make headers work in C++
cdb.h make headers work in C++
cdb_make.h make headers work in C++
compiletimeassert.h try to work with gcc 8.3, too
critbit.h make critbit0_contains as pure
dns.h get rid of more -Wconversion warnings
ent.c fix two complaints by clang's static analyzer
entities.json $ make WERROR=-Werror now builds with -Werror
errmsg.h make headers work in C++
errmsg_int.h add errmsg_int.h
fmt.h add man pages for fmt_copybytes and fmt_copybytes_sizeof_minus1
iarray.h half-hearted Windows compilability improvements
io.h BSD build fix (hopefully)
io_internal.h first_deferred actually needs to be extern all the time, not just
iob.h BSD build fix (hopefully)
iob_internal.h use callback based infrastructure to reset iob's
iopause.h1 for installed header files, add comment saying where they came from
iopause.h2 for installed header files, add comment saying where they came from
ip4.h get rid of more -Wconversion warnings
ip6.h get rid of more -Wconversion warnings
isset.h remove a few compiler warnings
likely.h add iarray
mmap.h add mmap_readat
ndelay.h make headers work in C++
open.h make headers work in C++
openreadclose.h make headers work in C++
parse.h make unit tests self contained
rangecheck.h half-hearted Windows compilability improvements
readclose.h get rid of more -Wconversion warnings
safemult.h remove a few compiler warnings
scan.h add a few helpers for parsing binary data
select.h1 monster update: add tai, taia, iopause, case, and ipv6 enhanced dns
select.h2 more BSD compat
socket.h add socket_udp4b and socket_udp6b
str.h make headers work in C++
stralloc.h support gcc 10's access attribute when compiling with dietlibc
t.c remove failing assert that failed build
tai.h make headers work in C++
taia.h make headers work in C++
textcode.h support gcc 10's access attribute when compiling with dietlibc
tryalloca.c $ make WERROR=-Werror now builds with -Werror
trybsdsf.c $ make WERROR=-Werror now builds with -Werror
trydevpoll.c broken lose32 port using mingw (don't use!!!)
tryepoll.c $ make WERROR=-Werror now builds with -Werror
tryinline.c work around compilers that don't understand "static inline"
tryip6.c $ make WERROR=-Werror now builds with -Werror
trykqueue.c add epoll and kqueue tests
tryn2i.c $ make WERROR=-Werror now builds with -Werror
trypoll.c monster update: add tai, taia, iopause, case, and ipv6 enhanced dns
trypread.c add pread test
tryscope.c $ make WERROR=-Werror now builds with -Werror
trysendfile.c $ make WERROR=-Werror now builds with -Werror
trysigio.c $ make WERROR=-Werror now builds with -Werror
trysl.c $ make WERROR=-Werror now builds with -Werror
trysocket.c $ make WERROR=-Werror now builds with -Werror
trysysel.c monster update: add tai, taia, iopause, case, and ipv6 enhanced dns
tryuint128.c add tryuing128.c and ignore haveuint128.h
uint16.h add fmt and scan versions of uint*
uint32.h add fmt and scan versions of uint*
uint64.h add fmt and scan versions of uint*
va_narg.h for installed header files, add comment saying where they came from
windoze.h fix some bugs that cppcheck found

README

libowfat is a library of general purpose APIs extracted from Dan
Bernstein's software, reimplemented and covered by the GNU General
Public License Version 2 (no later versions).

The API has been slightly extended (for example, I provide a uint32_read
function, and I extended the socket API to support IPv6) where I found
it necessary or beneficial in a specific project.

Many of the functions I implement here have since been placed in the
public domain, so there are other sources to get this code (except for
my extensions obviously).  The implementations here may not be as
portable as the original versions; I tend to focus on the Single Unix
Specification and not on some obsolete legacy systems found in the
basements of some vintage hardware clubs.

I also provide man pages for many functions, mostly extracted from Dan's
web documentation or documentation found in earlier versions of his
software.  For some reason, he abandoned man pages in favor of HTML
recently.

On July 4 2002, Dan also placed his DNS routines and supporting
low level functions in the public domain, so I copy them here instead of
reimplementing them.  http://online.securityfocus.com/archive/1/280642
has an online version of the bugtraq posting.

The author can be reached under felix-libowfat@fefe.de