This subsystem ensures that we can always use a certain core set of functions and types, that are either provided by the OS or by replacement functions / definitions in this subsystem. The aim is to try to stick to POSIX functions in here as much as possible. Convenience functions that are available on no platform at all belong in different subsystems (such as LIBUTIL). The following functions are guarenteed: ftruncate strlcpy strlcat mktime rename innetgr initgroups memmove strdup inet_ntoa setlinebuf vsyslog timegm setenv strtoull strtoll strndup strnlen waitpid seteuid setegid asprintf snprintf vasprintf vsnprintf opendir readdir telldir seekdir closedir dlopen dlclose dlsym dlerror chroot bzero strerror errno mkstemp (a secure one!) pread pwrite getpass readline (the library) Types: socklen_t u_int{8,16,32}_t uint_t uint{8,16,32,64}_t int{8,16,32,64}_t Constants: PATH_NAME_MAX UINT16_MAX UINT32_MAX UINT64_MAX Prerequisites: memset (for bzero) syslog (for vsyslog) setnetgrent, getnetgrent, endnetgrent (for innetgr) mktemp (for mkstemp)