123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851 |
- /* Copyright (C) 1991, 93, 95, 96, 97, 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
- #include <errno.h>
- #include <limits.h>
- #include <grp.h>
- #include <pwd.h>
- #include <stddef.h>
- #include <stdio.h>
- #include <time.h>
- #include <unistd.h>
- #include <sys/sysinfo.h>
- #include <sys/types.h>
- #include <regex.h>
- /* Get the value of the system variable NAME. */
- long int sysconf(int name)
- {
- switch (name)
- {
- default:
- errno=EINVAL;
- return -1;
- case _SC_ARG_MAX:
- #ifdef ARG_MAX
- return ARG_MAX;
- #else
- return -1;
- #endif
- case _SC_CHILD_MAX:
- #ifdef CHILD_MAX
- return CHILD_MAX;
- #else
- return -1;
- #endif
- case _SC_CLK_TCK:
- #ifdef CLK_TCK
- return CLK_TCK;
- #else
- return 60;
- #endif
- case _SC_NGROUPS_MAX:
- #ifdef NGROUPS_MAX
- return NGROUPS_MAX;
- #else
- return -1;
- #endif
- case _SC_OPEN_MAX:
- #if 0
- return getdtablesize ();
- #else
- return -1;
- #endif
- case _SC_STREAM_MAX:
- #ifdef STREAM_MAX
- return STREAM_MAX;
- #else
- return FOPEN_MAX;
- #endif
- case _SC_TZNAME_MAX:
- #if 0
- return tzname_max ();
- #else
- return -1;
- #endif
- case _SC_JOB_CONTROL:
- #ifdef _POSIX_JOB_CONTROL
- return 1;
- #else
- return -1;
- #endif
- case _SC_SAVED_IDS:
- #ifdef _POSIX_SAVED_IDS
- return 1;
- #else
- return -1;
- #endif
- case _SC_REALTIME_SIGNALS:
- #ifdef _POSIX_REALTIME_SIGNALS
- return 1;
- #else
- return -1;
- #endif
- case _SC_PRIORITY_SCHEDULING:
- #ifdef _POSIX_PRIORITY_SCHEDULING
- return 1;
- #else
- return -1;
- #endif
- case _SC_TIMERS:
- #ifdef _POSIX_TIMERS
- return 1;
- #else
- return -1;
- #endif
- case _SC_ASYNCHRONOUS_IO:
- #ifdef _POSIX_ASYNCHRONOUS_IO
- return 1;
- #else
- return -1;
- #endif
- case _SC_PRIORITIZED_IO:
- #ifdef _POSIX_PRIORITIZED_IO
- return 1;
- #else
- return -1;
- #endif
- case _SC_SYNCHRONIZED_IO:
- #ifdef _POSIX_SYNCHRONIZED_IO
- return 1;
- #else
- return -1;
- #endif
- case _SC_FSYNC:
- #ifdef _POSIX_FSYNC
- return 1;
- #else
- return -1;
- #endif
- case _SC_MAPPED_FILES:
- #ifdef _POSIX_MAPPED_FILES
- return 1;
- #else
- return -1;
- #endif
- case _SC_MEMLOCK:
- #ifdef _POSIX_MEMLOCK
- return 1;
- #else
- return -1;
- #endif
- case _SC_MEMLOCK_RANGE:
- #ifdef _POSIX_MEMLOCK_RANGE
- return 1;
- #else
- return -1;
- #endif
- case _SC_MEMORY_PROTECTION:
- #ifdef _POSIX_MEMORY_PROTECTION
- return 1;
- #else
- return -1;
- #endif
- case _SC_MESSAGE_PASSING:
- #ifdef _POSIX_MESSAGE_PASSING
- return 1;
- #else
- return -1;
- #endif
- case _SC_SEMAPHORES:
- #ifdef _POSIX_SEMAPHORES
- return 1;
- #else
- return -1;
- #endif
- case _SC_SHARED_MEMORY_OBJECTS:
- #ifdef _POSIX_SHARED_MEMORY_OBJECTS
- return 1;
- #else
- return -1;
- #endif
- case _SC_VERSION:
- return _POSIX_VERSION;
- case _SC_PAGESIZE:
- return getpagesize();
- case _SC_AIO_LISTIO_MAX:
- #ifdef AIO_LISTIO_MAX
- return AIO_LISTIO_MAX;
- #else
- return -1;
- #endif
- case _SC_AIO_MAX:
- #ifdef AIO_MAX
- return AIO_MAX;
- #else
- return -1;
- #endif
- case _SC_AIO_PRIO_DELTA_MAX:
- #ifdef AIO_PRIO_DELTA_MAX
- return AIO_PRIO_DELTA_MAX;
- #else
- return -1;
- #endif
- case _SC_DELAYTIMER_MAX:
- #ifdef DELAYTIMER_MAX
- return DELAYTIMER_MAX;
- #else
- return -1;
- #endif
- case _SC_MQ_OPEN_MAX:
- #ifdef MQ_OPEN_MAX
- return MQ_OPEN_MAX;
- #else
- return -1;
- #endif
- case _SC_MQ_PRIO_MAX:
- #ifdef MQ_PRIO_MAX
- return MQ_PRIO_MAX;
- #else
- return -1;
- #endif
- case _SC_RTSIG_MAX:
- #ifdef RTSIG_MAX
- return RTSIG_MAX;
- #else
- return -1;
- #endif
- case _SC_SEM_NSEMS_MAX:
- #ifdef SEM_NSEMS_MAX
- return SEM_NSEMS_MAX;
- #else
- return -1;
- #endif
- case _SC_SEM_VALUE_MAX:
- #ifdef SEM_VALUE_MAX
- return SEM_VALUE_MAX;
- #else
- return -1;
- #endif
- case _SC_SIGQUEUE_MAX:
- #ifdef SIGQUEUE_MAX
- return SIGQUEUE_MAX;
- #else
- return -1;
- #endif
- case _SC_TIMER_MAX:
- #ifdef TIMER_MAX
- return TIMER_MAX;
- #else
- return -1;
- #endif
- case _SC_BC_BASE_MAX:
- #ifdef BC_BASE_MAX
- return BC_BASE_MAX;
- #else
- return -1;
- #endif
- case _SC_BC_DIM_MAX:
- #ifdef BC_DIM_MAX
- return BC_DIM_MAX;
- #else
- return -1;
- #endif
- case _SC_BC_SCALE_MAX:
- #ifdef BC_SCALE_MAX
- return BC_SCALE_MAX;
- #else
- return -1;
- #endif
- case _SC_BC_STRING_MAX:
- #ifdef BC_STRING_MAX
- return BC_STRING_MAX;
- #else
- return -1;
- #endif
- case _SC_COLL_WEIGHTS_MAX:
- #ifdef COLL_WEIGHTS_MAX
- return COLL_WEIGHTS_MAX;
- #else
- return -1;
- #endif
- case _SC_EQUIV_CLASS_MAX:
- #ifdef EQUIV_CLASS_MAX
- return EQUIV_CLASS_MAX;
- #else
- return -1;
- #endif
- case _SC_EXPR_NEST_MAX:
- #ifdef EXPR_NEST_MAX
- return EXPR_NEST_MAX;
- #else
- return -1;
- #endif
- case _SC_LINE_MAX:
- #ifdef LINE_MAX
- return LINE_MAX;
- #else
- return -1;
- #endif
- case _SC_RE_DUP_MAX:
- #ifdef RE_DUP_MAX
- return RE_DUP_MAX;
- #else
- return -1;
- #endif
- case _SC_CHARCLASS_NAME_MAX:
- #ifdef CHARCLASS_NAME_MAX
- return CHARCLASS_NAME_MAX;
- #else
- return -1;
- #endif
- case _SC_PII:
- #ifdef _POSIX_PII
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_XTI:
- #ifdef _POSIX_PII_XTI
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_SOCKET:
- #ifdef _POSIX_PII_SOCKET
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_INTERNET:
- #ifdef _POSIX_PII_INTERNET
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_OSI:
- #ifdef _POSIX_PII_OSI
- return 1;
- #else
- return -1;
- #endif
- case _SC_POLL:
- #ifdef _POSIX_POLL
- return 1;
- #else
- return -1;
- #endif
- case _SC_SELECT:
- #ifdef _POSIX_SELECT
- return 1;
- #else
- return -1;
- #endif
- case _SC_UIO_MAXIOV:
- #ifdef UIO_MAXIOV
- return UIO_MAXIOV;
- #else
- return -1;
- #endif
- case _SC_PII_INTERNET_STREAM:
- #ifdef _POSIX_PII_INTERNET_STREAM
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_INTERNET_DGRAM:
- #ifdef _POSIX_PII_INTERNET_DGRAM
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_OSI_COTS:
- #ifdef _POSIX_PII_OSI_COTS
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_OSI_CLTS:
- #ifdef _POSIX_PII_OSI_CLTS
- return 1;
- #else
- return -1;
- #endif
- case _SC_PII_OSI_M:
- #ifdef _POSIX_PII_OSI_M
- return 1;
- #else
- return -1;
- #endif
- case _SC_T_IOV_MAX:
- #ifdef _T_IOV_MAX
- return _T_IOV_MAX;
- #else
- return -1;
- #endif
- case _SC_2_VERSION:
- return _POSIX2_VERSION;
- case _SC_2_C_BIND:
- #ifdef _POSIX2_C_BIND
- return _POSIX2_C_BIND;
- #else
- return -1;
- #endif
- case _SC_2_C_DEV:
- #ifdef _POSIX2_C_DEV
- return _POSIX2_C_DEV;
- #else
- return -1;
- #endif
- case _SC_2_C_VERSION:
- #ifdef _POSIX2_C_VERSION
- return _POSIX2_C_VERSION;
- #else
- return -1;
- #endif
- case _SC_2_FORT_DEV:
- #ifdef _POSIX2_FORT_DEV
- return _POSIX2_FORT_DEV;
- #else
- return -1;
- #endif
- case _SC_2_LOCALEDEF:
- #ifdef _POSIX2_LOCALEDEF
- return _POSIX2_LOCALEDEF;
- #else
- return -1;
- #endif
- case _SC_2_SW_DEV:
- #ifdef _POSIX2_SW_DEV
- return _POSIX2_SW_DEV;
- #else
- return -1;
- #endif
- case _SC_2_CHAR_TERM:
- #ifdef _POSIX2_CHAR_TERM
- return _POSIX2_CHAR_TERM;
- #else
- return -1;
- #endif
- case _SC_2_UPE:
- #ifdef _POSIX2_UPE
- return _POSIX2_UPE;
- #else
- return -1;
- #endif
- /* POSIX 1003.1c (POSIX Threads). */
- case _SC_THREADS:
- #ifdef _POSIX_THREADS
- return 1;
- #else
- return -1;
- #endif
- case _SC_THREAD_SAFE_FUNCTIONS:
- #ifdef _POSIX_THREAD_SAFE_FUNCTIONS
- return 1;
- #else
- return -1;
- #endif
- case _SC_GETGR_R_SIZE_MAX:
- #ifdef NSS_BUFLEN_GROUP
- return NSS_BUFLEN_GROUP;
- #else
- return -1;
- #endif
- case _SC_GETPW_R_SIZE_MAX:
- #ifdef NSS_BUFLEN_PASSWD
- return NSS_BUFLEN_PASSWD;
- #else
- return -1;
- #endif
- case _SC_LOGIN_NAME_MAX:
- #ifdef _POSIX_LOGIN_NAME_MAX
- return _POSIX_LOGIN_NAME_MAX;
- #else
- return -1;
- #endif
- case _SC_TTY_NAME_MAX:
- #ifdef _POSIX_TTY_NAME_MAX
- return _POSIX_TTY_NAME_MAX;
- #else
- return -1;
- #endif
- case _SC_THREAD_DESTRUCTOR_ITERATIONS:
- #ifdef _POSIX_THREAD_DESTRUCTOR_ITERATIONS
- return _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
- #else
- return -1;
- #endif
- case _SC_THREAD_KEYS_MAX:
- #ifdef PTHREAD_KEYS_MAX
- return PTHREAD_KEYS_MAX;
- #else
- return -1;
- #endif
- case _SC_THREAD_STACK_MIN:
- #ifdef PTHREAD_STACK_MIN
- return PTHREAD_STACK_MIN;
- #else
- return -1;
- #endif
- case _SC_THREAD_THREADS_MAX:
- #ifdef PTHREAD_THREADS_MAX
- return PTHREAD_THREADS_MAX;
- #else
- return -1;
- #endif
- case _SC_THREAD_ATTR_STACKADDR:
- #ifdef _POSIX_THREAD_ATTR_STACKADDR
- return 1;
- #else
- return -1;
- #endif
- case _SC_THREAD_ATTR_STACKSIZE:
- #ifdef _POSIX_THREAD_ATTR_STACKSIZE
- return 1;
- #else
- return -1;
- #endif
- case _SC_THREAD_PRIORITY_SCHEDULING:
- #ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
- return 1;
- #else
- return -1;
- #endif
- case _SC_THREAD_PRIO_INHERIT:
- #ifdef _POSIX_THREAD_PRIO_INHERIT
- return 1;
- #else
- return -1;
- #endif
- case _SC_THREAD_PRIO_PROTECT:
- #ifdef _POSIX_THREAD_PRIO_PROTECT
- return 1;
- #else
- return -1;
- #endif
- case _SC_THREAD_PROCESS_SHARED:
- #ifdef _POSIX_THREAD_PROCESS_SHARED
- return 1;
- #else
- return -1;
- #endif
- case _SC_NPROCESSORS_CONF:
- #if 0
- return get_nprocs_conf ();
- #else
- return -1;
- #endif
- case _SC_NPROCESSORS_ONLN:
- #if 0
- return get_nprocs ();
- #else
- return -1;
- #endif
- case _SC_PHYS_PAGES:
- #if 0
- return get_phys_pages ();
- #else
- return -1;
- #endif
- case _SC_AVPHYS_PAGES:
- #if 0
- return get_avphys_pages ();
- #else
- return -1;
- #endif
- case _SC_ATEXIT_MAX:
- /* We have no limit since we use lists. */
- return INT_MAX;
- case _SC_PASS_MAX:
- /* We have no limit but since the return value might be used to
- allocate a buffer we restrict the value. */
- return BUFSIZ;
- case _SC_XOPEN_VERSION:
- return _XOPEN_VERSION;
- case _SC_XOPEN_XCU_VERSION:
- return _XOPEN_XCU_VERSION;
- case _SC_XOPEN_UNIX:
- return _XOPEN_UNIX;
- case _SC_XOPEN_CRYPT:
- #ifdef _XOPEN_CRYPT
- return _XOPEN_CRYPT;
- #else
- return -1;
- #endif
- case _SC_XOPEN_ENH_I18N:
- #ifdef _XOPEN_ENH_I18N
- return _XOPEN_ENH_I18N;
- #else
- return -1;
- #endif
- case _SC_XOPEN_SHM:
- #ifdef _XOPEN_SHM
- return _XOPEN_SHM;
- #else
- return -1;
- #endif
- case _SC_XOPEN_XPG2:
- #ifdef _XOPEN_XPG2
- return _XOPEN_XPG2;
- #else
- return -1;
- #endif
- case _SC_XOPEN_XPG3:
- #ifdef _XOPEN_XPG3
- return _XOPEN_XPG3;
- #else
- return -1;
- #endif
- case _SC_XOPEN_XPG4:
- #ifdef _XOPEN_XPG4
- return _XOPEN_XPG4;
- #else
- return -1;
- #endif
- case _SC_CHAR_BIT:
- return CHAR_BIT;
- case _SC_CHAR_MAX:
- return CHAR_MAX;
- case _SC_CHAR_MIN:
- return CHAR_MIN;
- case _SC_INT_MAX:
- return INT_MAX;
- case _SC_INT_MIN:
- return INT_MIN;
- case _SC_LONG_BIT:
- return sizeof (long int) * CHAR_BIT;
- case _SC_WORD_BIT:
- return sizeof (int) * CHAR_BIT;
- case _SC_MB_LEN_MAX:
- return MB_LEN_MAX;
- case _SC_NZERO:
- return NZERO;
- case _SC_SSIZE_MAX:
- return _POSIX_SSIZE_MAX;
- case _SC_SCHAR_MAX:
- return SCHAR_MAX;
- case _SC_SCHAR_MIN:
- return SCHAR_MIN;
- case _SC_SHRT_MAX:
- return SHRT_MAX;
- case _SC_SHRT_MIN:
- return SHRT_MIN;
- case _SC_UCHAR_MAX:
- return UCHAR_MAX;
- case _SC_UINT_MAX:
- return UINT_MAX;
- case _SC_ULONG_MAX:
- return ULONG_MAX;
- case _SC_USHRT_MAX:
- return USHRT_MAX;
- case _SC_NL_ARGMAX:
- #ifdef NL_ARGMAX
- return NL_ARGMAX;
- #else
- return -1;
- #endif
- case _SC_NL_LANGMAX:
- #ifdef NL_LANGMAX
- return NL_LANGMAX;
- #else
- return -1;
- #endif
- case _SC_NL_MSGMAX:
- #ifdef NL_MSGMAX
- return NL_MSGMAX;
- #else
- return -1;
- #endif
- case _SC_NL_NMAX:
- #ifdef NL_NMAX
- return NL_NMAX;
- #else
- return -1;
- #endif
- case _SC_NL_SETMAX:
- #ifdef NL_SETMAX
- return NL_SETMAX;
- #else
- return -1;
- #endif
- case _SC_NL_TEXTMAX:
- #ifdef NL_TEXTMAX
- return NL_TEXTMAX;
- #else
- return -1;
- #endif
- case _SC_XBS5_ILP32_OFF32:
- #ifdef _XBS5_ILP32_OFF32
- return _XBS5_ILP32_OFF32;
- #else
- return -1;
- #endif
- case _SC_XBS5_ILP32_OFFBIG:
- #ifdef _XBS5_ILP32_OFFBIG
- return _XBS5_ILP32_OFFBIG;
- #else
- return -1;
- #endif
- case _SC_XBS5_LP64_OFF64:
- #ifdef _XBS5_LP64_OFF64
- return _XBS5_LP64_OFF64;
- #else
- return -1;
- #endif
- case _SC_XBS5_LPBIG_OFFBIG:
- #ifdef _XBS5_LPBIG_OFFBIG
- return _XBS5_LPBIG_OFFBIG;
- #else
- return -1;
- #endif
- case _SC_XOPEN_LEGACY:
- return _XOPEN_LEGACY;
- case _SC_XOPEN_REALTIME:
- #ifdef _XOPEN_REALTIME
- return _XOPEN_REALTIME;
- #else
- return -1;
- #endif
- case _SC_XOPEN_REALTIME_THREADS:
- #ifdef _XOPEN_REALTIME_THREADS
- return _XOPEN_REALTIME_THREADS;
- #else
- return -1;
- #endif
- }
- }
|