| 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 other subsystems |
| (such as LIBUTIL). |
| |
| The following functions are guaranteed: |
| |
| ftruncate |
| strlcpy |
| strlcat |
| mktime |
| rename |
| initgroups |
| memmove |
| strdup |
| setlinebuf |
| vsyslog |
| timegm |
| setenv |
| unsetenv |
| strndup |
| strnlen |
| waitpid |
| seteuid |
| setegid |
| asprintf |
| snprintf |
| vasprintf |
| vsnprintf |
| opendir |
| readdir |
| telldir |
| seekdir |
| closedir |
| dlopen |
| dlclose |
| dlsym |
| dlerror |
| chroot |
| bzero |
| strerror |
| errno |
| mkdtemp |
| mkstemp (a secure one!) |
| pread |
| pwrite |
| chown |
| lchown |
| getpass |
| readline (the library) |
| inet_ntoa |
| inet_ntop |
| inet_pton |
| inet_aton |
| strtoll |
| strtoull |
| socketpair |
| strptime |
| getaddrinfo |
| freeaddrinfo |
| getnameinfo |
| gai_strerror |
| getifaddrs |
| freeifaddrs |
| utime |
| utimes |
| dup2 |
| link |
| readlink |
| symlink |
| realpath |
| |
| Types: |
| bool |
| socklen_t |
| uint_t |
| uint{8,16,32,64}_t |
| int{8,16,32,64}_t |
| intptr_t |
| sig_atomic_t |
| |
| Constants: |
| PATH_NAME_MAX |
| UINT{16,32,64}_MAX |
| INT32_MAX |
| RTLD_LAZY |
| HOST_NAME_MAX |
| UINT16_MAX |
| UINT32_MAX |
| UINT64_MAX |
| CHAR_BIT |
| |
| Macros: |
| va_copy |
| __FUNCTION__ |
| __FILE__ |
| __LINE__ |
| __LINESTR__ |
| __location__ |
| __STRING |
| __STRINGSTRING |
| MIN |
| MAX |
| QSORT_CAST |
| ZERO_STRUCT |
| ZERO_STRUCTP |
| ZERO_STRUCTPN |
| ZERO_ARRAY |
| ARRAY_SIZE |
| PTR_DIFF |
| |
| Headers: |
| stdint.h |
| stdbool.h |
| |
| Optional C keywords: |
| volatile |
| |
| Prerequisites: |
| memset (for bzero) |
| syslog (for vsyslog) |
| mktemp (for mkstemp and mkdtemp) |