begin directory abstraction
begin using posix to make file accesses atomic
use posix for file access if available
posix: sendfile is used for delivering files
the portable (non-posix) implementation can be selected with --portable at runtime