LibC: Add all of the missing POSIX definitions in unistd.h and limits.h
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user