9 # error The POSIX.1-1990 API has no C++ binding!
24 # error Never include this header more than once!
36 #if CFG_USE_POSIX_API >= 200809
37 # define _POSIX_C_SOURCE 200809L
38 #elif CFG_USE_POSIX_API == 200112
43 # define _POSIX_C_SOURCE 200112L
50 # define _POSIX_C_SOURCE 199506L
54 # if CFG_USE_POSIX_API >= 200809
60 # define _XOPEN_SOURCE 700
61 # elif CFG_USE_POSIX_API == 200112
67 # define _XOPEN_SOURCE 600
74 # define _XOPEN_SOURCE 500
82 #if defined(__hpux) && CFG_USE_XSI
83 # define _HPUX_ALT_XOPEN_SOCKET_API 1
86 #include <sys/types.h>
100 #define struct_posix_timespec struct timespec
102 #define posix_nanosleep nanosleep
105 # define posix_fsync fsync
107 int posix_fsync(
int);
114 #define POSIX_PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
115 #define POSIX_PTHREAD_COND_INITIALIZER PTHREAD_COND_INITIALIZER
116 #define POSIX_PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE
118 #define posix_pthread_t pthread_t
119 #define posix_pthread_mutex_t pthread_mutex_t
120 #define posix_pthread_cond_t pthread_cond_t
122 #define posix_pthread_create pthread_create
123 #define posix_pthread_cancel pthread_cancel
124 #define posix_pthread_setcancelstate pthread_setcancelstate
125 #define posix_pthread_join pthread_join
126 #define posix_pthread_self pthread_self
127 #define posix_pthread_equal pthread_equal
128 #define posix_pthread_sigmask pthread_sigmask
129 #define posix_pthread_cleanup_push pthread_cleanup_push
130 #define posix_pthread_cleanup_pop pthread_cleanup_pop
131 #define posix_pthread_mutex_lock pthread_mutex_lock
132 #define posix_pthread_mutex_trylock pthread_mutex_trylock
133 #define posix_pthread_mutex_unlock pthread_mutex_unlock
134 #define posix_pthread_cond_wait pthread_cond_wait
135 #define posix_pthread_cond_signal pthread_cond_signal
143 #define posix_popen popen
144 #define posix_pclose pclose
150 #if CFG_HDR_INTTYPES_H
151 # include <inttypes.h>
154 #define POSIX_INT_MAX INT_MAX
155 #define POSIX_UINT_MAX UINT_MAX
156 #define POSIX_LONG_MAX LONG_MAX
157 #define POSIX_ULONG_MAX ULONG_MAX
158 #define POSIX_SSIZE_MAX SSIZE_MAX
160 # define POSIX_SIZE_MAX SIZE_MAX
163 # define POSIX_SIZE_MAX ((size_t) POSIX_SSIZE_MAX * (size_t) 2)
171 extern char** environ;
172 #define posix_environ environ
175 #define POSIX_EXIT_SUCCESS EXIT_SUCCESS
176 #define POSIX_EXIT_FAILURE EXIT_FAILURE
182 #include <sys/utsname.h>
184 #define struct_posix_utsname struct utsname
186 #define posix_uname uname
192 #define POSIX_EACCES EACCES
193 #define POSIX_EAGAIN EAGAIN
194 #define POSIX_EBADF EBADF
195 #define POSIX_ECONNREFUSED ECONNREFUSED
196 #define POSIX_EEXIST EEXIST
197 #define POSIX_EINTR EINTR
198 #define POSIX_EINPROGRESS EINPROGRESS
199 #define POSIX_EINVAL EINVAL
200 #define POSIX_EIO EIO
201 #define POSIX_ENOENT ENOENT
202 #define POSIX_ENOMEM ENOMEM
203 #define POSIX_ENOPROTOOPT ENOPROTOOPT
204 #define POSIX_ENOSYS ENOSYS
205 #define POSIX_ENOTSOCK ENOTSOCK
206 #define POSIX_EOVERFLOW EOVERFLOW
208 #define posix_errno errno
216 #define posix_sig_atomic_t sig_atomic_t
218 #define struct_posix_sigaction struct sigaction
220 #define POSIX_SIGHUP SIGHUP
221 #define POSIX_SIGINT SIGINT
222 #define POSIX_SIGPIPE SIGPIPE
223 #define POSIX_SIGQUIT SIGQUIT
224 #define POSIX_SIGTERM SIGTERM
226 #define POSIX_SIG_DFL SIG_DFL
227 #define POSIX_SIG_IGN SIG_IGN
229 #define POSIX_SIG_BLOCK SIG_BLOCK
230 #define POSIX_SIG_SETMASK SIG_SETMASK
232 #define posix_sigset_t sigset_t
234 #define posix_kill kill
235 #define posix_sigemptyset sigemptyset
236 #define posix_sigaddset sigaddset
237 #define posix_sigaction sigaction
243 #include <sys/wait.h>
245 #define posix_pid_t pid_t
247 #define POSIX_WIFEXITED WIFEXITED
248 #define POSIX_WEXITSTATUS WEXITSTATUS
250 #define POSIX_WNOHANG WNOHANG
252 #define posix_fork fork
253 #define posix_execl execl
254 #define posix_execlp execlp
255 #define posix_waitpid waitpid
256 #define posix_getpid getpid
262 #define posix_time_t time_t
263 #define struct_posix_tm struct tm
265 #define posix_time time
267 #define posix_gmtime_r gmtime_r
268 #define posix_localtime_r localtime_r
271 #if CFG_USE_POSIX_API >= 200112 || CFG_USE_XSI
272 # define posix_strftime strftime
276 # include <sys/time.h>
278 # define posix_time_t time_t
279 # define posix_suseconds_t suseconds_t
280 # define struct_posix_timeval struct timeval
282 # define posix_suseconds_t long int
287 posix_suseconds_t tv_usec;
290 # define struct_posix_timeval struct posix_timeval
298 void* posix_malloc(
size_t);
299 void* posix_realloc(
void*,
size_t);
300 void posix_free(
void*);
302 # define posix_malloc malloc
303 # define posix_realloc realloc
304 # define posix_free free
312 # define posix_srandom srandom
313 # define posix_random random
315 void posix_srandom(
unsigned int);
316 long int posix_random(
void);
323 #include <sys/stat.h>
328 #define posix_off_t off_t
330 #define POSIX_SEEK_SET SEEK_SET
332 #define POSIX_FD_CLOEXEC FD_CLOEXEC
334 #define POSIX_O_NONBLOCK O_NONBLOCK
335 #define POSIX_O_CREAT O_CREAT
336 #define POSIX_O_TRUNC O_TRUNC
337 #define POSIX_O_RDONLY O_RDONLY
338 #define POSIX_O_WRONLY O_WRONLY
339 #define POSIX_O_RDWR O_RDWR
340 #define POSIX_O_EXCL O_EXCL
342 #define POSIX_S_IRWXU S_IRWXU
343 #define POSIX_S_IRWXG S_IRWXG
344 #define POSIX_S_IRWXO S_IRWXO
345 #define POSIX_S_IRUSR S_IRUSR
346 #define POSIX_S_IWUSR S_IWUSR
347 #define POSIX_S_IXUSR S_IXUSR
348 #define POSIX_S_IRGRP S_IRGRP
349 #define POSIX_S_IWGRP S_IWGRP
350 #define POSIX_S_IROTH S_IROTH
351 #define POSIX_S_IWOTH S_IWOTH
353 #define POSIX_F_GETFL F_GETFL
354 #define POSIX_F_SETFL F_SETFL
355 #define POSIX_F_WRLCK F_WRLCK
356 #define POSIX_F_SETLK F_SETLK
357 #define POSIX_F_SETFD F_SETFD
359 #define POSIX_STDIN_FILENO STDIN_FILENO
360 #define POSIX_STDOUT_FILENO STDOUT_FILENO
362 #define POSIX_DIR DIR
364 #define POSIX_S_ISREG S_ISREG
365 #define POSIX_S_ISDIR S_ISDIR
367 #define posix_mode_t mode_t
368 #define struct_posix_flock struct flock
369 #define struct_posix_stat struct stat
370 #define struct_posix_dirent struct dirent
372 #define posix_dup2 dup2
373 #define posix_pipe pipe
374 #define posix_unlink unlink
375 #define posix_rename rename
376 #define posix_open open
377 #define posix_fdopen fdopen
378 #define posix_close close
379 #define posix_lseek lseek
380 #define posix_read read
381 #define posix_write write
382 #define posix_fcntl fcntl
383 #define posix_fgetc fgetc
384 #define posix_mkdir mkdir
385 #define posix_rmdir rmdir
386 #define posix_opendir opendir
387 #define posix_readdir readdir
388 #define posix_closedir closedir
389 #define posix_stat stat
391 #if CFG_USE_POSIX_API >= 200112 || CFG_USE_XSI
392 # define posix_ftruncate ftruncate
393 # define posix_lstat lstat
394 # define posix_symlink symlink
398 #if CFG_USE_POSIX_API >= 200809 || CFG_USE_XSI
399 # define posix_mkstemp mkstemp
401 int posix_mkstemp(
char*);
404 #if CFG_USE_POSIX_API >= 200809
405 # define posix_scandir scandir
407 int posix_scandir(
const char*, struct_posix_dirent***,
408 int (*sel)(struct_posix_dirent*),
409 int (*compar)(
const struct_posix_dirent**,
410 const struct_posix_dirent**));
417 # define POSIX_PC_NAME_MAX _PC_NAME_MAX
418 # define POSIX_PC_PATH_MAX _PC_PATH_MAX
420 # define posix_pathconf pathconf
426 #if CFG_USE_POSIX_API >= 200112 || CFG_USE_XSI
429 # define POSIX_LC_ALL LC_ALL
430 # define POSIX_LC_CTYPE LC_CTYPE
431 # define POSIX_LC_MESSAGES LC_MESSAGES
433 # define posix_setlocale setlocale
436 #if CFG_USE_POSIX_API >= 200809 || CFG_USE_XSI
437 # include <nl_types.h>
438 # include <langinfo.h>
440 # define POSIX_NL_MSGMAX NL_MSGMAX
441 # define POSIX_NL_CAT_LOCALE NL_CAT_LOCALE
443 # define posix_nl_catd nl_catd
445 # define posix_nl_langinfo nl_langinfo
446 # define posix_catopen catopen
447 # define posix_catgets catgets
448 # define posix_catclose catclose
452 #if CFG_USE_POSIX_API >= 200809
453 # include <strings.h>
455 # define POSIX_LC_CTYPE_MASK LC_CTYPE_MASK
457 # define posix_locale_t locale_t
459 # define posix_newlocale newlocale
460 # define posix_freelocale freelocale
461 # define posix_strcasecmp_l strcasecmp_l
462 # define posix_strncasecmp_l strncasecmp_l
464 # define POSIX_LC_CTYPE_MASK 0
466 typedef int posix_locale_t;
468 posix_locale_t posix_newlocale(
int,
const char*, posix_locale_t);
469 void posix_freelocale(posix_locale_t);
470 int posix_strcasecmp_l(
const char*,
const char*, posix_locale_t);
471 int posix_strncasecmp_l(
const char*,
const char*,
size_t, posix_locale_t);
482 #if CFG_USE_POSIX_API >= 200112 || CFG_USE_XSI || CFG_USE_IP6
483 # include <netinet/in.h>
484 # include <arpa/inet.h>
486 # define POSIX_AF_UNSPEC AF_UNSPEC
487 # define POSIX_AF_INET AF_INET
489 # define POSIX_AF_INET6 AF_INET6
492 # define POSIX_MSG_PEEK MSG_PEEK
494 # define posix_ssize_t ssize_t
497 # if CFG_HDR_INTTYPES_H
498 # include <inttypes.h>
499 typedef uint16_t posix_in_port_t;
500 typedef uint32_t posix_in_addr_t;
502 typedef CFG_UINT16_TYPE posix_in_port_t;
503 typedef CFG_UINT32_TYPE posix_in_addr_t;
506 # define struct_posix_in_addr struct in_addr
507 # define struct_posix_sockaddr_in struct sockaddr_in
510 # define struct_posix_in6_addr struct in6_addr
511 # define struct_posix_sockaddr_in6 struct sockaddr_in6
515 # define posix_htons htons
516 # define posix_htonl htonl
517 # define posix_ntohs ntohs
518 # define posix_ntohl ntohl
520 # define posix_inet_addr inet_addr
521 # if CFG_USE_POSIX_API >= 200112
522 # define posix_inet_pton inet_pton
524 int posix_inet_pton(
int,
const char*,
void*);
527 # include <sys/socket.h>
529 # define posix_sa_family_t sa_family_t
530 # define posix_socklen_t socklen_t
536 # define struct_posix_sockaddr_storage struct sockaddr_storage
537 # define struct_posix_sockaddr struct sockaddr
539 # define struct_posix_servent struct servent
540 # define struct_posix_hostent struct hostent
542 # define posix_getservbyname getservbyname
544 # if CFG_USE_POSIX_API >= 200809
551 # define posix_gethostbyname gethostbyname
554 # define posix_socket socket
556 # define POSIX_SOCK_STREAM SOCK_STREAM
558 # define posix_connect connect
560 # define POSIX_SOL_SOCKET SOL_SOCKET
562 # define POSIX_SO_ERROR SO_ERROR
563 # define POSIX_SO_RCVTIMEO SO_RCVTIMEO
564 # define POSIX_SO_SNDTIMEO SO_SNDTIMEO
566 # define posix_getsockopt getsockopt
567 # define posix_setsockopt setsockopt
569 # define posix_send send
570 # define posix_recv recv
574 # define POSIX_POLLIN POLLIN
575 # define POSIX_POLLOUT POLLOUT
576 # define POSIX_POLLERR POLLERR
578 # define struct_posix_pollfd struct pollfd
580 # define posix_poll poll
583 # define BSD_FOR_POSIX
602 #if CFG_USE_POSIX_API >= 200112 || CFG_USE_IP6
603 # define POSIX_AI_ADDRCONFIG AI_ADDRCONFIG
605 # define POSIX_EAI_AGAIN EAI_AGAIN
606 # define POSIX_EAI_BADFLAGS EAI_BADFLAGS
607 # define POSIX_EAI_FAIL EAI_FAIL
608 # define POSIX_EAI_FAMILY EAI_FAMILY
609 # define POSIX_EAI_MEMORY EAI_MEMORY
610 # define POSIX_EAI_NONAME EAI_NONAME
611 # define POSIX_EAI_OVERFLOW EAI_OVERFLOW
612 # define POSIX_EAI_SERVICE EAI_SERVICE
613 # define POSIX_EAI_SOCKTYPE EAI_SOCKTYPE
614 # define POSIX_EAI_SYSTEM EAI_SYSTEM
616 # define struct_posix_addrinfo struct addrinfo
618 # define posix_freeaddrinfo freeaddrinfo
619 # define posix_getaddrinfo getaddrinfo
620 # define posix_gai_strerror gai_strerror
622 # define POSIX_AI_ADDRCONFIG 0x0001
624 # define POSIX_EAI_AGAIN -1
625 # define POSIX_EAI_BADFLAGS -2
626 # define POSIX_EAI_FAIL -3
627 # define POSIX_EAI_FAMILY -4
628 # define POSIX_EAI_MEMORY -5
629 # define POSIX_EAI_NONAME -6
630 # define POSIX_EAI_OVERFLOW -7
631 # define POSIX_EAI_SERVICE -8
632 # define POSIX_EAI_SOCKTYPE -9
633 # define POSIX_EAI_SYSTEM -10
635 struct posix_addrinfo
641 posix_socklen_t ai_addrlen;
642 struct_posix_sockaddr* ai_addr;
644 struct posix_addrinfo* ai_next;
647 # define struct_posix_addrinfo struct posix_addrinfo
649 void posix_freeaddrinfo(struct_posix_addrinfo*);
650 int posix_getaddrinfo(
const char*,
const char*,
const struct_posix_addrinfo*,
651 struct_posix_addrinfo**);
652 const char* posix_gai_strerror(
int);
667 #if CFG_USE_POSIX_API >= 200112
668 # define posix_snprintf snprintf
670 int posix_snprintf(
char*,
size_t,
const char*, ...);
674 #if CFG_USE_POSIX_API >= 200809
675 # define posix_getline getline
677 posix_ssize_t posix_getline(
char**,
size_t*, FILE*);
684 #if CFG_USE_POSIX_API >= 200112 || CFG_USE_XSI || CFG_USE_CLB
687 # define POSIX_REG_EXTENDED REG_EXTENDED
688 # define POSIX_REG_ICASE REG_ICASE
689 # define POSIX_REG_NOSUB REG_NOSUB
690 # define POSIX_REG_NEWLINE REG_NEWLINE
692 # define posix_regex_t regex_t
694 # define posix_regcomp regcomp
695 # define posix_regerror regerror
696 # define posix_regexec regexec
697 # define posix_regfree regfree