# Configuration variables identified by getconf.  The heading of each section
# is of the format TYPE PREFIX SC_PREFIX with the opening curly brace on the
# same line.  TYPE can either be SYSCONF, PATHCONF, CONFSTR or SPEC.  In the
# absence of SC_PREFIX, _SC is used as the SC_PREFIX.  Variable names are put
# one on each line with a curly brace on its own line ending the section.

SPEC POSIX {
  V6_ILP32_OFF32
  V6_ILP32_OFFBIG
  V6_LP64_OFF64
  V6_LPBIG_OFFBIG
  V7_ILP32_OFF32
  V7_ILP32_OFFBIG
  V7_LP64_OFF64
  V7_LPBIG_OFFBIG
}

SYSCONF POSIX {
  ADVISORY_INFO
  ARG_MAX
  ASYNCHRONOUS_IO
  BARRIERS
  BASE
  CHILD_MAX
  C_LANG_SUPPORT
  C_LANG_SUPPORT_R
  CLOCK_SELECTION
  CPUTIME
  DEVICE_IO
  DEVICE_SPECIFIC
  DEVICE_SPECIFIC_R
  FD_MGMT
  FIFO
  FILE_ATTRIBUTES
  FILE_LOCKING
  FILE_SYSTEM
  FSYNC
  JOB_CONTROL
  MAPPED_FILES
  MEMLOCK
  MEMLOCK_RANGE
  MEMORY_PROTECTION
  MESSAGE_PASSING
  MONOTONIC_CLOCK
  MULTI_PROCESS
  NETWORKING
  NGROUPS_MAX
  OPEN_MAX
  PII
  PII_INTERNET
  PII_INTERNET_DGRAM
  PII_INTERNET_STREAM
  PII_OSI
  PII_OSI_CLTS
  PII_OSI_COTS
  PII_OSI_M
  PII_SOCKET
  PII_XTI
  PIPE
  POLL
  PRIORITIZED_IO
  PRIORITY_SCHEDULING
  READER_WRITER_LOCKS
  REALTIME_SIGNALS
  REGEXP
  SAVED_IDS
  SELECT
  SEMAPHORES
  SHARED_MEMORY_OBJECTS
  SHELL
  SIGNALS
  SINGLE_PROCESS
  SPAWN
  SPIN_LOCKS
  SPORADIC_SERVER
  SSIZE_MAX
  STREAM_MAX
  SYNCHRONIZED_IO
  SYSTEM_DATABASE
  SYSTEM_DATABASE_R
  THREAD_ATTR_STACKADDR
  THREAD_ATTR_STACKSIZE
  THREAD_CPUTIME
  THREAD_PRIO_INHERIT
  THREAD_PRIO_PROTECT
  THREAD_PRIORITY_SCHEDULING
  THREAD_PROCESS_SHARED
  THREADS
  THREAD_SAFE_FUNCTIONS
  THREAD_SPORADIC_SERVER
  TIMEOUTS
  TIMERS
  TRACE
  TRACE_EVENT_FILTER
  TRACE_INHERIT
  TRACE_LOG
  TYPED_MEMORY_OBJECTS
  TZNAME_MAX
  USER_GROUPS
  USER_GROUPS_R
  VERSION
# Additional variables not in getconf.
  THREAD_DESTRUCTOR_ITERATIONS
  IPV6
  RAW_SOCKETS
}

SPEC XBS5 _SC_XBS5 {
  ILP32_OFF32
  ILP32_OFFBIG
  LP64_OFF64
  LPBIG_OFFBIG
}
