forked from Bananymous/banan-os
LibC: Add all of the missing POSIX definitions in unistd.h and limits.h
This commit is contained in:
parent
df7f245cf8
commit
91756c057e
|
@ -12,6 +12,7 @@
|
||||||
#error
|
#error
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef PAGE_SIZE
|
||||||
#define PAGE_SIZE ((uintptr_t)4096)
|
#define PAGE_SIZE ((uintptr_t)4096)
|
||||||
#define PAGE_SIZE_SHIFT 12
|
#define PAGE_SIZE_SHIFT 12
|
||||||
#define PAGE_ADDR_MASK (~(uintptr_t)0xFFF)
|
#define PAGE_ADDR_MASK (~(uintptr_t)0xFFF)
|
||||||
|
|
|
@ -7,67 +7,140 @@
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
#define _POSIX_AIO_LISTIO_MAX 2
|
// Maximum Values
|
||||||
#define _POSIX_AIO_MAX 1
|
|
||||||
#define _POSIX_ARG_MAX 4096
|
#define _POSIX_CLOCKRES_MIN 20000000
|
||||||
#define _POSIX_CHILD_MAX 25
|
|
||||||
#define _POSIX_DELAYTIMER_MAX 32
|
|
||||||
#define _POSIX_HOST_NAME_MAX 255
|
// Minimum Values
|
||||||
#define _POSIX_LINK_MAX 8
|
|
||||||
#define _POSIX_LOGIN_NAME_MAX 9
|
#define _POSIX_AIO_LISTIO_MAX 2
|
||||||
#define _POSIX_MAX_CANON 255
|
#define _POSIX_AIO_MAX 1
|
||||||
#define _POSIX_MAX_INPUT 255
|
#define _POSIX_ARG_MAX 4096
|
||||||
#define _POSIX_MQ_OPEN_MAX 8
|
#define _POSIX_CHILD_MAX 25
|
||||||
#define _POSIX_MQ_PRIO_MAX 32
|
#define _POSIX_DELAYTIMER_MAX 32
|
||||||
#define _POSIX_NAME_MAX 14
|
#define _POSIX_HOST_NAME_MAX 255
|
||||||
#define _POSIX_NGROUPS_MAX 8
|
#define _POSIX_LINK_MAX 8
|
||||||
#define _POSIX_OPEN_MAX 20
|
#define _POSIX_LOGIN_NAME_MAX 9
|
||||||
#define _POSIX_PATH_MAX 256
|
#define _POSIX_MAX_CANON 255
|
||||||
#define _POSIX_PIPE_BUF 512
|
#define _POSIX_MAX_INPUT 255
|
||||||
#define _POSIX_RE_DUP_MAX 255
|
#define _POSIX_MQ_OPEN_MAX 8
|
||||||
#define _POSIX_RTSIG_MAX 8
|
#define _POSIX_MQ_PRIO_MAX 32
|
||||||
#define _POSIX_SEM_NSEMS_MAX 256
|
#define _POSIX_NAME_MAX 14
|
||||||
#define _POSIX_SEM_VALUE_MAX 32767
|
#define _POSIX_NGROUPS_MAX 8
|
||||||
#define _POSIX_SIGQUEUE_MAX 32
|
#define _POSIX_OPEN_MAX 20
|
||||||
#define _POSIX_SSIZE_MAX 32767
|
#define _POSIX_PATH_MAX 256
|
||||||
#define _POSIX_SS_REPL_MAX 4
|
#define _POSIX_PIPE_BUF 512
|
||||||
#define _POSIX_STREAM_MAX 8
|
#define _POSIX_RE_DUP_MAX 255
|
||||||
#define _POSIX_SYMLINK_MAX 255
|
#define _POSIX_RTSIG_MAX 8
|
||||||
#define _POSIX_SYMLOOP_MAX 8
|
#define _POSIX_SEM_NSEMS_MAX 256
|
||||||
|
#define _POSIX_SEM_VALUE_MAX 32767
|
||||||
|
#define _POSIX_SIGQUEUE_MAX 32
|
||||||
|
#define _POSIX_SSIZE_MAX 32767
|
||||||
|
#define _POSIX_SS_REPL_MAX 4
|
||||||
|
#define _POSIX_STREAM_MAX 8
|
||||||
|
#define _POSIX_SYMLINK_MAX 255
|
||||||
|
#define _POSIX_SYMLOOP_MAX 8
|
||||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||||
#define _POSIX_THREAD_KEYS_MAX 128
|
#define _POSIX_THREAD_KEYS_MAX 128
|
||||||
#define _POSIX_THREAD_THREADS_MAX 64
|
#define _POSIX_THREAD_THREADS_MAX 64
|
||||||
#define _POSIX_TIMER_MAX 32
|
#define _POSIX_TIMER_MAX 32
|
||||||
#define _POSIX_TRACE_EVENT_NAME_MAX 30
|
#define _POSIX_TRACE_EVENT_NAME_MAX 30
|
||||||
#define _POSIX_TRACE_NAME_MAX 8
|
#define _POSIX_TRACE_NAME_MAX 8
|
||||||
#define _POSIX_TRACE_SYS_MAX 8
|
#define _POSIX_TRACE_SYS_MAX 8
|
||||||
#define _POSIX_TRACE_USER_EVENT_MAX 32
|
#define _POSIX_TRACE_USER_EVENT_MAX 32
|
||||||
#define _POSIX_TTY_NAME_MAX 9
|
#define _POSIX_TTY_NAME_MAX 9
|
||||||
#define _POSIX_TZNAME_MAX 6
|
#define _POSIX_TZNAME_MAX 6
|
||||||
#define _POSIX2_BC_BASE_MAX 99
|
#define _POSIX2_BC_BASE_MAX 99
|
||||||
#define _POSIX2_BC_DIM_MAX 2048
|
#define _POSIX2_BC_DIM_MAX 2048
|
||||||
#define _POSIX2_BC_SCALE_MAX 99
|
#define _POSIX2_BC_SCALE_MAX 99
|
||||||
#define _POSIX2_BC_STRING_MAX 1000
|
#define _POSIX2_BC_STRING_MAX 1000
|
||||||
#define _POSIX2_CHARCLASS_NAME_MAX 14
|
#define _POSIX2_CHARCLASS_NAME_MAX 14
|
||||||
#define _POSIX2_COLL_WEIGHTS_MAX 2
|
#define _POSIX2_COLL_WEIGHTS_MAX 2
|
||||||
#define _POSIX2_EXPR_NEST_MAX 32
|
#define _POSIX2_EXPR_NEST_MAX 32
|
||||||
#define _POSIX2_LINE_MAX 2048
|
#define _POSIX2_LINE_MAX 2048
|
||||||
#define _POSIX2_RE_DUP_MAX 255
|
#define _POSIX2_RE_DUP_MAX 255
|
||||||
#define _XOPEN_IOV_MAX 16
|
#define _XOPEN_IOV_MAX 16
|
||||||
#define _XOPEN_NAME_MAX 255
|
#define _XOPEN_NAME_MAX 255
|
||||||
#define _XOPEN_PATH_MAX 1024
|
#define _XOPEN_PATH_MAX 1024
|
||||||
|
|
||||||
#define ARG_MAX _POSIX_ARG_MAX
|
|
||||||
#define OPEN_MAX 64
|
|
||||||
#define NAME_MAX 255
|
|
||||||
#define PATH_MAX 256
|
|
||||||
#define PASS_MAX 256
|
|
||||||
#define LOGIN_NAME_MAX 256
|
|
||||||
#define HOST_NAME_MAX 255
|
|
||||||
#define TTY_NAME_MAX PATH_MAX
|
|
||||||
|
|
||||||
#define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX
|
// Runtime Invariant Values (Possibly Indeterminate)
|
||||||
|
|
||||||
|
#define AIO_LISTIO_MAX _POSIX_AIO_LISTIO_MAX
|
||||||
|
#define AIO_MAX _POSIX_AIO_MAX
|
||||||
|
#define AIO_PRIO_DELTA_MAX 0
|
||||||
|
#define ARG_MAX _POSIX_ARG_MAX
|
||||||
|
#define ATEXIT_MAX 128
|
||||||
|
#define CHILD_MAX _POSIX_CHILD_MAX
|
||||||
|
#define DELAYTIMER_MAX _POSIX_DELAYTIMER_MAX
|
||||||
|
#define HOST_NAME_MAX 255
|
||||||
|
#define IOV_MAX _XOPEN_IOV_MAX
|
||||||
|
#define LOGIN_NAME_MAX 256
|
||||||
|
#define MQ_OPEN_MAX _POSIX_MQ_OPEN_MAX
|
||||||
|
#define MQ_PRIO_MAX _POSIX_MQ_PRIO_MAX
|
||||||
|
#define OPEN_MAX 64
|
||||||
|
#define PAGESIZE PAGE_SIZE
|
||||||
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||||
|
#define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX
|
||||||
|
#define PTHREAD_STACK_MIN PAGE_SIZE
|
||||||
|
#define PTHREAD_THREADS_MAX _POSIX_THREAD_THREADS_MAX
|
||||||
|
#define RTSIG_MAX _POSIX_RTSIG_MAX
|
||||||
|
#define SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX
|
||||||
|
#define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX
|
||||||
|
#define SIGQUEUE_MAX _POSIX_SIGQUEUE_MAX
|
||||||
|
#define SS_REPL_MAX _POSIX_SS_REPL_MAX
|
||||||
|
#define STREAM_MAX _POSIX_STREAM_MAX
|
||||||
|
#define SYMLOOP_MAX _POSIX_SYMLOOP_MAX
|
||||||
|
#define TIMER_MAX _POSIX_TIMER_MAX
|
||||||
|
#define TRACE_EVENT_NAME_MAX _POSIX_TRACE_EVENT_NAME_MAX
|
||||||
|
#define TRACE_NAME_MAX _POSIX_TRACE_NAME_MAX
|
||||||
|
#define TRACE_SYS_MAX _POSIX_TRACE_SYS_MAX
|
||||||
|
#define TRACE_USER_EVENT_MAX _POSIX_TRACE_USER_EVENT_MAX
|
||||||
|
#define TTY_NAME_MAX PATH_MAX
|
||||||
|
#define TZNAME_MAX _POSIX_TZNAME_MAX
|
||||||
|
|
||||||
|
#ifndef PAGE_SIZE
|
||||||
|
#define PAGE_SIZE 4096
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Pathname Variable Values
|
||||||
|
|
||||||
|
#define FILESIZEBITS 32
|
||||||
|
#define LINK_MAX _POSIX_LINK_MAX
|
||||||
|
#define MAX_CANON _POSIX_MAX_CANON
|
||||||
|
#define MAX_INPUT _POSIX_MAX_INPUT
|
||||||
|
#define NAME_MAX 255
|
||||||
|
#define PATH_MAX _POSIX_PATH_MAX
|
||||||
|
#define PIPE_BUF PAGE_SIZE
|
||||||
|
//#define POSIX_ALLOC_SIZE_MIN
|
||||||
|
//#define POSIX_REC_INCR_XFER_SIZE
|
||||||
|
//#define POSIX_REC_MAX_XFER_SIZE
|
||||||
|
//#define POSIX_REC_MIN_XFER_SIZE
|
||||||
|
//#define POSIX_REC_XFER_ALIGN
|
||||||
|
#define SYMLINK_MAX _POSIX_SYMLINK_MAX
|
||||||
|
|
||||||
|
|
||||||
|
// Runtime Increasable Values
|
||||||
|
|
||||||
|
#define BC_BASE_MAX _POSIX2_BC_BASE_MAX
|
||||||
|
#define BC_DIM_MAX _POSIX2_BC_DIM_MAX
|
||||||
|
#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
|
||||||
|
#define BC_STRING_MAX _POSIX2_BC_STRING_MAX
|
||||||
|
#define CHARCLASS_NAME_MAX _POSIX2_CHARCLASS_NAME_MAX
|
||||||
|
#define COLL_WEIGHTS_MAX _POSIX2_COLL_WEIGHTS_MAX
|
||||||
|
#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
|
||||||
|
#define LINE_MAX _POSIX2_LINE_MAX
|
||||||
|
#define NGROUPS_MAX _POSIX_NGROUPS_MAX
|
||||||
|
#define RE_DUP_MAX _POSIX_RE_DUP_MAX
|
||||||
|
|
||||||
|
|
||||||
|
// Legacy things
|
||||||
|
|
||||||
|
#define PASS_MAX 256
|
||||||
|
|
||||||
|
|
||||||
|
// Numerical Limits
|
||||||
|
|
||||||
#define CHAR_MAX SCHAR_MAX
|
#define CHAR_MAX SCHAR_MAX
|
||||||
#define CHAR_MIN SCHAR_MIN
|
#define CHAR_MIN SCHAR_MIN
|
||||||
|
|
|
@ -7,89 +7,109 @@
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
#define _POSIX_VERSION 200809L
|
#define _POSIX_VERSION 200809L
|
||||||
#define _POSIX2_VERSION -1
|
#define _POSIX2_VERSION -1
|
||||||
#define _XOPEN_VERSION 700
|
#define _XOPEN_VERSION 700
|
||||||
|
|
||||||
#define _POSIX_ADVISORY_INFO -1
|
// -1 not supported for compilation
|
||||||
#define _POSIX_ASYNCHRONOUS_IO -1
|
// 0 might or might not be supported during runtime
|
||||||
#define _POSIX_BARRIERS -1
|
// >0 always supported
|
||||||
#define _POSIX_CHOWN_RESTRICTED -1
|
// MISSING / UNSUPPORTED
|
||||||
#define _POSIX_CLOCK_SELECTION -1
|
#define _POSIX_ADVISORY_INFO -1 /* posix_{fadvice,fallocate,memalign,madvice} */
|
||||||
#define _POSIX_CPUTIME -1
|
#define _POSIX_ASYNCHRONOUS_IO -1 /* aio_{cancel,error,fsync,read,return,suspend,write,listio} */
|
||||||
#define _POSIX_FSYNC -1
|
#define _POSIX_BARRIERS 200809L
|
||||||
#define _POSIX_IPV6 -1
|
#define _POSIX_CHOWN_RESTRICTED 200809L
|
||||||
#define _POSIX_JOB_CONTROL -1
|
#define _POSIX_CLOCK_SELECTION 0 /* pthread_condattr_{getclock,setclock}, clock_nanosleep */
|
||||||
#define _POSIX_MAPPED_FILES -1
|
#define _POSIX_CPUTIME 0 /* working CLOCK_CPUTIME */
|
||||||
#define _POSIX_MEMLOCK -1
|
#define _POSIX_FSYNC 200809L
|
||||||
#define _POSIX_MEMLOCK_RANGE -1
|
#define _POSIX_IPV6 0 /* IPv6 :D */
|
||||||
#define _POSIX_MEMORY_PROTECTION -1
|
#define _POSIX_JOB_CONTROL 200809L /* tcdrain, tcsendbreak */
|
||||||
#define _POSIX_MESSAGE_PASSING -1
|
#define _POSIX_MAPPED_FILES 200809L
|
||||||
#define _POSIX_MONOTONIC_CLOCK -1
|
#define _POSIX_MEMLOCK -1 /* mlockall, munlockall */
|
||||||
#define _POSIX_NO_TRUNC -1
|
#define _POSIX_MEMLOCK_RANGE -1 /* mlock, munlock */
|
||||||
#define _POSIX_PRIORITIZED_IO -1
|
#define _POSIX_MEMORY_PROTECTION -1 /* mprotect */
|
||||||
#define _POSIX_PRIORITY_SCHEDULING -1
|
#define _POSIX_MESSAGE_PASSING -1 /* mq_{close,getattr,notify,open,receive,send,sendattr,unlink} */
|
||||||
#define _POSIX_RAW_SOCKETS -1
|
#define _POSIX_MONOTONIC_CLOCK 200809L
|
||||||
#define _POSIX_READER_WRITER_LOCKS -1
|
#define _POSIX_NO_TRUNC 200809L
|
||||||
#define _POSIX_REALTIME_SIGNALS -1
|
#define _POSIX_PRIORITIZED_IO -1 /* aio_{read,write} */
|
||||||
#define _POSIX_REGEXP -1
|
#define _POSIX_PRIORITY_SCHEDULING -1 /* sched_{get_priority_min,get_priority_max,getparam,getscheduler,rr_get_interval,setparam,setscheduler} */
|
||||||
#define _POSIX_SAVED_IDS -1
|
#define _POSIX_RAW_SOCKETS 0 /* raw sockets :D */
|
||||||
#define _POSIX_SEMAPHORES -1
|
#define _POSIX_READER_WRITER_LOCKS 200809L
|
||||||
#define _POSIX_SHARED_MEMORY_OBJECTS -1
|
#define _POSIX_REALTIME_SIGNALS -1 /* siq{queue,timedwait,waitinfo} */
|
||||||
#define _POSIX_SHELL -1
|
#define _POSIX_REGEXP -1 /* reg{comp,error,exec,free} */
|
||||||
#define _POSIX_SPAWN -1
|
#define _POSIX_SAVED_IDS 200809L
|
||||||
#define _POSIX_SPIN_LOCKS -1
|
#define _POSIX_SEMAPHORES -1 /* sem_{close,destroy,getvalue,init,open,post,trywait,unlink,wait} */
|
||||||
#define _POSIX_SPORADIC_SERVER -1
|
#define _POSIX_SHARED_MEMORY_OBJECTS -1 /* shm_{open,unlink} */
|
||||||
#define _POSIX_SYNCHRONIZED_IO xx
|
#define _POSIX_SHELL 200809L
|
||||||
#define _POSIX_THREAD_ATTR_STACKADDR -1
|
#define _POSIX_SPAWN -1 /* posix_spawn* */
|
||||||
#define _POSIX_THREAD_ATTR_STACKSIZE -1
|
#define _POSIX_SPIN_LOCKS 200809L
|
||||||
#define _POSIX_THREAD_CPUTIME -1
|
#define _POSIX_SPORADIC_SERVER -1 /* sched_{setparam,setscheduler} with SCHED_SPORADIC */
|
||||||
#define _POSIX_THREAD_PRIO_INHERIT -1
|
#define _POSIX_SYNCHRONIZED_IO 200809L
|
||||||
#define _POSIX_THREAD_PRIO_PROTECT -1
|
#define _POSIX_THREAD_ATTR_STACKADDR 0 /* pthread_attr_{get,set}stack{,addr} */
|
||||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING -1
|
#define _POSIX_THREAD_ATTR_STACKSIZE 0 /* pthread_attr_{get,set}stack{,size} */
|
||||||
#define _POSIX_THREAD_PROCESS_SHARED -1
|
#define _POSIX_THREAD_CPUTIME -1 /* pthread_getcpuclockid, clock_{getres,gettime,settime,create} for thread CPU time */
|
||||||
#define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1
|
#define _POSIX_THREAD_PRIO_INHERIT -1 /* pthread_mutexattr_{get,set}protocol */
|
||||||
#define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
|
#define _POSIX_THREAD_PRIO_PROTECT -1 /* pthread_mutex{,attr}_{get,set}prioceiling, pthread_mutexattr_{get,set}protocol */
|
||||||
#define _POSIX_THREAD_SAFE_FUNCTIONS -1
|
#define _POSIX_THREAD_PRIORITY_SCHEDULING -1 /* pthread_attr_{get,set}{inheritsched,schedpolicy,scope}, pthread_{get,set}schedparam, pthread_setschedprio */
|
||||||
#define _POSIX_THREAD_SPORADIC_SERVER -1
|
#define _POSIX_THREAD_PROCESS_SHARED 200809L
|
||||||
#define _POSIX_THREADS -1
|
#define _POSIX_THREAD_ROBUST_PRIO_INHERIT 0 /* robust mutexes */
|
||||||
#define _POSIX_TIMEOUTS -1
|
#define _POSIX_THREAD_ROBUST_PRIO_PROTECT 0 /* robust mutexes */
|
||||||
#define _POSIX_TIMERS -1
|
#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L /* some *_r functions */
|
||||||
#define _POSIX_TRACE -1
|
#define _POSIX_THREAD_SPORADIC_SERVER -1
|
||||||
#define _POSIX_TRACE_EVENT_FILTER -1
|
#define _POSIX_THREADS 200809L
|
||||||
#define _POSIX_TRACE_INHERIT -1
|
#define _POSIX_TIMEOUTS -1 /* mq_timed{receive,send}, sem_timedwait, posix_trace_timedgetnext_event */
|
||||||
#define _POSIX_TRACE_LOG -1
|
#define _POSIX_TIMERS -1 /* timer_{create,delete,gettime,getoverrun,settime} */
|
||||||
#define _POSIX_TYPED_MEMORY_OBJECTS -1
|
#define _POSIX_TRACE -1 /* posix_trace_* */
|
||||||
#define _POSIX_V6_ILP32_OFF32 -1
|
#define _POSIX_TRACE_EVENT_FILTER -1 /* posix_trace_* */
|
||||||
#define _POSIX_V6_ILP32_OFFBIG -1
|
#define _POSIX_TRACE_INHERIT -1 /* posix_trace_* */
|
||||||
#define _POSIX_V6_LP64_OFF64 -1
|
#define _POSIX_TRACE_LOG -1 /* posix_trace_* */
|
||||||
#define _POSIX_V6_LPBIG_OFFBIG -1
|
#define _POSIX_TYPED_MEMORY_OBJECTS -1 /* posix_mem_offset, posix_typed_mem_{get_info,open} */
|
||||||
#define _POSIX_V7_ILP32_OFF32 -1
|
|
||||||
#define _POSIX_V7_ILP32_OFFBIG -1
|
#define _POSIX2_C_BIND 200809L
|
||||||
#define _POSIX_V7_LP64_OFF64 -1
|
#define _POSIX2_C_DEV -1 /* c99, lex, yacc */
|
||||||
#define _POSIX_V7_LPBIG_OFFBIG -1
|
#define _POSIX2_CHAR_TERM 200809L
|
||||||
#define _POSIX2_C_BIND -1
|
#define _POSIX2_FORT_DEV -1 /* fortran stuff */
|
||||||
#define _POSIX2_C_DEV -1
|
#define _POSIX2_FORT_RUN -1 /* fortran stuff */
|
||||||
#define _POSIX2_CHAR_TERM -1
|
#define _POSIX2_LOCALEDEF -1 /* localedef */
|
||||||
#define _POSIX2_FORT_DEV -1
|
#define _POSIX2_PBS -1 /* batch stuff */
|
||||||
#define _POSIX2_FORT_RUN -1
|
#define _POSIX2_PBS_ACCOUNTING -1 /* batch stuff */
|
||||||
#define _POSIX2_LOCALEDEF -1
|
#define _POSIX2_PBS_CHECKPOINT -1 /* batch stuff */
|
||||||
#define _POSIX2_PBS -1
|
#define _POSIX2_PBS_LOCATE -1 /* batch stuff */
|
||||||
#define _POSIX2_PBS_ACCOUNTING -1
|
#define _POSIX2_PBS_MESSAGE -1 /* batch stuff */
|
||||||
#define _POSIX2_PBS_CHECKPOINT -1
|
#define _POSIX2_PBS_TRACK -1 /* batch stuff */
|
||||||
#define _POSIX2_PBS_LOCATE -1
|
#define _POSIX2_SW_DEV -1 /* ar, make, nm, strip */
|
||||||
#define _POSIX2_PBS_MESSAGE -1
|
#define _POSIX2_UPE -1 /* bg, ex, fc, fg, jobs, more, talk, vi */
|
||||||
#define _POSIX2_PBS_TRACK -1
|
|
||||||
#define _POSIX2_SW_DEV -1
|
#define _XOPEN_CRYPT -1 /* crypt, encrypt, setkey */
|
||||||
#define _POSIX2_UPE -1
|
#define _XOPEN_ENH_I18N -1
|
||||||
#define _XOPEN_CRYPT -1
|
#define _XOPEN_REALTIME -1
|
||||||
#define _XOPEN_ENH_I18N -1
|
|
||||||
#define _XOPEN_REALTIME -1
|
|
||||||
#define _XOPEN_REALTIME_THREADS -1
|
#define _XOPEN_REALTIME_THREADS -1
|
||||||
#define _XOPEN_SHM -1
|
#define _XOPEN_SHM -1
|
||||||
#define _XOPEN_STREAMS -1
|
#define _XOPEN_STREAMS -1
|
||||||
#define _XOPEN_UNIX -1
|
#define _XOPEN_UNIX 200809L
|
||||||
#define _XOPEN_UUCP -1
|
#define _XOPEN_UUCP -1
|
||||||
|
|
||||||
|
#if defined(__x86_64__)
|
||||||
|
# define _POSIX_V6_ILP32_OFF32 -1
|
||||||
|
# define _POSIX_V6_ILP32_OFFBIG -1
|
||||||
|
# define _POSIX_V6_LP64_OFF64 1
|
||||||
|
# define _POSIX_V6_LPBIG_OFFBIG 1
|
||||||
|
# define _POSIX_V7_ILP32_OFF32 -1
|
||||||
|
# define _POSIX_V7_ILP32_OFFBIG -1
|
||||||
|
# define _POSIX_V7_LP64_OFF64 1
|
||||||
|
# define _POSIX_V7_LPBIG_OFFBIG 1
|
||||||
|
#elif defined(__i686__)
|
||||||
|
# define _POSIX_V6_ILP32_OFF32 1
|
||||||
|
# define _POSIX_V6_ILP32_OFFBIG -1
|
||||||
|
# define _POSIX_V6_LP64_OFF64 -1
|
||||||
|
# define _POSIX_V6_LPBIG_OFFBIG -1
|
||||||
|
# define _POSIX_V7_ILP32_OFF32 1
|
||||||
|
# define _POSIX_V7_ILP32_OFFBIG -1
|
||||||
|
# define _POSIX_V7_LP64_OFF64 -1
|
||||||
|
# define _POSIX_V7_LPBIG_OFFBIG -1
|
||||||
|
#else
|
||||||
|
#error "TODO: _POSIX_ compilation environment"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
@ -104,31 +124,370 @@ __BEGIN_DECLS
|
||||||
#define __need_useconds_t
|
#define __need_useconds_t
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
// FIXME: _CS prefixed definitions
|
enum
|
||||||
|
{
|
||||||
|
_CS_PATH = 1,
|
||||||
|
#define _CS_PATH _CS_PATH
|
||||||
|
_CS_POSIX_V6_ILP32_OFF32_CFLAGS,
|
||||||
|
#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
|
||||||
|
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
|
||||||
|
_CS_POSIX_V6_ILP32_OFF32_LIBS,
|
||||||
|
#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
|
||||||
|
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
|
||||||
|
#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
|
||||||
|
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
|
||||||
|
_CS_POSIX_V6_ILP32_OFFBIG_LIBS,
|
||||||
|
#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
|
||||||
|
_CS_POSIX_V6_LP64_OFF64_CFLAGS,
|
||||||
|
#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
|
||||||
|
_CS_POSIX_V6_LP64_OFF64_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
|
||||||
|
_CS_POSIX_V6_LP64_OFF64_LIBS,
|
||||||
|
#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
|
||||||
|
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
|
||||||
|
#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
|
||||||
|
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
|
||||||
|
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
|
||||||
|
#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
|
||||||
|
_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS,
|
||||||
|
#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
|
||||||
|
_CS_V6_ENV,
|
||||||
|
#define _CS_V6_ENV _CS_V6_ENV
|
||||||
|
_CS_POSIX_V7_ILP32_OFF32_CFLAGS,
|
||||||
|
#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
|
||||||
|
_CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
|
||||||
|
_CS_POSIX_V7_ILP32_OFF32_LIBS,
|
||||||
|
#define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
|
||||||
|
_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
|
||||||
|
#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
|
||||||
|
_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
|
||||||
|
_CS_POSIX_V7_ILP32_OFFBIG_LIBS,
|
||||||
|
#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
|
||||||
|
_CS_POSIX_V7_LP64_OFF64_CFLAGS,
|
||||||
|
#define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
|
||||||
|
_CS_POSIX_V7_LP64_OFF64_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
|
||||||
|
_CS_POSIX_V7_LP64_OFF64_LIBS,
|
||||||
|
#define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
|
||||||
|
_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
|
||||||
|
#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
|
||||||
|
_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
|
||||||
|
_CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
|
||||||
|
#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
|
||||||
|
_CS_POSIX_V7_THREADS_CFLAGS,
|
||||||
|
#define _CS_POSIX_V7_THREADS_CFLAGS _CS_POSIX_V7_THREADS_CFLAGS
|
||||||
|
_CS_POSIX_V7_THREADS_LDFLAGS,
|
||||||
|
#define _CS_POSIX_V7_THREADS_LDFLAGS _CS_POSIX_V7_THREADS_LDFLAGS
|
||||||
|
_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS,
|
||||||
|
#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
|
||||||
|
_CS_V7_ENV,
|
||||||
|
#define _CS_V7_ENV _CS_V7_ENV
|
||||||
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
_PC_2_SYMLINKS,
|
_PC_2_SYMLINKS = 1,
|
||||||
|
#define _PC_2_SYMLINKS _PC_2_SYMLINKS
|
||||||
_PC_ALLOC_SIZE_MIN,
|
_PC_ALLOC_SIZE_MIN,
|
||||||
|
#define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
|
||||||
_PC_ASYNC_IO,
|
_PC_ASYNC_IO,
|
||||||
|
#define _PC_ASYNC_IO _PC_ASYNC_IO
|
||||||
_PC_CHOWN_RESTRICTED,
|
_PC_CHOWN_RESTRICTED,
|
||||||
|
#define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED
|
||||||
_PC_FILESIZEBITS,
|
_PC_FILESIZEBITS,
|
||||||
|
#define _PC_FILESIZEBITS _PC_FILESIZEBITS
|
||||||
_PC_LINK_MAX,
|
_PC_LINK_MAX,
|
||||||
|
#define _PC_LINK_MAX _PC_LINK_MAX
|
||||||
_PC_MAX_CANON,
|
_PC_MAX_CANON,
|
||||||
|
#define _PC_MAX_CANON _PC_MAX_CANON
|
||||||
_PC_MAX_INPUT,
|
_PC_MAX_INPUT,
|
||||||
|
#define _PC_MAX_INPUT _PC_MAX_INPUT
|
||||||
_PC_NAME_MAX,
|
_PC_NAME_MAX,
|
||||||
|
#define _PC_NAME_MAX _PC_NAME_MAX
|
||||||
_PC_NO_TRUNC,
|
_PC_NO_TRUNC,
|
||||||
|
#define _PC_NO_TRUNC _PC_NO_TRUNC
|
||||||
_PC_PATH_MAX,
|
_PC_PATH_MAX,
|
||||||
|
#define _PC_PATH_MAX _PC_PATH_MAX
|
||||||
_PC_PIPE_BUF,
|
_PC_PIPE_BUF,
|
||||||
|
#define _PC_PIPE_BUF _PC_PIPE_BUF
|
||||||
_PC_PRIO_IO,
|
_PC_PRIO_IO,
|
||||||
|
#define _PC_PRIO_IO _PC_PRIO_IO
|
||||||
_PC_REC_INCR_XFER_SIZE,
|
_PC_REC_INCR_XFER_SIZE,
|
||||||
|
#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
|
||||||
_PC_REC_MAX_XFER_SIZE,
|
_PC_REC_MAX_XFER_SIZE,
|
||||||
|
#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
|
||||||
_PC_REC_MIN_XFER_SIZE,
|
_PC_REC_MIN_XFER_SIZE,
|
||||||
|
#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
|
||||||
_PC_REC_XFER_ALIGN,
|
_PC_REC_XFER_ALIGN,
|
||||||
|
#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
|
||||||
_PC_SYMLINK_MAX,
|
_PC_SYMLINK_MAX,
|
||||||
|
#define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
|
||||||
_PC_SYNC_IO,
|
_PC_SYNC_IO,
|
||||||
|
#define _PC_SYNC_IO _PC_SYNC_IO
|
||||||
_PC_TIMESTAMP_RESOLUTION,
|
_PC_TIMESTAMP_RESOLUTION,
|
||||||
|
#define _PC_TIMESTAMP_RESOLUTION _PC_TIMESTAMP_RESOLUTION
|
||||||
_PC_VDISABLE,
|
_PC_VDISABLE,
|
||||||
|
#define _PC_VDISABLE _PC_VDISABLE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
_SC_2_C_BIND = 1,
|
||||||
|
#define _SC_2_C_BIND _SC_2_C_BIND
|
||||||
|
_SC_2_C_DEV,
|
||||||
|
#define _SC_2_C_DEV _SC_2_C_DEV
|
||||||
|
_SC_2_CHAR_TERM,
|
||||||
|
#define _SC_2_CHAR_TERM _SC_2_CHAR_TERM
|
||||||
|
_SC_2_FORT_DEV,
|
||||||
|
#define _SC_2_FORT_DEV _SC_2_FORT_DEV
|
||||||
|
_SC_2_FORT_RUN,
|
||||||
|
#define _SC_2_FORT_RUN _SC_2_FORT_RUN
|
||||||
|
_SC_2_LOCALEDEF,
|
||||||
|
#define _SC_2_LOCALEDEF _SC_2_LOCALEDEF
|
||||||
|
_SC_2_PBS,
|
||||||
|
#define _SC_2_PBS _SC_2_PBS
|
||||||
|
_SC_2_PBS_ACCOUNTING,
|
||||||
|
#define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING
|
||||||
|
_SC_2_PBS_CHECKPOINT,
|
||||||
|
#define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT
|
||||||
|
_SC_2_PBS_LOCATE,
|
||||||
|
#define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE
|
||||||
|
_SC_2_PBS_MESSAGE,
|
||||||
|
#define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE
|
||||||
|
_SC_2_PBS_TRACK,
|
||||||
|
#define _SC_2_PBS_TRACK _SC_2_PBS_TRACK
|
||||||
|
_SC_2_SW_DEV,
|
||||||
|
#define _SC_2_SW_DEV _SC_2_SW_DEV
|
||||||
|
_SC_2_UPE,
|
||||||
|
#define _SC_2_UPE _SC_2_UPE
|
||||||
|
_SC_2_VERSION,
|
||||||
|
#define _SC_2_VERSION _SC_2_VERSION
|
||||||
|
_SC_ADVISORY_INFO,
|
||||||
|
#define _SC_ADVISORY_INFO _SC_ADVISORY_INFO
|
||||||
|
_SC_AIO_LISTIO_MAX,
|
||||||
|
#define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX
|
||||||
|
_SC_AIO_MAX,
|
||||||
|
#define _SC_AIO_MAX _SC_AIO_MAX
|
||||||
|
_SC_AIO_PRIO_DELTA_MAX,
|
||||||
|
#define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
|
||||||
|
_SC_ARG_MAX,
|
||||||
|
#define _SC_ARG_MAX _SC_ARG_MAX
|
||||||
|
_SC_ASYNCHRONOUS_IO,
|
||||||
|
#define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO
|
||||||
|
_SC_ATEXIT_MAX,
|
||||||
|
#define _SC_ATEXIT_MAX _SC_ATEXIT_MAX
|
||||||
|
_SC_BARRIERS,
|
||||||
|
#define _SC_BARRIERS _SC_BARRIERS
|
||||||
|
_SC_BC_BASE_MAX,
|
||||||
|
#define _SC_BC_BASE_MAX _SC_BC_BASE_MAX
|
||||||
|
_SC_BC_DIM_MAX,
|
||||||
|
#define _SC_BC_DIM_MAX _SC_BC_DIM_MAX
|
||||||
|
_SC_BC_SCALE_MAX,
|
||||||
|
#define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX
|
||||||
|
_SC_BC_STRING_MAX,
|
||||||
|
#define _SC_BC_STRING_MAX _SC_BC_STRING_MAX
|
||||||
|
_SC_CHILD_MAX,
|
||||||
|
#define _SC_CHILD_MAX _SC_CHILD_MAX
|
||||||
|
_SC_CLK_TCK,
|
||||||
|
#define _SC_CLK_TCK _SC_CLK_TCK
|
||||||
|
_SC_CLOCK_SELECTION,
|
||||||
|
#define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION
|
||||||
|
_SC_COLL_WEIGHTS_MAX,
|
||||||
|
#define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX
|
||||||
|
_SC_CPUTIME,
|
||||||
|
#define _SC_CPUTIME _SC_CPUTIME
|
||||||
|
_SC_DELAYTIMER_MAX,
|
||||||
|
#define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
|
||||||
|
_SC_EXPR_NEST_MAX,
|
||||||
|
#define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX
|
||||||
|
_SC_FSYNC,
|
||||||
|
#define _SC_FSYNC _SC_FSYNC
|
||||||
|
_SC_GETGR_R_SIZE_MAX,
|
||||||
|
#define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX
|
||||||
|
_SC_GETPW_R_SIZE_MAX,
|
||||||
|
#define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX
|
||||||
|
_SC_HOST_NAME_MAX,
|
||||||
|
#define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX
|
||||||
|
_SC_IOV_MAX,
|
||||||
|
#define _SC_IOV_MAX _SC_IOV_MAX
|
||||||
|
_SC_IPV6,
|
||||||
|
#define _SC_IPV6 _SC_IPV6
|
||||||
|
_SC_JOB_CONTROL,
|
||||||
|
#define _SC_JOB_CONTROL _SC_JOB_CONTROL
|
||||||
|
_SC_LINE_MAX,
|
||||||
|
#define _SC_LINE_MAX _SC_LINE_MAX
|
||||||
|
_SC_LOGIN_NAME_MAX,
|
||||||
|
#define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX
|
||||||
|
_SC_MAPPED_FILES,
|
||||||
|
#define _SC_MAPPED_FILES _SC_MAPPED_FILES
|
||||||
|
_SC_MEMLOCK,
|
||||||
|
#define _SC_MEMLOCK _SC_MEMLOCK
|
||||||
|
_SC_MEMLOCK_RANGE,
|
||||||
|
#define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE
|
||||||
|
_SC_MEMORY_PROTECTION,
|
||||||
|
#define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION
|
||||||
|
_SC_MESSAGE_PASSING,
|
||||||
|
#define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING
|
||||||
|
_SC_MONOTONIC_CLOCK,
|
||||||
|
#define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK
|
||||||
|
_SC_MQ_OPEN_MAX,
|
||||||
|
#define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
|
||||||
|
_SC_MQ_PRIO_MAX,
|
||||||
|
#define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
|
||||||
|
_SC_NGROUPS_MAX,
|
||||||
|
#define _SC_NGROUPS_MAX _SC_NGROUPS_MAX
|
||||||
|
_SC_OPEN_MAX,
|
||||||
|
#define _SC_OPEN_MAX _SC_OPEN_MAX
|
||||||
|
_SC_PAGE_SIZE,
|
||||||
|
#define _SC_PAGE_SIZE _SC_PAGE_SIZE
|
||||||
|
_SC_PAGESIZE,
|
||||||
|
#define _SC_PAGESIZE _SC_PAGESIZE
|
||||||
|
_SC_PRIORITIZED_IO,
|
||||||
|
#define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO
|
||||||
|
_SC_PRIORITY_SCHEDULING,
|
||||||
|
#define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING
|
||||||
|
_SC_RAW_SOCKETS,
|
||||||
|
#define _SC_RAW_SOCKETS _SC_RAW_SOCKETS
|
||||||
|
_SC_RE_DUP_MAX,
|
||||||
|
#define _SC_RE_DUP_MAX _SC_RE_DUP_MAX
|
||||||
|
_SC_READER_WRITER_LOCKS,
|
||||||
|
#define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS
|
||||||
|
_SC_REALTIME_SIGNALS,
|
||||||
|
#define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS
|
||||||
|
_SC_REGEXP,
|
||||||
|
#define _SC_REGEXP _SC_REGEXP
|
||||||
|
_SC_RTSIG_MAX,
|
||||||
|
#define _SC_RTSIG_MAX _SC_RTSIG_MAX
|
||||||
|
_SC_SAVED_IDS,
|
||||||
|
#define _SC_SAVED_IDS _SC_SAVED_IDS
|
||||||
|
_SC_SEM_NSEMS_MAX,
|
||||||
|
#define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
|
||||||
|
_SC_SEM_VALUE_MAX,
|
||||||
|
#define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
|
||||||
|
_SC_SEMAPHORES,
|
||||||
|
#define _SC_SEMAPHORES _SC_SEMAPHORES
|
||||||
|
_SC_SHARED_MEMORY_OBJECTS,
|
||||||
|
#define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
|
||||||
|
_SC_SHELL,
|
||||||
|
#define _SC_SHELL _SC_SHELL
|
||||||
|
_SC_SIGQUEUE_MAX,
|
||||||
|
#define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
|
||||||
|
_SC_SPAWN,
|
||||||
|
#define _SC_SPAWN _SC_SPAWN
|
||||||
|
_SC_SPIN_LOCKS,
|
||||||
|
#define _SC_SPIN_LOCKS _SC_SPIN_LOCKS
|
||||||
|
_SC_SPORADIC_SERVER,
|
||||||
|
#define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER
|
||||||
|
_SC_SS_REPL_MAX,
|
||||||
|
#define _SC_SS_REPL_MAX _SC_SS_REPL_MAX
|
||||||
|
_SC_STREAM_MAX,
|
||||||
|
#define _SC_STREAM_MAX _SC_STREAM_MAX
|
||||||
|
_SC_SYMLOOP_MAX,
|
||||||
|
#define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX
|
||||||
|
_SC_SYNCHRONIZED_IO,
|
||||||
|
#define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO
|
||||||
|
_SC_THREAD_ATTR_STACKADDR,
|
||||||
|
#define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR
|
||||||
|
_SC_THREAD_ATTR_STACKSIZE,
|
||||||
|
#define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE
|
||||||
|
_SC_THREAD_CPUTIME,
|
||||||
|
#define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME
|
||||||
|
_SC_THREAD_DESTRUCTOR_ITERATIONS,
|
||||||
|
#define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
|
||||||
|
_SC_THREAD_KEYS_MAX,
|
||||||
|
#define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX
|
||||||
|
_SC_THREAD_PRIO_INHERIT,
|
||||||
|
#define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT
|
||||||
|
_SC_THREAD_PRIO_PROTECT,
|
||||||
|
#define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT
|
||||||
|
_SC_THREAD_PRIORITY_SCHEDULING,
|
||||||
|
#define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING
|
||||||
|
_SC_THREAD_PROCESS_SHARED,
|
||||||
|
#define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED
|
||||||
|
_SC_THREAD_ROBUST_PRIO_INHERIT,
|
||||||
|
#define _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT
|
||||||
|
_SC_THREAD_ROBUST_PRIO_PROTECT,
|
||||||
|
#define _SC_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT
|
||||||
|
_SC_THREAD_SAFE_FUNCTIONS,
|
||||||
|
#define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS
|
||||||
|
_SC_THREAD_SPORADIC_SERVER,
|
||||||
|
#define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER
|
||||||
|
_SC_THREAD_STACK_MIN,
|
||||||
|
#define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN
|
||||||
|
_SC_THREAD_THREADS_MAX,
|
||||||
|
#define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX
|
||||||
|
_SC_THREADS,
|
||||||
|
#define _SC_THREADS _SC_THREADS
|
||||||
|
_SC_TIMEOUTS,
|
||||||
|
#define _SC_TIMEOUTS _SC_TIMEOUTS
|
||||||
|
_SC_TIMER_MAX,
|
||||||
|
#define _SC_TIMER_MAX _SC_TIMER_MAX
|
||||||
|
_SC_TIMERS,
|
||||||
|
#define _SC_TIMERS _SC_TIMERS
|
||||||
|
_SC_TRACE,
|
||||||
|
#define _SC_TRACE _SC_TRACE
|
||||||
|
_SC_TRACE_EVENT_FILTER,
|
||||||
|
#define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER
|
||||||
|
_SC_TRACE_EVENT_NAME_MAX,
|
||||||
|
#define _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX
|
||||||
|
_SC_TRACE_INHERIT,
|
||||||
|
#define _SC_TRACE_INHERIT _SC_TRACE_INHERIT
|
||||||
|
_SC_TRACE_LOG,
|
||||||
|
#define _SC_TRACE_LOG _SC_TRACE_LOG
|
||||||
|
_SC_TRACE_NAME_MAX,
|
||||||
|
#define _SC_TRACE_NAME_MAX _SC_TRACE_NAME_MAX
|
||||||
|
_SC_TRACE_SYS_MAX,
|
||||||
|
#define _SC_TRACE_SYS_MAX _SC_TRACE_SYS_MAX
|
||||||
|
_SC_TRACE_USER_EVENT_MAX,
|
||||||
|
#define _SC_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX
|
||||||
|
_SC_TTY_NAME_MAX,
|
||||||
|
#define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX
|
||||||
|
_SC_TYPED_MEMORY_OBJECTS,
|
||||||
|
#define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS
|
||||||
|
_SC_TZNAME_MAX,
|
||||||
|
#define _SC_TZNAME_MAX _SC_TZNAME_MAX
|
||||||
|
_SC_V7_ILP32_OFF32,
|
||||||
|
#define _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32
|
||||||
|
_SC_V7_ILP32_OFFBIG,
|
||||||
|
#define _SC_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
|
||||||
|
_SC_V7_LP64_OFF64,
|
||||||
|
#define _SC_V7_LP64_OFF64 _SC_V7_LP64_OFF64
|
||||||
|
_SC_V7_LPBIG_OFFBIG,
|
||||||
|
#define _SC_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
|
||||||
|
_SC_V6_ILP32_OFF32,
|
||||||
|
#define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32
|
||||||
|
_SC_V6_ILP32_OFFBIG,
|
||||||
|
#define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG
|
||||||
|
_SC_V6_LP64_OFF64,
|
||||||
|
#define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64
|
||||||
|
_SC_V6_LPBIG_OFFBIG,
|
||||||
|
#define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG
|
||||||
|
_SC_VERSION,
|
||||||
|
#define _SC_VERSION _SC_VERSION
|
||||||
|
_SC_XOPEN_CRYPT,
|
||||||
|
#define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT
|
||||||
|
_SC_XOPEN_ENH_I18N,
|
||||||
|
#define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N
|
||||||
|
_SC_XOPEN_REALTIME,
|
||||||
|
#define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME
|
||||||
|
_SC_XOPEN_REALTIME_THREADS,
|
||||||
|
#define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS
|
||||||
|
_SC_XOPEN_SHM,
|
||||||
|
#define _SC_XOPEN_SHM _SC_XOPEN_SHM
|
||||||
|
_SC_XOPEN_STREAMS,
|
||||||
|
#define _SC_XOPEN_STREAMS _SC_XOPEN_STREAMS
|
||||||
|
_SC_XOPEN_UNIX,
|
||||||
|
#define _SC_XOPEN_UNIX _SC_XOPEN_UNIX
|
||||||
|
_SC_XOPEN_UUCP,
|
||||||
|
#define _SC_XOPEN_UUCP _SC_XOPEN_UUCP
|
||||||
|
_SC_XOPEN_VERSION,
|
||||||
|
#define _SC_XOPEN_VERSION _SC_XOPEN_VERSION
|
||||||
};
|
};
|
||||||
|
|
||||||
#define F_OK 0x01
|
#define F_OK 0x01
|
||||||
|
|
|
@ -807,3 +807,199 @@ int linkat(int fd1, const char *path1, int fd2, const char *path2, int flag)
|
||||||
{
|
{
|
||||||
return syscall(SYS_HARDLINKAT, fd1, path1, fd2, path2, flag);
|
return syscall(SYS_HARDLINKAT, fd1, path1, fd2, path2, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t confstr(int name, char* buf, size_t len)
|
||||||
|
{
|
||||||
|
(void)buf;
|
||||||
|
(void)len;
|
||||||
|
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
#define CONFSTR_CASE(name) case name: return 0;
|
||||||
|
CONFSTR_CASE(_CS_PATH)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_ILP32_OFF32_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_ILP32_OFF32_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_ILP32_OFF32_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_ILP32_OFFBIG_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_LP64_OFF64_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_LP64_OFF64_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_LP64_OFF64_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_LPBIG_OFFBIG_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS)
|
||||||
|
CONFSTR_CASE(_CS_V6_ENV)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_ILP32_OFF32_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_ILP32_OFF32_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_ILP32_OFF32_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_ILP32_OFFBIG_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_LP64_OFF64_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_LP64_OFF64_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_LP64_OFF64_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_LPBIG_OFFBIG_LIBS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_THREADS_CFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_THREADS_LDFLAGS)
|
||||||
|
CONFSTR_CASE(_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS)
|
||||||
|
CONFSTR_CASE(_CS_V7_ENV)
|
||||||
|
#undef CONFSTR_CASE
|
||||||
|
}
|
||||||
|
|
||||||
|
errno = EINVAL;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
long pathconf(const char* path, int name);
|
||||||
|
|
||||||
|
long sysconf(int name)
|
||||||
|
{
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
#define POSIX2_CASE(name) case _SC_2_##name: return _POSIX2_##name;
|
||||||
|
POSIX2_CASE(C_BIND)
|
||||||
|
POSIX2_CASE(C_DEV)
|
||||||
|
POSIX2_CASE(CHAR_TERM)
|
||||||
|
POSIX2_CASE(FORT_DEV)
|
||||||
|
POSIX2_CASE(FORT_RUN)
|
||||||
|
POSIX2_CASE(LOCALEDEF)
|
||||||
|
POSIX2_CASE(PBS)
|
||||||
|
POSIX2_CASE(PBS_ACCOUNTING)
|
||||||
|
POSIX2_CASE(PBS_CHECKPOINT)
|
||||||
|
POSIX2_CASE(PBS_LOCATE)
|
||||||
|
POSIX2_CASE(PBS_MESSAGE)
|
||||||
|
POSIX2_CASE(PBS_TRACK)
|
||||||
|
POSIX2_CASE(SW_DEV)
|
||||||
|
POSIX2_CASE(UPE)
|
||||||
|
POSIX2_CASE(VERSION)
|
||||||
|
#undef POSIX2_CASE
|
||||||
|
|
||||||
|
#define POSIX_CASE(name) case _SC_##name: return _POSIX_##name;
|
||||||
|
POSIX_CASE(ADVISORY_INFO)
|
||||||
|
POSIX_CASE(AIO_LISTIO_MAX)
|
||||||
|
POSIX_CASE(AIO_MAX)
|
||||||
|
POSIX_CASE(ARG_MAX)
|
||||||
|
POSIX_CASE(ASYNCHRONOUS_IO)
|
||||||
|
POSIX_CASE(BARRIERS)
|
||||||
|
POSIX_CASE(CHILD_MAX)
|
||||||
|
POSIX_CASE(CLOCK_SELECTION)
|
||||||
|
POSIX_CASE(CPUTIME)
|
||||||
|
POSIX_CASE(DELAYTIMER_MAX)
|
||||||
|
POSIX_CASE(FSYNC)
|
||||||
|
POSIX_CASE(HOST_NAME_MAX)
|
||||||
|
POSIX_CASE(IPV6)
|
||||||
|
POSIX_CASE(JOB_CONTROL)
|
||||||
|
POSIX_CASE(LOGIN_NAME_MAX)
|
||||||
|
POSIX_CASE(MAPPED_FILES)
|
||||||
|
POSIX_CASE(MEMLOCK)
|
||||||
|
POSIX_CASE(MEMLOCK_RANGE)
|
||||||
|
POSIX_CASE(MEMORY_PROTECTION)
|
||||||
|
POSIX_CASE(MESSAGE_PASSING)
|
||||||
|
POSIX_CASE(MONOTONIC_CLOCK)
|
||||||
|
POSIX_CASE(MQ_OPEN_MAX)
|
||||||
|
POSIX_CASE(MQ_PRIO_MAX)
|
||||||
|
POSIX_CASE(NGROUPS_MAX)
|
||||||
|
POSIX_CASE(OPEN_MAX)
|
||||||
|
POSIX_CASE(PRIORITIZED_IO)
|
||||||
|
POSIX_CASE(PRIORITY_SCHEDULING)
|
||||||
|
POSIX_CASE(RAW_SOCKETS)
|
||||||
|
POSIX_CASE(RE_DUP_MAX)
|
||||||
|
POSIX_CASE(READER_WRITER_LOCKS)
|
||||||
|
POSIX_CASE(REALTIME_SIGNALS)
|
||||||
|
POSIX_CASE(REGEXP)
|
||||||
|
POSIX_CASE(RTSIG_MAX)
|
||||||
|
POSIX_CASE(SAVED_IDS)
|
||||||
|
POSIX_CASE(SEM_NSEMS_MAX)
|
||||||
|
POSIX_CASE(SEM_VALUE_MAX)
|
||||||
|
POSIX_CASE(SEMAPHORES)
|
||||||
|
POSIX_CASE(SHARED_MEMORY_OBJECTS)
|
||||||
|
POSIX_CASE(SHELL)
|
||||||
|
POSIX_CASE(SIGQUEUE_MAX)
|
||||||
|
POSIX_CASE(SPAWN)
|
||||||
|
POSIX_CASE(SPIN_LOCKS)
|
||||||
|
POSIX_CASE(SPORADIC_SERVER)
|
||||||
|
POSIX_CASE(SS_REPL_MAX)
|
||||||
|
POSIX_CASE(STREAM_MAX)
|
||||||
|
POSIX_CASE(SYMLOOP_MAX)
|
||||||
|
POSIX_CASE(SYNCHRONIZED_IO)
|
||||||
|
POSIX_CASE(THREAD_ATTR_STACKADDR)
|
||||||
|
POSIX_CASE(THREAD_ATTR_STACKSIZE)
|
||||||
|
POSIX_CASE(THREAD_CPUTIME)
|
||||||
|
POSIX_CASE(THREAD_DESTRUCTOR_ITERATIONS)
|
||||||
|
POSIX_CASE(THREAD_KEYS_MAX)
|
||||||
|
POSIX_CASE(THREAD_PRIO_INHERIT)
|
||||||
|
POSIX_CASE(THREAD_PRIO_PROTECT)
|
||||||
|
POSIX_CASE(THREAD_PRIORITY_SCHEDULING)
|
||||||
|
POSIX_CASE(THREAD_PROCESS_SHARED)
|
||||||
|
POSIX_CASE(THREAD_ROBUST_PRIO_INHERIT)
|
||||||
|
POSIX_CASE(THREAD_ROBUST_PRIO_PROTECT)
|
||||||
|
POSIX_CASE(THREAD_SAFE_FUNCTIONS)
|
||||||
|
POSIX_CASE(THREAD_SPORADIC_SERVER)
|
||||||
|
POSIX_CASE(THREAD_THREADS_MAX)
|
||||||
|
POSIX_CASE(THREADS)
|
||||||
|
POSIX_CASE(TIMEOUTS)
|
||||||
|
POSIX_CASE(TIMER_MAX)
|
||||||
|
POSIX_CASE(TIMERS)
|
||||||
|
POSIX_CASE(TRACE)
|
||||||
|
POSIX_CASE(TRACE_EVENT_FILTER)
|
||||||
|
POSIX_CASE(TRACE_EVENT_NAME_MAX)
|
||||||
|
POSIX_CASE(TRACE_INHERIT)
|
||||||
|
POSIX_CASE(TRACE_LOG)
|
||||||
|
POSIX_CASE(TRACE_NAME_MAX)
|
||||||
|
POSIX_CASE(TRACE_SYS_MAX)
|
||||||
|
POSIX_CASE(TRACE_USER_EVENT_MAX)
|
||||||
|
POSIX_CASE(TTY_NAME_MAX)
|
||||||
|
POSIX_CASE(TYPED_MEMORY_OBJECTS)
|
||||||
|
POSIX_CASE(TZNAME_MAX)
|
||||||
|
POSIX_CASE(V7_ILP32_OFF32)
|
||||||
|
POSIX_CASE(V7_ILP32_OFFBIG)
|
||||||
|
POSIX_CASE(V7_LP64_OFF64)
|
||||||
|
POSIX_CASE(V7_LPBIG_OFFBIG)
|
||||||
|
POSIX_CASE(V6_ILP32_OFF32)
|
||||||
|
POSIX_CASE(V6_ILP32_OFFBIG)
|
||||||
|
POSIX_CASE(V6_LP64_OFF64)
|
||||||
|
POSIX_CASE(V6_LPBIG_OFFBIG)
|
||||||
|
POSIX_CASE(VERSION)
|
||||||
|
#undef POSIX_CASE
|
||||||
|
|
||||||
|
#define LIMITS_CASE(name) case _SC_##name: return name;
|
||||||
|
LIMITS_CASE(AIO_PRIO_DELTA_MAX)
|
||||||
|
LIMITS_CASE(ATEXIT_MAX)
|
||||||
|
LIMITS_CASE(BC_BASE_MAX)
|
||||||
|
LIMITS_CASE(BC_DIM_MAX)
|
||||||
|
LIMITS_CASE(BC_SCALE_MAX)
|
||||||
|
LIMITS_CASE(BC_STRING_MAX)
|
||||||
|
LIMITS_CASE(COLL_WEIGHTS_MAX)
|
||||||
|
LIMITS_CASE(EXPR_NEST_MAX)
|
||||||
|
LIMITS_CASE(IOV_MAX)
|
||||||
|
LIMITS_CASE(LINE_MAX)
|
||||||
|
#undef LIMITS_CASE
|
||||||
|
|
||||||
|
#define XOPEN_CASE(name) case _SC_XOPEN_##name: return _XOPEN_##name;
|
||||||
|
XOPEN_CASE(CRYPT)
|
||||||
|
XOPEN_CASE(ENH_I18N)
|
||||||
|
XOPEN_CASE(REALTIME)
|
||||||
|
XOPEN_CASE(REALTIME_THREADS)
|
||||||
|
XOPEN_CASE(SHM)
|
||||||
|
XOPEN_CASE(STREAMS)
|
||||||
|
XOPEN_CASE(UNIX)
|
||||||
|
XOPEN_CASE(UUCP)
|
||||||
|
XOPEN_CASE(VERSION)
|
||||||
|
#undef XOPEN_CASE
|
||||||
|
|
||||||
|
case _SC_PAGE_SIZE:
|
||||||
|
case _SC_PAGESIZE: return getpagesize();
|
||||||
|
|
||||||
|
case _SC_CLK_TCK: return 100;
|
||||||
|
case _SC_GETGR_R_SIZE_MAX: return 1024;
|
||||||
|
case _SC_GETPW_R_SIZE_MAX: return 1024;
|
||||||
|
case _SC_THREAD_STACK_MIN: return PTHREAD_STACK_MIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue