This is
/usr/local/google/home/jnewlin/src/uclibc/buildroot/output/build/glibc-2.19/build/manual/libc.info,
produced by makeinfo version 4.13 from libc.texinfo.

INFO-DIR-SECTION Software libraries
START-INFO-DIR-ENTRY
* Libc: (libc).                 C library.
END-INFO-DIR-ENTRY

INFO-DIR-SECTION GNU C library functions and macros
START-INFO-DIR-ENTRY
* ALTWERASE: (libc)Local Modes.
* ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions.
* ARG_MAX: (libc)General Limits.
* BC_BASE_MAX: (libc)Utility Limits.
* BC_DIM_MAX: (libc)Utility Limits.
* BC_SCALE_MAX: (libc)Utility Limits.
* BC_STRING_MAX: (libc)Utility Limits.
* BRKINT: (libc)Input Modes.
* BUFSIZ: (libc)Controlling Buffering.
* CCTS_OFLOW: (libc)Control Modes.
* CHILD_MAX: (libc)General Limits.
* CIGNORE: (libc)Control Modes.
* CLK_TCK: (libc)Processor Time.
* CLOCAL: (libc)Control Modes.
* CLOCKS_PER_SEC: (libc)CPU Time.
* COLL_WEIGHTS_MAX: (libc)Utility Limits.
* CPU_CLR: (libc)CPU Affinity.
* CPU_ISSET: (libc)CPU Affinity.
* CPU_SET: (libc)CPU Affinity.
* CPU_SETSIZE: (libc)CPU Affinity.
* CPU_ZERO: (libc)CPU Affinity.
* CREAD: (libc)Control Modes.
* CRTS_IFLOW: (libc)Control Modes.
* CS5: (libc)Control Modes.
* CS6: (libc)Control Modes.
* CS7: (libc)Control Modes.
* CS8: (libc)Control Modes.
* CSIZE: (libc)Control Modes.
* CSTOPB: (libc)Control Modes.
* DES_FAILED: (libc)DES Encryption.
* DTTOIF: (libc)Directory Entries.
* E2BIG: (libc)Error Codes.
* EACCES: (libc)Error Codes.
* EADDRINUSE: (libc)Error Codes.
* EADDRNOTAVAIL: (libc)Error Codes.
* EADV: (libc)Error Codes.
* EAFNOSUPPORT: (libc)Error Codes.
* EAGAIN: (libc)Error Codes.
* EALREADY: (libc)Error Codes.
* EAUTH: (libc)Error Codes.
* EBACKGROUND: (libc)Error Codes.
* EBADE: (libc)Error Codes.
* EBADF: (libc)Error Codes.
* EBADFD: (libc)Error Codes.
* EBADMSG: (libc)Error Codes.
* EBADR: (libc)Error Codes.
* EBADRPC: (libc)Error Codes.
* EBADRQC: (libc)Error Codes.
* EBADSLT: (libc)Error Codes.
* EBFONT: (libc)Error Codes.
* EBUSY: (libc)Error Codes.
* ECANCELED: (libc)Error Codes.
* ECHILD: (libc)Error Codes.
* ECHO: (libc)Local Modes.
* ECHOCTL: (libc)Local Modes.
* ECHOE: (libc)Local Modes.
* ECHOK: (libc)Local Modes.
* ECHOKE: (libc)Local Modes.
* ECHONL: (libc)Local Modes.
* ECHOPRT: (libc)Local Modes.
* ECHRNG: (libc)Error Codes.
* ECOMM: (libc)Error Codes.
* ECONNABORTED: (libc)Error Codes.
* ECONNREFUSED: (libc)Error Codes.
* ECONNRESET: (libc)Error Codes.
* ED: (libc)Error Codes.
* EDEADLK: (libc)Error Codes.
* EDEADLOCK: (libc)Error Codes.
* EDESTADDRREQ: (libc)Error Codes.
* EDIED: (libc)Error Codes.
* EDOM: (libc)Error Codes.
* EDOTDOT: (libc)Error Codes.
* EDQUOT: (libc)Error Codes.
* EEXIST: (libc)Error Codes.
* EFAULT: (libc)Error Codes.
* EFBIG: (libc)Error Codes.
* EFTYPE: (libc)Error Codes.
* EGRATUITOUS: (libc)Error Codes.
* EGREGIOUS: (libc)Error Codes.
* EHOSTDOWN: (libc)Error Codes.
* EHOSTUNREACH: (libc)Error Codes.
* EHWPOISON: (libc)Error Codes.
* EIDRM: (libc)Error Codes.
* EIEIO: (libc)Error Codes.
* EILSEQ: (libc)Error Codes.
* EINPROGRESS: (libc)Error Codes.
* EINTR: (libc)Error Codes.
* EINVAL: (libc)Error Codes.
* EIO: (libc)Error Codes.
* EISCONN: (libc)Error Codes.
* EISDIR: (libc)Error Codes.
* EISNAM: (libc)Error Codes.
* EKEYEXPIRED: (libc)Error Codes.
* EKEYREJECTED: (libc)Error Codes.
* EKEYREVOKED: (libc)Error Codes.
* EL2HLT: (libc)Error Codes.
* EL2NSYNC: (libc)Error Codes.
* EL3HLT: (libc)Error Codes.
* EL3RST: (libc)Error Codes.
* ELIBACC: (libc)Error Codes.
* ELIBBAD: (libc)Error Codes.
* ELIBEXEC: (libc)Error Codes.
* ELIBMAX: (libc)Error Codes.
* ELIBSCN: (libc)Error Codes.
* ELNRNG: (libc)Error Codes.
* ELOOP: (libc)Error Codes.
* EMEDIUMTYPE: (libc)Error Codes.
* EMFILE: (libc)Error Codes.
* EMLINK: (libc)Error Codes.
* EMSGSIZE: (libc)Error Codes.
* EMULTIHOP: (libc)Error Codes.
* ENAMETOOLONG: (libc)Error Codes.
* ENAVAIL: (libc)Error Codes.
* ENEEDAUTH: (libc)Error Codes.
* ENETDOWN: (libc)Error Codes.
* ENETRESET: (libc)Error Codes.
* ENETUNREACH: (libc)Error Codes.
* ENFILE: (libc)Error Codes.
* ENOANO: (libc)Error Codes.
* ENOBUFS: (libc)Error Codes.
* ENOCSI: (libc)Error Codes.
* ENODATA: (libc)Error Codes.
* ENODEV: (libc)Error Codes.
* ENOENT: (libc)Error Codes.
* ENOEXEC: (libc)Error Codes.
* ENOKEY: (libc)Error Codes.
* ENOLCK: (libc)Error Codes.
* ENOLINK: (libc)Error Codes.
* ENOMEDIUM: (libc)Error Codes.
* ENOMEM: (libc)Error Codes.
* ENOMSG: (libc)Error Codes.
* ENONET: (libc)Error Codes.
* ENOPKG: (libc)Error Codes.
* ENOPROTOOPT: (libc)Error Codes.
* ENOSPC: (libc)Error Codes.
* ENOSR: (libc)Error Codes.
* ENOSTR: (libc)Error Codes.
* ENOSYS: (libc)Error Codes.
* ENOTBLK: (libc)Error Codes.
* ENOTCONN: (libc)Error Codes.
* ENOTDIR: (libc)Error Codes.
* ENOTEMPTY: (libc)Error Codes.
* ENOTNAM: (libc)Error Codes.
* ENOTRECOVERABLE: (libc)Error Codes.
* ENOTSOCK: (libc)Error Codes.
* ENOTSUP: (libc)Error Codes.
* ENOTTY: (libc)Error Codes.
* ENOTUNIQ: (libc)Error Codes.
* ENXIO: (libc)Error Codes.
* EOF: (libc)EOF and Errors.
* EOPNOTSUPP: (libc)Error Codes.
* EOVERFLOW: (libc)Error Codes.
* EOWNERDEAD: (libc)Error Codes.
* EPERM: (libc)Error Codes.
* EPFNOSUPPORT: (libc)Error Codes.
* EPIPE: (libc)Error Codes.
* EPROCLIM: (libc)Error Codes.
* EPROCUNAVAIL: (libc)Error Codes.
* EPROGMISMATCH: (libc)Error Codes.
* EPROGUNAVAIL: (libc)Error Codes.
* EPROTO: (libc)Error Codes.
* EPROTONOSUPPORT: (libc)Error Codes.
* EPROTOTYPE: (libc)Error Codes.
* EQUIV_CLASS_MAX: (libc)Utility Limits.
* ERANGE: (libc)Error Codes.
* EREMCHG: (libc)Error Codes.
* EREMOTE: (libc)Error Codes.
* EREMOTEIO: (libc)Error Codes.
* ERESTART: (libc)Error Codes.
* ERFKILL: (libc)Error Codes.
* EROFS: (libc)Error Codes.
* ERPCMISMATCH: (libc)Error Codes.
* ESHUTDOWN: (libc)Error Codes.
* ESOCKTNOSUPPORT: (libc)Error Codes.
* ESPIPE: (libc)Error Codes.
* ESRCH: (libc)Error Codes.
* ESRMNT: (libc)Error Codes.
* ESTALE: (libc)Error Codes.
* ESTRPIPE: (libc)Error Codes.
* ETIME: (libc)Error Codes.
* ETIMEDOUT: (libc)Error Codes.
* ETOOMANYREFS: (libc)Error Codes.
* ETXTBSY: (libc)Error Codes.
* EUCLEAN: (libc)Error Codes.
* EUNATCH: (libc)Error Codes.
* EUSERS: (libc)Error Codes.
* EWOULDBLOCK: (libc)Error Codes.
* EXDEV: (libc)Error Codes.
* EXFULL: (libc)Error Codes.
* EXIT_FAILURE: (libc)Exit Status.
* EXIT_SUCCESS: (libc)Exit Status.
* EXPR_NEST_MAX: (libc)Utility Limits.
* FD_CLOEXEC: (libc)Descriptor Flags.
* FD_CLR: (libc)Waiting for I/O.
* FD_ISSET: (libc)Waiting for I/O.
* FD_SET: (libc)Waiting for I/O.
* FD_SETSIZE: (libc)Waiting for I/O.
* FD_ZERO: (libc)Waiting for I/O.
* FILENAME_MAX: (libc)Limits for Files.
* FLUSHO: (libc)Local Modes.
* FOPEN_MAX: (libc)Opening Streams.
* FP_ILOGB0: (libc)Exponents and Logarithms.
* FP_ILOGBNAN: (libc)Exponents and Logarithms.
* F_DUPFD: (libc)Duplicating Descriptors.
* F_GETFD: (libc)Descriptor Flags.
* F_GETFL: (libc)Getting File Status Flags.
* F_GETLK: (libc)File Locks.
* F_GETOWN: (libc)Interrupt Input.
* F_OK: (libc)Testing File Access.
* F_SETFD: (libc)Descriptor Flags.
* F_SETFL: (libc)Getting File Status Flags.
* F_SETLK: (libc)File Locks.
* F_SETLKW: (libc)File Locks.
* F_SETOWN: (libc)Interrupt Input.
* HUGE_VAL: (libc)Math Error Reporting.
* HUGE_VALF: (libc)Math Error Reporting.
* HUGE_VALL: (libc)Math Error Reporting.
* HUPCL: (libc)Control Modes.
* I: (libc)Complex Numbers.
* ICANON: (libc)Local Modes.
* ICRNL: (libc)Input Modes.
* IEXTEN: (libc)Local Modes.
* IFNAMSIZ: (libc)Interface Naming.
* IFTODT: (libc)Directory Entries.
* IGNBRK: (libc)Input Modes.
* IGNCR: (libc)Input Modes.
* IGNPAR: (libc)Input Modes.
* IMAXBEL: (libc)Input Modes.
* INADDR_ANY: (libc)Host Address Data Type.
* INADDR_BROADCAST: (libc)Host Address Data Type.
* INADDR_LOOPBACK: (libc)Host Address Data Type.
* INADDR_NONE: (libc)Host Address Data Type.
* INFINITY: (libc)Infinity and NaN.
* INLCR: (libc)Input Modes.
* INPCK: (libc)Input Modes.
* IPPORT_RESERVED: (libc)Ports.
* IPPORT_USERRESERVED: (libc)Ports.
* ISIG: (libc)Local Modes.
* ISTRIP: (libc)Input Modes.
* IXANY: (libc)Input Modes.
* IXOFF: (libc)Input Modes.
* IXON: (libc)Input Modes.
* LINE_MAX: (libc)Utility Limits.
* LINK_MAX: (libc)Limits for Files.
* L_ctermid: (libc)Identifying the Terminal.
* L_cuserid: (libc)Who Logged In.
* L_tmpnam: (libc)Temporary Files.
* MAXNAMLEN: (libc)Limits for Files.
* MAXSYMLINKS: (libc)Symbolic Links.
* MAX_CANON: (libc)Limits for Files.
* MAX_INPUT: (libc)Limits for Files.
* MB_CUR_MAX: (libc)Selecting the Conversion.
* MB_LEN_MAX: (libc)Selecting the Conversion.
* MDMBUF: (libc)Control Modes.
* MSG_DONTROUTE: (libc)Socket Data Options.
* MSG_OOB: (libc)Socket Data Options.
* MSG_PEEK: (libc)Socket Data Options.
* NAME_MAX: (libc)Limits for Files.
* NAN: (libc)Infinity and NaN.
* NCCS: (libc)Mode Data Types.
* NGROUPS_MAX: (libc)General Limits.
* NOFLSH: (libc)Local Modes.
* NOKERNINFO: (libc)Local Modes.
* NSIG: (libc)Standard Signals.
* NULL: (libc)Null Pointer Constant.
* ONLCR: (libc)Output Modes.
* ONOEOT: (libc)Output Modes.
* OPEN_MAX: (libc)General Limits.
* OPOST: (libc)Output Modes.
* OXTABS: (libc)Output Modes.
* O_ACCMODE: (libc)Access Modes.
* O_APPEND: (libc)Operating Modes.
* O_ASYNC: (libc)Operating Modes.
* O_CREAT: (libc)Open-time Flags.
* O_EXCL: (libc)Open-time Flags.
* O_EXEC: (libc)Access Modes.
* O_EXLOCK: (libc)Open-time Flags.
* O_FSYNC: (libc)Operating Modes.
* O_IGNORE_CTTY: (libc)Open-time Flags.
* O_NDELAY: (libc)Operating Modes.
* O_NOATIME: (libc)Operating Modes.
* O_NOCTTY: (libc)Open-time Flags.
* O_NOLINK: (libc)Open-time Flags.
* O_NONBLOCK: (libc)Open-time Flags.
* O_NONBLOCK: (libc)Operating Modes.
* O_NOTRANS: (libc)Open-time Flags.
* O_RDONLY: (libc)Access Modes.
* O_RDWR: (libc)Access Modes.
* O_READ: (libc)Access Modes.
* O_SHLOCK: (libc)Open-time Flags.
* O_SYNC: (libc)Operating Modes.
* O_TRUNC: (libc)Open-time Flags.
* O_WRITE: (libc)Access Modes.
* O_WRONLY: (libc)Access Modes.
* PARENB: (libc)Control Modes.
* PARMRK: (libc)Input Modes.
* PARODD: (libc)Control Modes.
* PATH_MAX: (libc)Limits for Files.
* PA_FLAG_MASK: (libc)Parsing a Template String.
* PENDIN: (libc)Local Modes.
* PF_FILE: (libc)Local Namespace Details.
* PF_INET6: (libc)Internet Namespace.
* PF_INET: (libc)Internet Namespace.
* PF_LOCAL: (libc)Local Namespace Details.
* PF_UNIX: (libc)Local Namespace Details.
* PIPE_BUF: (libc)Limits for Files.
* P_tmpdir: (libc)Temporary Files.
* RAND_MAX: (libc)ISO Random.
* RE_DUP_MAX: (libc)General Limits.
* RLIM_INFINITY: (libc)Limits on Resources.
* R_OK: (libc)Testing File Access.
* SA_NOCLDSTOP: (libc)Flags for Sigaction.
* SA_ONSTACK: (libc)Flags for Sigaction.
* SA_RESTART: (libc)Flags for Sigaction.
* SEEK_CUR: (libc)File Positioning.
* SEEK_END: (libc)File Positioning.
* SEEK_SET: (libc)File Positioning.
* SIGABRT: (libc)Program Error Signals.
* SIGALRM: (libc)Alarm Signals.
* SIGBUS: (libc)Program Error Signals.
* SIGCHLD: (libc)Job Control Signals.
* SIGCLD: (libc)Job Control Signals.
* SIGCONT: (libc)Job Control Signals.
* SIGEMT: (libc)Program Error Signals.
* SIGFPE: (libc)Program Error Signals.
* SIGHUP: (libc)Termination Signals.
* SIGILL: (libc)Program Error Signals.
* SIGINFO: (libc)Miscellaneous Signals.
* SIGINT: (libc)Termination Signals.
* SIGIO: (libc)Asynchronous I/O Signals.
* SIGIOT: (libc)Program Error Signals.
* SIGKILL: (libc)Termination Signals.
* SIGLOST: (libc)Operation Error Signals.
* SIGPIPE: (libc)Operation Error Signals.
* SIGPOLL: (libc)Asynchronous I/O Signals.
* SIGPROF: (libc)Alarm Signals.
* SIGQUIT: (libc)Termination Signals.
* SIGSEGV: (libc)Program Error Signals.
* SIGSTOP: (libc)Job Control Signals.
* SIGSYS: (libc)Program Error Signals.
* SIGTERM: (libc)Termination Signals.
* SIGTRAP: (libc)Program Error Signals.
* SIGTSTP: (libc)Job Control Signals.
* SIGTTIN: (libc)Job Control Signals.
* SIGTTOU: (libc)Job Control Signals.
* SIGURG: (libc)Asynchronous I/O Signals.
* SIGUSR1: (libc)Miscellaneous Signals.
* SIGUSR2: (libc)Miscellaneous Signals.
* SIGVTALRM: (libc)Alarm Signals.
* SIGWINCH: (libc)Miscellaneous Signals.
* SIGXCPU: (libc)Operation Error Signals.
* SIGXFSZ: (libc)Operation Error Signals.
* SIG_ERR: (libc)Basic Signal Handling.
* SOCK_DGRAM: (libc)Communication Styles.
* SOCK_RAW: (libc)Communication Styles.
* SOCK_RDM: (libc)Communication Styles.
* SOCK_SEQPACKET: (libc)Communication Styles.
* SOCK_STREAM: (libc)Communication Styles.
* SOL_SOCKET: (libc)Socket-Level Options.
* SSIZE_MAX: (libc)General Limits.
* STREAM_MAX: (libc)General Limits.
* SUN_LEN: (libc)Local Namespace Details.
* SV_INTERRUPT: (libc)BSD Handler.
* SV_ONSTACK: (libc)BSD Handler.
* SV_RESETHAND: (libc)BSD Handler.
* S_IFMT: (libc)Testing File Type.
* S_ISBLK: (libc)Testing File Type.
* S_ISCHR: (libc)Testing File Type.
* S_ISDIR: (libc)Testing File Type.
* S_ISFIFO: (libc)Testing File Type.
* S_ISLNK: (libc)Testing File Type.
* S_ISREG: (libc)Testing File Type.
* S_ISSOCK: (libc)Testing File Type.
* S_TYPEISMQ: (libc)Testing File Type.
* S_TYPEISSEM: (libc)Testing File Type.
* S_TYPEISSHM: (libc)Testing File Type.
* TMP_MAX: (libc)Temporary Files.
* TOSTOP: (libc)Local Modes.
* TZNAME_MAX: (libc)General Limits.
* VDISCARD: (libc)Other Special.
* VDSUSP: (libc)Signal Characters.
* VEOF: (libc)Editing Characters.
* VEOL2: (libc)Editing Characters.
* VEOL: (libc)Editing Characters.
* VERASE: (libc)Editing Characters.
* VINTR: (libc)Signal Characters.
* VKILL: (libc)Editing Characters.
* VLNEXT: (libc)Other Special.
* VMIN: (libc)Noncanonical Input.
* VQUIT: (libc)Signal Characters.
* VREPRINT: (libc)Editing Characters.
* VSTART: (libc)Start/Stop Characters.
* VSTATUS: (libc)Other Special.
* VSTOP: (libc)Start/Stop Characters.
* VSUSP: (libc)Signal Characters.
* VTIME: (libc)Noncanonical Input.
* VWERASE: (libc)Editing Characters.
* WCHAR_MAX: (libc)Extended Char Intro.
* WCHAR_MIN: (libc)Extended Char Intro.
* WCOREDUMP: (libc)Process Completion Status.
* WEOF: (libc)EOF and Errors.
* WEOF: (libc)Extended Char Intro.
* WEXITSTATUS: (libc)Process Completion Status.
* WIFEXITED: (libc)Process Completion Status.
* WIFSIGNALED: (libc)Process Completion Status.
* WIFSTOPPED: (libc)Process Completion Status.
* WSTOPSIG: (libc)Process Completion Status.
* WTERMSIG: (libc)Process Completion Status.
* W_OK: (libc)Testing File Access.
* X_OK: (libc)Testing File Access.
* _Complex_I: (libc)Complex Numbers.
* _Exit: (libc)Termination Internals.
* _IOFBF: (libc)Controlling Buffering.
* _IOLBF: (libc)Controlling Buffering.
* _IONBF: (libc)Controlling Buffering.
* _Imaginary_I: (libc)Complex Numbers.
* _PATH_UTMP: (libc)Manipulating the Database.
* _PATH_WTMP: (libc)Manipulating the Database.
* _POSIX2_C_DEV: (libc)System Options.
* _POSIX2_C_VERSION: (libc)Version Supported.
* _POSIX2_FORT_DEV: (libc)System Options.
* _POSIX2_FORT_RUN: (libc)System Options.
* _POSIX2_LOCALEDEF: (libc)System Options.
* _POSIX2_SW_DEV: (libc)System Options.
* _POSIX_CHOWN_RESTRICTED: (libc)Options for Files.
* _POSIX_JOB_CONTROL: (libc)System Options.
* _POSIX_NO_TRUNC: (libc)Options for Files.
* _POSIX_SAVED_IDS: (libc)System Options.
* _POSIX_VDISABLE: (libc)Options for Files.
* _POSIX_VERSION: (libc)Version Supported.
* __fbufsize: (libc)Controlling Buffering.
* __flbf: (libc)Controlling Buffering.
* __fpending: (libc)Controlling Buffering.
* __fpurge: (libc)Flushing Buffers.
* __freadable: (libc)Opening Streams.
* __freading: (libc)Opening Streams.
* __fsetlocking: (libc)Streams and Threads.
* __fwritable: (libc)Opening Streams.
* __fwriting: (libc)Opening Streams.
* __gconv_end_fct: (libc)glibc iconv Implementation.
* __gconv_fct: (libc)glibc iconv Implementation.
* __gconv_init_fct: (libc)glibc iconv Implementation.
* __ppc_get_timebase: (libc)PowerPC.
* __ppc_get_timebase_freq: (libc)PowerPC.
* __ppc_mdoio: (libc)PowerPC.
* __ppc_mdoom: (libc)PowerPC.
* __ppc_set_ppr_low: (libc)PowerPC.
* __ppc_set_ppr_med: (libc)PowerPC.
* __ppc_set_ppr_med_low: (libc)PowerPC.
* __ppc_yield: (libc)PowerPC.
* __va_copy: (libc)Argument Macros.
* _exit: (libc)Termination Internals.
* _flushlbf: (libc)Flushing Buffers.
* _tolower: (libc)Case Conversion.
* _toupper: (libc)Case Conversion.
* a64l: (libc)Encode Binary Data.
* abort: (libc)Aborting a Program.
* abs: (libc)Absolute Value.
* accept: (libc)Accepting Connections.
* access: (libc)Testing File Access.
* acos: (libc)Inverse Trig Functions.
* acosf: (libc)Inverse Trig Functions.
* acosh: (libc)Hyperbolic Functions.
* acoshf: (libc)Hyperbolic Functions.
* acoshl: (libc)Hyperbolic Functions.
* acosl: (libc)Inverse Trig Functions.
* addmntent: (libc)mtab.
* addseverity: (libc)Adding Severity Classes.
* adjtime: (libc)High-Resolution Calendar.
* adjtimex: (libc)High-Resolution Calendar.
* aio_cancel64: (libc)Cancel AIO Operations.
* aio_cancel: (libc)Cancel AIO Operations.
* aio_error64: (libc)Status of AIO Operations.
* aio_error: (libc)Status of AIO Operations.
* aio_fsync64: (libc)Synchronizing AIO Operations.
* aio_fsync: (libc)Synchronizing AIO Operations.
* aio_init: (libc)Configuration of AIO.
* aio_read64: (libc)Asynchronous Reads/Writes.
* aio_read: (libc)Asynchronous Reads/Writes.
* aio_return64: (libc)Status of AIO Operations.
* aio_return: (libc)Status of AIO Operations.
* aio_suspend64: (libc)Synchronizing AIO Operations.
* aio_suspend: (libc)Synchronizing AIO Operations.
* aio_write64: (libc)Asynchronous Reads/Writes.
* aio_write: (libc)Asynchronous Reads/Writes.
* alarm: (libc)Setting an Alarm.
* aligned_alloc: (libc)Aligned Memory Blocks.
* alloca: (libc)Variable Size Automatic.
* alphasort64: (libc)Scanning Directory Content.
* alphasort: (libc)Scanning Directory Content.
* argp_error: (libc)Argp Helper Functions.
* argp_failure: (libc)Argp Helper Functions.
* argp_help: (libc)Argp Help.
* argp_parse: (libc)Argp.
* argp_state_help: (libc)Argp Helper Functions.
* argp_usage: (libc)Argp Helper Functions.
* argz_add: (libc)Argz Functions.
* argz_add_sep: (libc)Argz Functions.
* argz_append: (libc)Argz Functions.
* argz_count: (libc)Argz Functions.
* argz_create: (libc)Argz Functions.
* argz_create_sep: (libc)Argz Functions.
* argz_delete: (libc)Argz Functions.
* argz_extract: (libc)Argz Functions.
* argz_insert: (libc)Argz Functions.
* argz_next: (libc)Argz Functions.
* argz_replace: (libc)Argz Functions.
* argz_stringify: (libc)Argz Functions.
* asctime: (libc)Formatting Calendar Time.
* asctime_r: (libc)Formatting Calendar Time.
* asin: (libc)Inverse Trig Functions.
* asinf: (libc)Inverse Trig Functions.
* asinh: (libc)Hyperbolic Functions.
* asinhf: (libc)Hyperbolic Functions.
* asinhl: (libc)Hyperbolic Functions.
* asinl: (libc)Inverse Trig Functions.
* asprintf: (libc)Dynamic Output.
* assert: (libc)Consistency Checking.
* assert_perror: (libc)Consistency Checking.
* atan2: (libc)Inverse Trig Functions.
* atan2f: (libc)Inverse Trig Functions.
* atan2l: (libc)Inverse Trig Functions.
* atan: (libc)Inverse Trig Functions.
* atanf: (libc)Inverse Trig Functions.
* atanh: (libc)Hyperbolic Functions.
* atanhf: (libc)Hyperbolic Functions.
* atanhl: (libc)Hyperbolic Functions.
* atanl: (libc)Inverse Trig Functions.
* atexit: (libc)Cleanups on Exit.
* atof: (libc)Parsing of Floats.
* atoi: (libc)Parsing of Integers.
* atol: (libc)Parsing of Integers.
* atoll: (libc)Parsing of Integers.
* backtrace: (libc)Backtraces.
* backtrace_symbols: (libc)Backtraces.
* backtrace_symbols_fd: (libc)Backtraces.
* basename: (libc)Finding Tokens in a String.
* basename: (libc)Finding Tokens in a String.
* bcmp: (libc)String/Array Comparison.
* bcopy: (libc)Copying and Concatenation.
* bind: (libc)Setting Address.
* bind_textdomain_codeset: (libc)Charset conversion in gettext.
* bindtextdomain: (libc)Locating gettext catalog.
* brk: (libc)Resizing the Data Segment.
* bsearch: (libc)Array Search Function.
* btowc: (libc)Converting a Character.
* bzero: (libc)Copying and Concatenation.
* cabs: (libc)Absolute Value.
* cabsf: (libc)Absolute Value.
* cabsl: (libc)Absolute Value.
* cacos: (libc)Inverse Trig Functions.
* cacosf: (libc)Inverse Trig Functions.
* cacosh: (libc)Hyperbolic Functions.
* cacoshf: (libc)Hyperbolic Functions.
* cacoshl: (libc)Hyperbolic Functions.
* cacosl: (libc)Inverse Trig Functions.
* calloc: (libc)Allocating Cleared Space.
* canonicalize_file_name: (libc)Symbolic Links.
* carg: (libc)Operations on Complex.
* cargf: (libc)Operations on Complex.
* cargl: (libc)Operations on Complex.
* casin: (libc)Inverse Trig Functions.
* casinf: (libc)Inverse Trig Functions.
* casinh: (libc)Hyperbolic Functions.
* casinhf: (libc)Hyperbolic Functions.
* casinhl: (libc)Hyperbolic Functions.
* casinl: (libc)Inverse Trig Functions.
* catan: (libc)Inverse Trig Functions.
* catanf: (libc)Inverse Trig Functions.
* catanh: (libc)Hyperbolic Functions.
* catanhf: (libc)Hyperbolic Functions.
* catanhl: (libc)Hyperbolic Functions.
* catanl: (libc)Inverse Trig Functions.
* catclose: (libc)The catgets Functions.
* catgets: (libc)The catgets Functions.
* catopen: (libc)The catgets Functions.
* cbc_crypt: (libc)DES Encryption.
* cbrt: (libc)Exponents and Logarithms.
* cbrtf: (libc)Exponents and Logarithms.
* cbrtl: (libc)Exponents and Logarithms.
* ccos: (libc)Trig Functions.
* ccosf: (libc)Trig Functions.
* ccosh: (libc)Hyperbolic Functions.
* ccoshf: (libc)Hyperbolic Functions.
* ccoshl: (libc)Hyperbolic Functions.
* ccosl: (libc)Trig Functions.
* ceil: (libc)Rounding Functions.
* ceilf: (libc)Rounding Functions.
* ceill: (libc)Rounding Functions.
* cexp: (libc)Exponents and Logarithms.
* cexpf: (libc)Exponents and Logarithms.
* cexpl: (libc)Exponents and Logarithms.
* cfgetispeed: (libc)Line Speed.
* cfgetospeed: (libc)Line Speed.
* cfmakeraw: (libc)Noncanonical Input.
* cfree: (libc)Freeing after Malloc.
* cfsetispeed: (libc)Line Speed.
* cfsetospeed: (libc)Line Speed.
* cfsetspeed: (libc)Line Speed.
* chdir: (libc)Working Directory.
* chmod: (libc)Setting Permissions.
* chown: (libc)File Owner.
* cimag: (libc)Operations on Complex.
* cimagf: (libc)Operations on Complex.
* cimagl: (libc)Operations on Complex.
* clearenv: (libc)Environment Access.
* clearerr: (libc)Error Recovery.
* clearerr_unlocked: (libc)Error Recovery.
* clock: (libc)CPU Time.
* clog10: (libc)Exponents and Logarithms.
* clog10f: (libc)Exponents and Logarithms.
* clog10l: (libc)Exponents and Logarithms.
* clog: (libc)Exponents and Logarithms.
* clogf: (libc)Exponents and Logarithms.
* clogl: (libc)Exponents and Logarithms.
* close: (libc)Opening and Closing Files.
* closedir: (libc)Reading/Closing Directory.
* closelog: (libc)closelog.
* confstr: (libc)String Parameters.
* conj: (libc)Operations on Complex.
* conjf: (libc)Operations on Complex.
* conjl: (libc)Operations on Complex.
* connect: (libc)Connecting.
* copysign: (libc)FP Bit Twiddling.
* copysignf: (libc)FP Bit Twiddling.
* copysignl: (libc)FP Bit Twiddling.
* cos: (libc)Trig Functions.
* cosf: (libc)Trig Functions.
* cosh: (libc)Hyperbolic Functions.
* coshf: (libc)Hyperbolic Functions.
* coshl: (libc)Hyperbolic Functions.
* cosl: (libc)Trig Functions.
* cpow: (libc)Exponents and Logarithms.
* cpowf: (libc)Exponents and Logarithms.
* cpowl: (libc)Exponents and Logarithms.
* cproj: (libc)Operations on Complex.
* cprojf: (libc)Operations on Complex.
* cprojl: (libc)Operations on Complex.
* creal: (libc)Operations on Complex.
* crealf: (libc)Operations on Complex.
* creall: (libc)Operations on Complex.
* creat64: (libc)Opening and Closing Files.
* creat: (libc)Opening and Closing Files.
* crypt: (libc)crypt.
* crypt_r: (libc)crypt.
* csin: (libc)Trig Functions.
* csinf: (libc)Trig Functions.
* csinh: (libc)Hyperbolic Functions.
* csinhf: (libc)Hyperbolic Functions.
* csinhl: (libc)Hyperbolic Functions.
* csinl: (libc)Trig Functions.
* csqrt: (libc)Exponents and Logarithms.
* csqrtf: (libc)Exponents and Logarithms.
* csqrtl: (libc)Exponents and Logarithms.
* ctan: (libc)Trig Functions.
* ctanf: (libc)Trig Functions.
* ctanh: (libc)Hyperbolic Functions.
* ctanhf: (libc)Hyperbolic Functions.
* ctanhl: (libc)Hyperbolic Functions.
* ctanl: (libc)Trig Functions.
* ctermid: (libc)Identifying the Terminal.
* ctime: (libc)Formatting Calendar Time.
* ctime_r: (libc)Formatting Calendar Time.
* cuserid: (libc)Who Logged In.
* dcgettext: (libc)Translation with gettext.
* dcngettext: (libc)Advanced gettext functions.
* des_setparity: (libc)DES Encryption.
* dgettext: (libc)Translation with gettext.
* difftime: (libc)Elapsed Time.
* dirfd: (libc)Opening a Directory.
* dirname: (libc)Finding Tokens in a String.
* div: (libc)Integer Division.
* dngettext: (libc)Advanced gettext functions.
* drand48: (libc)SVID Random.
* drand48_r: (libc)SVID Random.
* drem: (libc)Remainder Functions.
* dremf: (libc)Remainder Functions.
* dreml: (libc)Remainder Functions.
* dup2: (libc)Duplicating Descriptors.
* dup: (libc)Duplicating Descriptors.
* ecb_crypt: (libc)DES Encryption.
* ecvt: (libc)System V Number Conversion.
* ecvt_r: (libc)System V Number Conversion.
* encrypt: (libc)DES Encryption.
* encrypt_r: (libc)DES Encryption.
* endfsent: (libc)fstab.
* endgrent: (libc)Scanning All Groups.
* endhostent: (libc)Host Names.
* endmntent: (libc)mtab.
* endnetent: (libc)Networks Database.
* endnetgrent: (libc)Lookup Netgroup.
* endprotoent: (libc)Protocols Database.
* endpwent: (libc)Scanning All Users.
* endservent: (libc)Services Database.
* endutent: (libc)Manipulating the Database.
* endutxent: (libc)XPG Functions.
* envz_add: (libc)Envz Functions.
* envz_entry: (libc)Envz Functions.
* envz_get: (libc)Envz Functions.
* envz_merge: (libc)Envz Functions.
* envz_strip: (libc)Envz Functions.
* erand48: (libc)SVID Random.
* erand48_r: (libc)SVID Random.
* erf: (libc)Special Functions.
* erfc: (libc)Special Functions.
* erfcf: (libc)Special Functions.
* erfcl: (libc)Special Functions.
* erff: (libc)Special Functions.
* erfl: (libc)Special Functions.
* err: (libc)Error Messages.
* errno: (libc)Checking for Errors.
* error: (libc)Error Messages.
* error_at_line: (libc)Error Messages.
* errx: (libc)Error Messages.
* execl: (libc)Executing a File.
* execle: (libc)Executing a File.
* execlp: (libc)Executing a File.
* execv: (libc)Executing a File.
* execve: (libc)Executing a File.
* execvp: (libc)Executing a File.
* exit: (libc)Normal Termination.
* exp10: (libc)Exponents and Logarithms.
* exp10f: (libc)Exponents and Logarithms.
* exp10l: (libc)Exponents and Logarithms.
* exp2: (libc)Exponents and Logarithms.
* exp2f: (libc)Exponents and Logarithms.
* exp2l: (libc)Exponents and Logarithms.
* exp: (libc)Exponents and Logarithms.
* expf: (libc)Exponents and Logarithms.
* expl: (libc)Exponents and Logarithms.
* expm1: (libc)Exponents and Logarithms.
* expm1f: (libc)Exponents and Logarithms.
* expm1l: (libc)Exponents and Logarithms.
* fabs: (libc)Absolute Value.
* fabsf: (libc)Absolute Value.
* fabsl: (libc)Absolute Value.
* fchdir: (libc)Working Directory.
* fchmod: (libc)Setting Permissions.
* fchown: (libc)File Owner.
* fclose: (libc)Closing Streams.
* fcloseall: (libc)Closing Streams.
* fcntl: (libc)Control Operations.
* fcvt: (libc)System V Number Conversion.
* fcvt_r: (libc)System V Number Conversion.
* fdatasync: (libc)Synchronizing I/O.
* fdim: (libc)Misc FP Arithmetic.
* fdimf: (libc)Misc FP Arithmetic.
* fdiml: (libc)Misc FP Arithmetic.
* fdopen: (libc)Descriptors and Streams.
* fdopendir: (libc)Opening a Directory.
* feclearexcept: (libc)Status bit operations.
* fedisableexcept: (libc)Control Functions.
* feenableexcept: (libc)Control Functions.
* fegetenv: (libc)Control Functions.
* fegetexcept: (libc)Control Functions.
* fegetexceptflag: (libc)Status bit operations.
* fegetround: (libc)Rounding.
* feholdexcept: (libc)Control Functions.
* feof: (libc)EOF and Errors.
* feof_unlocked: (libc)EOF and Errors.
* feraiseexcept: (libc)Status bit operations.
* ferror: (libc)EOF and Errors.
* ferror_unlocked: (libc)EOF and Errors.
* fesetenv: (libc)Control Functions.
* fesetexceptflag: (libc)Status bit operations.
* fesetround: (libc)Rounding.
* fetestexcept: (libc)Status bit operations.
* feupdateenv: (libc)Control Functions.
* fflush: (libc)Flushing Buffers.
* fflush_unlocked: (libc)Flushing Buffers.
* fgetc: (libc)Character Input.
* fgetc_unlocked: (libc)Character Input.
* fgetgrent: (libc)Scanning All Groups.
* fgetgrent_r: (libc)Scanning All Groups.
* fgetpos64: (libc)Portable Positioning.
* fgetpos: (libc)Portable Positioning.
* fgetpwent: (libc)Scanning All Users.
* fgetpwent_r: (libc)Scanning All Users.
* fgets: (libc)Line Input.
* fgets_unlocked: (libc)Line Input.
* fgetwc: (libc)Character Input.
* fgetwc_unlocked: (libc)Character Input.
* fgetws: (libc)Line Input.
* fgetws_unlocked: (libc)Line Input.
* fileno: (libc)Descriptors and Streams.
* fileno_unlocked: (libc)Descriptors and Streams.
* finite: (libc)Floating Point Classes.
* finitef: (libc)Floating Point Classes.
* finitel: (libc)Floating Point Classes.
* flockfile: (libc)Streams and Threads.
* floor: (libc)Rounding Functions.
* floorf: (libc)Rounding Functions.
* floorl: (libc)Rounding Functions.
* fma: (libc)Misc FP Arithmetic.
* fmaf: (libc)Misc FP Arithmetic.
* fmal: (libc)Misc FP Arithmetic.
* fmax: (libc)Misc FP Arithmetic.
* fmaxf: (libc)Misc FP Arithmetic.
* fmaxl: (libc)Misc FP Arithmetic.
* fmemopen: (libc)String Streams.
* fmin: (libc)Misc FP Arithmetic.
* fminf: (libc)Misc FP Arithmetic.
* fminl: (libc)Misc FP Arithmetic.
* fmod: (libc)Remainder Functions.
* fmodf: (libc)Remainder Functions.
* fmodl: (libc)Remainder Functions.
* fmtmsg: (libc)Printing Formatted Messages.
* fnmatch: (libc)Wildcard Matching.
* fopen64: (libc)Opening Streams.
* fopen: (libc)Opening Streams.
* fopencookie: (libc)Streams and Cookies.
* fork: (libc)Creating a Process.
* forkpty: (libc)Pseudo-Terminal Pairs.
* fpathconf: (libc)Pathconf.
* fpclassify: (libc)Floating Point Classes.
* fprintf: (libc)Formatted Output Functions.
* fputc: (libc)Simple Output.
* fputc_unlocked: (libc)Simple Output.
* fputs: (libc)Simple Output.
* fputs_unlocked: (libc)Simple Output.
* fputwc: (libc)Simple Output.
* fputwc_unlocked: (libc)Simple Output.
* fputws: (libc)Simple Output.
* fputws_unlocked: (libc)Simple Output.
* fread: (libc)Block Input/Output.
* fread_unlocked: (libc)Block Input/Output.
* free: (libc)Freeing after Malloc.
* freopen64: (libc)Opening Streams.
* freopen: (libc)Opening Streams.
* frexp: (libc)Normalization Functions.
* frexpf: (libc)Normalization Functions.
* frexpl: (libc)Normalization Functions.
* fscanf: (libc)Formatted Input Functions.
* fseek: (libc)File Positioning.
* fseeko64: (libc)File Positioning.
* fseeko: (libc)File Positioning.
* fsetpos64: (libc)Portable Positioning.
* fsetpos: (libc)Portable Positioning.
* fstat64: (libc)Reading Attributes.
* fstat: (libc)Reading Attributes.
* fsync: (libc)Synchronizing I/O.
* ftell: (libc)File Positioning.
* ftello64: (libc)File Positioning.
* ftello: (libc)File Positioning.
* ftruncate64: (libc)File Size.
* ftruncate: (libc)File Size.
* ftrylockfile: (libc)Streams and Threads.
* ftw64: (libc)Working with Directory Trees.
* ftw: (libc)Working with Directory Trees.
* funlockfile: (libc)Streams and Threads.
* futimes: (libc)File Times.
* fwide: (libc)Streams and I18N.
* fwprintf: (libc)Formatted Output Functions.
* fwrite: (libc)Block Input/Output.
* fwrite_unlocked: (libc)Block Input/Output.
* fwscanf: (libc)Formatted Input Functions.
* gamma: (libc)Special Functions.
* gammaf: (libc)Special Functions.
* gammal: (libc)Special Functions.
* gcvt: (libc)System V Number Conversion.
* get_avphys_pages: (libc)Query Memory Parameters.
* get_current_dir_name: (libc)Working Directory.
* get_nprocs: (libc)Processor Resources.
* get_nprocs_conf: (libc)Processor Resources.
* get_phys_pages: (libc)Query Memory Parameters.
* getauxval: (libc)Auxiliary Vector.
* getc: (libc)Character Input.
* getc_unlocked: (libc)Character Input.
* getchar: (libc)Character Input.
* getchar_unlocked: (libc)Character Input.
* getcontext: (libc)System V contexts.
* getcwd: (libc)Working Directory.
* getdate: (libc)General Time String Parsing.
* getdate_r: (libc)General Time String Parsing.
* getdelim: (libc)Line Input.
* getdomainnname: (libc)Host Identification.
* getegid: (libc)Reading Persona.
* getenv: (libc)Environment Access.
* geteuid: (libc)Reading Persona.
* getfsent: (libc)fstab.
* getfsfile: (libc)fstab.
* getfsspec: (libc)fstab.
* getgid: (libc)Reading Persona.
* getgrent: (libc)Scanning All Groups.
* getgrent_r: (libc)Scanning All Groups.
* getgrgid: (libc)Lookup Group.
* getgrgid_r: (libc)Lookup Group.
* getgrnam: (libc)Lookup Group.
* getgrnam_r: (libc)Lookup Group.
* getgrouplist: (libc)Setting Groups.
* getgroups: (libc)Reading Persona.
* gethostbyaddr: (libc)Host Names.
* gethostbyaddr_r: (libc)Host Names.
* gethostbyname2: (libc)Host Names.
* gethostbyname2_r: (libc)Host Names.
* gethostbyname: (libc)Host Names.
* gethostbyname_r: (libc)Host Names.
* gethostent: (libc)Host Names.
* gethostid: (libc)Host Identification.
* gethostname: (libc)Host Identification.
* getitimer: (libc)Setting an Alarm.
* getline: (libc)Line Input.
* getloadavg: (libc)Processor Resources.
* getlogin: (libc)Who Logged In.
* getmntent: (libc)mtab.
* getmntent_r: (libc)mtab.
* getnetbyaddr: (libc)Networks Database.
* getnetbyname: (libc)Networks Database.
* getnetent: (libc)Networks Database.
* getnetgrent: (libc)Lookup Netgroup.
* getnetgrent_r: (libc)Lookup Netgroup.
* getopt: (libc)Using Getopt.
* getopt_long: (libc)Getopt Long Options.
* getopt_long_only: (libc)Getopt Long Options.
* getpagesize: (libc)Query Memory Parameters.
* getpass: (libc)getpass.
* getpeername: (libc)Who is Connected.
* getpgid: (libc)Process Group Functions.
* getpgrp: (libc)Process Group Functions.
* getpid: (libc)Process Identification.
* getppid: (libc)Process Identification.
* getpriority: (libc)Traditional Scheduling Functions.
* getprotobyname: (libc)Protocols Database.
* getprotobynumber: (libc)Protocols Database.
* getprotoent: (libc)Protocols Database.
* getpt: (libc)Allocation.
* getpwent: (libc)Scanning All Users.
* getpwent_r: (libc)Scanning All Users.
* getpwnam: (libc)Lookup User.
* getpwnam_r: (libc)Lookup User.
* getpwuid: (libc)Lookup User.
* getpwuid_r: (libc)Lookup User.
* getrlimit64: (libc)Limits on Resources.
* getrlimit: (libc)Limits on Resources.
* getrusage: (libc)Resource Usage.
* gets: (libc)Line Input.
* getservbyname: (libc)Services Database.
* getservbyport: (libc)Services Database.
* getservent: (libc)Services Database.
* getsid: (libc)Process Group Functions.
* getsockname: (libc)Reading Address.
* getsockopt: (libc)Socket Option Functions.
* getsubopt: (libc)Suboptions.
* gettext: (libc)Translation with gettext.
* gettimeofday: (libc)High-Resolution Calendar.
* getuid: (libc)Reading Persona.
* getumask: (libc)Setting Permissions.
* getutent: (libc)Manipulating the Database.
* getutent_r: (libc)Manipulating the Database.
* getutid: (libc)Manipulating the Database.
* getutid_r: (libc)Manipulating the Database.
* getutline: (libc)Manipulating the Database.
* getutline_r: (libc)Manipulating the Database.
* getutmp: (libc)XPG Functions.
* getutmpx: (libc)XPG Functions.
* getutxent: (libc)XPG Functions.
* getutxid: (libc)XPG Functions.
* getutxline: (libc)XPG Functions.
* getw: (libc)Character Input.
* getwc: (libc)Character Input.
* getwc_unlocked: (libc)Character Input.
* getwchar: (libc)Character Input.
* getwchar_unlocked: (libc)Character Input.
* getwd: (libc)Working Directory.
* glob64: (libc)Calling Glob.
* glob: (libc)Calling Glob.
* globfree64: (libc)More Flags for Globbing.
* globfree: (libc)More Flags for Globbing.
* gmtime: (libc)Broken-down Time.
* gmtime_r: (libc)Broken-down Time.
* grantpt: (libc)Allocation.
* gsignal: (libc)Signaling Yourself.
* gtty: (libc)BSD Terminal Modes.
* hasmntopt: (libc)mtab.
* hcreate: (libc)Hash Search Function.
* hcreate_r: (libc)Hash Search Function.
* hdestroy: (libc)Hash Search Function.
* hdestroy_r: (libc)Hash Search Function.
* hsearch: (libc)Hash Search Function.
* hsearch_r: (libc)Hash Search Function.
* htonl: (libc)Byte Order.
* htons: (libc)Byte Order.
* hypot: (libc)Exponents and Logarithms.
* hypotf: (libc)Exponents and Logarithms.
* hypotl: (libc)Exponents and Logarithms.
* iconv: (libc)Generic Conversion Interface.
* iconv_close: (libc)Generic Conversion Interface.
* iconv_open: (libc)Generic Conversion Interface.
* if_freenameindex: (libc)Interface Naming.
* if_indextoname: (libc)Interface Naming.
* if_nameindex: (libc)Interface Naming.
* if_nametoindex: (libc)Interface Naming.
* ilogb: (libc)Exponents and Logarithms.
* ilogbf: (libc)Exponents and Logarithms.
* ilogbl: (libc)Exponents and Logarithms.
* imaxabs: (libc)Absolute Value.
* imaxdiv: (libc)Integer Division.
* in6addr_any: (libc)Host Address Data Type.
* in6addr_loopback: (libc)Host Address Data Type.
* index: (libc)Search Functions.
* inet_addr: (libc)Host Address Functions.
* inet_aton: (libc)Host Address Functions.
* inet_lnaof: (libc)Host Address Functions.
* inet_makeaddr: (libc)Host Address Functions.
* inet_netof: (libc)Host Address Functions.
* inet_network: (libc)Host Address Functions.
* inet_ntoa: (libc)Host Address Functions.
* inet_ntop: (libc)Host Address Functions.
* inet_pton: (libc)Host Address Functions.
* initgroups: (libc)Setting Groups.
* initstate: (libc)BSD Random.
* initstate_r: (libc)BSD Random.
* innetgr: (libc)Netgroup Membership.
* ioctl: (libc)IOCTLs.
* isalnum: (libc)Classification of Characters.
* isalpha: (libc)Classification of Characters.
* isascii: (libc)Classification of Characters.
* isatty: (libc)Is It a Terminal.
* isblank: (libc)Classification of Characters.
* iscntrl: (libc)Classification of Characters.
* isdigit: (libc)Classification of Characters.
* isfinite: (libc)Floating Point Classes.
* isgraph: (libc)Classification of Characters.
* isgreater: (libc)FP Comparison Functions.
* isgreaterequal: (libc)FP Comparison Functions.
* isinf: (libc)Floating Point Classes.
* isinff: (libc)Floating Point Classes.
* isinfl: (libc)Floating Point Classes.
* isless: (libc)FP Comparison Functions.
* islessequal: (libc)FP Comparison Functions.
* islessgreater: (libc)FP Comparison Functions.
* islower: (libc)Classification of Characters.
* isnan: (libc)Floating Point Classes.
* isnan: (libc)Floating Point Classes.
* isnanf: (libc)Floating Point Classes.
* isnanl: (libc)Floating Point Classes.
* isnormal: (libc)Floating Point Classes.
* isprint: (libc)Classification of Characters.
* ispunct: (libc)Classification of Characters.
* issignaling: (libc)Floating Point Classes.
* isspace: (libc)Classification of Characters.
* isunordered: (libc)FP Comparison Functions.
* isupper: (libc)Classification of Characters.
* iswalnum: (libc)Classification of Wide Characters.
* iswalpha: (libc)Classification of Wide Characters.
* iswblank: (libc)Classification of Wide Characters.
* iswcntrl: (libc)Classification of Wide Characters.
* iswctype: (libc)Classification of Wide Characters.
* iswdigit: (libc)Classification of Wide Characters.
* iswgraph: (libc)Classification of Wide Characters.
* iswlower: (libc)Classification of Wide Characters.
* iswprint: (libc)Classification of Wide Characters.
* iswpunct: (libc)Classification of Wide Characters.
* iswspace: (libc)Classification of Wide Characters.
* iswupper: (libc)Classification of Wide Characters.
* iswxdigit: (libc)Classification of Wide Characters.
* isxdigit: (libc)Classification of Characters.
* j0: (libc)Special Functions.
* j0f: (libc)Special Functions.
* j0l: (libc)Special Functions.
* j1: (libc)Special Functions.
* j1f: (libc)Special Functions.
* j1l: (libc)Special Functions.
* jn: (libc)Special Functions.
* jnf: (libc)Special Functions.
* jnl: (libc)Special Functions.
* jrand48: (libc)SVID Random.
* jrand48_r: (libc)SVID Random.
* kill: (libc)Signaling Another Process.
* killpg: (libc)Signaling Another Process.
* l64a: (libc)Encode Binary Data.
* labs: (libc)Absolute Value.
* lcong48: (libc)SVID Random.
* lcong48_r: (libc)SVID Random.
* ldexp: (libc)Normalization Functions.
* ldexpf: (libc)Normalization Functions.
* ldexpl: (libc)Normalization Functions.
* ldiv: (libc)Integer Division.
* lfind: (libc)Array Search Function.
* lgamma: (libc)Special Functions.
* lgamma_r: (libc)Special Functions.
* lgammaf: (libc)Special Functions.
* lgammaf_r: (libc)Special Functions.
* lgammal: (libc)Special Functions.
* lgammal_r: (libc)Special Functions.
* link: (libc)Hard Links.
* lio_listio64: (libc)Asynchronous Reads/Writes.
* lio_listio: (libc)Asynchronous Reads/Writes.
* listen: (libc)Listening.
* llabs: (libc)Absolute Value.
* lldiv: (libc)Integer Division.
* llrint: (libc)Rounding Functions.
* llrintf: (libc)Rounding Functions.
* llrintl: (libc)Rounding Functions.
* llround: (libc)Rounding Functions.
* llroundf: (libc)Rounding Functions.
* llroundl: (libc)Rounding Functions.
* localeconv: (libc)The Lame Way to Locale Data.
* localtime: (libc)Broken-down Time.
* localtime_r: (libc)Broken-down Time.
* log10: (libc)Exponents and Logarithms.
* log10f: (libc)Exponents and Logarithms.
* log10l: (libc)Exponents and Logarithms.
* log1p: (libc)Exponents and Logarithms.
* log1pf: (libc)Exponents and Logarithms.
* log1pl: (libc)Exponents and Logarithms.
* log2: (libc)Exponents and Logarithms.
* log2f: (libc)Exponents and Logarithms.
* log2l: (libc)Exponents and Logarithms.
* log: (libc)Exponents and Logarithms.
* logb: (libc)Exponents and Logarithms.
* logbf: (libc)Exponents and Logarithms.
* logbl: (libc)Exponents and Logarithms.
* logf: (libc)Exponents and Logarithms.
* login: (libc)Logging In and Out.
* login_tty: (libc)Logging In and Out.
* logl: (libc)Exponents and Logarithms.
* logout: (libc)Logging In and Out.
* logwtmp: (libc)Logging In and Out.
* longjmp: (libc)Non-Local Details.
* lrand48: (libc)SVID Random.
* lrand48_r: (libc)SVID Random.
* lrint: (libc)Rounding Functions.
* lrintf: (libc)Rounding Functions.
* lrintl: (libc)Rounding Functions.
* lround: (libc)Rounding Functions.
* lroundf: (libc)Rounding Functions.
* lroundl: (libc)Rounding Functions.
* lsearch: (libc)Array Search Function.
* lseek64: (libc)File Position Primitive.
* lseek: (libc)File Position Primitive.
* lstat64: (libc)Reading Attributes.
* lstat: (libc)Reading Attributes.
* lutimes: (libc)File Times.
* madvise: (libc)Memory-mapped I/O.
* makecontext: (libc)System V contexts.
* mallinfo: (libc)Statistics of Malloc.
* malloc: (libc)Basic Allocation.
* mallopt: (libc)Malloc Tunable Parameters.
* mblen: (libc)Non-reentrant Character Conversion.
* mbrlen: (libc)Converting a Character.
* mbrtowc: (libc)Converting a Character.
* mbsinit: (libc)Keeping the state.
* mbsnrtowcs: (libc)Converting Strings.
* mbsrtowcs: (libc)Converting Strings.
* mbstowcs: (libc)Non-reentrant String Conversion.
* mbtowc: (libc)Non-reentrant Character Conversion.
* mcheck: (libc)Heap Consistency Checking.
* memalign: (libc)Aligned Memory Blocks.
* memccpy: (libc)Copying and Concatenation.
* memchr: (libc)Search Functions.
* memcmp: (libc)String/Array Comparison.
* memcpy: (libc)Copying and Concatenation.
* memfrob: (libc)Trivial Encryption.
* memmem: (libc)Search Functions.
* memmove: (libc)Copying and Concatenation.
* mempcpy: (libc)Copying and Concatenation.
* memrchr: (libc)Search Functions.
* memset: (libc)Copying and Concatenation.
* mkdir: (libc)Creating Directories.
* mkdtemp: (libc)Temporary Files.
* mkfifo: (libc)FIFO Special Files.
* mknod: (libc)Making Special Files.
* mkstemp: (libc)Temporary Files.
* mktemp: (libc)Temporary Files.
* mktime: (libc)Broken-down Time.
* mlock: (libc)Page Lock Functions.
* mlockall: (libc)Page Lock Functions.
* mmap64: (libc)Memory-mapped I/O.
* mmap: (libc)Memory-mapped I/O.
* modf: (libc)Rounding Functions.
* modff: (libc)Rounding Functions.
* modfl: (libc)Rounding Functions.
* mount: (libc)Mount-Unmount-Remount.
* mprobe: (libc)Heap Consistency Checking.
* mrand48: (libc)SVID Random.
* mrand48_r: (libc)SVID Random.
* mremap: (libc)Memory-mapped I/O.
* msync: (libc)Memory-mapped I/O.
* mtrace: (libc)Tracing malloc.
* munlock: (libc)Page Lock Functions.
* munlockall: (libc)Page Lock Functions.
* munmap: (libc)Memory-mapped I/O.
* muntrace: (libc)Tracing malloc.
* nan: (libc)FP Bit Twiddling.
* nanf: (libc)FP Bit Twiddling.
* nanl: (libc)FP Bit Twiddling.
* nanosleep: (libc)Sleeping.
* nearbyint: (libc)Rounding Functions.
* nearbyintf: (libc)Rounding Functions.
* nearbyintl: (libc)Rounding Functions.
* nextafter: (libc)FP Bit Twiddling.
* nextafterf: (libc)FP Bit Twiddling.
* nextafterl: (libc)FP Bit Twiddling.
* nexttoward: (libc)FP Bit Twiddling.
* nexttowardf: (libc)FP Bit Twiddling.
* nexttowardl: (libc)FP Bit Twiddling.
* nftw64: (libc)Working with Directory Trees.
* nftw: (libc)Working with Directory Trees.
* ngettext: (libc)Advanced gettext functions.
* nice: (libc)Traditional Scheduling Functions.
* nl_langinfo: (libc)The Elegant and Fast Way.
* nrand48: (libc)SVID Random.
* nrand48_r: (libc)SVID Random.
* ntohl: (libc)Byte Order.
* ntohs: (libc)Byte Order.
* ntp_adjtime: (libc)High Accuracy Clock.
* ntp_gettime: (libc)High Accuracy Clock.
* obstack_1grow: (libc)Growing Objects.
* obstack_1grow_fast: (libc)Extra Fast Growing.
* obstack_alignment_mask: (libc)Obstacks Data Alignment.
* obstack_alloc: (libc)Allocation in an Obstack.
* obstack_base: (libc)Status of an Obstack.
* obstack_blank: (libc)Growing Objects.
* obstack_blank_fast: (libc)Extra Fast Growing.
* obstack_chunk_size: (libc)Obstack Chunks.
* obstack_copy0: (libc)Allocation in an Obstack.
* obstack_copy: (libc)Allocation in an Obstack.
* obstack_finish: (libc)Growing Objects.
* obstack_free: (libc)Freeing Obstack Objects.
* obstack_grow0: (libc)Growing Objects.
* obstack_grow: (libc)Growing Objects.
* obstack_init: (libc)Preparing for Obstacks.
* obstack_int_grow: (libc)Growing Objects.
* obstack_int_grow_fast: (libc)Extra Fast Growing.
* obstack_next_free: (libc)Status of an Obstack.
* obstack_object_size: (libc)Growing Objects.
* obstack_object_size: (libc)Status of an Obstack.
* obstack_printf: (libc)Dynamic Output.
* obstack_ptr_grow: (libc)Growing Objects.
* obstack_ptr_grow_fast: (libc)Extra Fast Growing.
* obstack_room: (libc)Extra Fast Growing.
* obstack_vprintf: (libc)Variable Arguments Output.
* offsetof: (libc)Structure Measurement.
* on_exit: (libc)Cleanups on Exit.
* open64: (libc)Opening and Closing Files.
* open: (libc)Opening and Closing Files.
* open_memstream: (libc)String Streams.
* opendir: (libc)Opening a Directory.
* openlog: (libc)openlog.
* openpty: (libc)Pseudo-Terminal Pairs.
* parse_printf_format: (libc)Parsing a Template String.
* pathconf: (libc)Pathconf.
* pause: (libc)Using Pause.
* pclose: (libc)Pipe to a Subprocess.
* perror: (libc)Error Messages.
* pipe: (libc)Creating a Pipe.
* popen: (libc)Pipe to a Subprocess.
* posix_memalign: (libc)Aligned Memory Blocks.
* pow10: (libc)Exponents and Logarithms.
* pow10f: (libc)Exponents and Logarithms.
* pow10l: (libc)Exponents and Logarithms.
* pow: (libc)Exponents and Logarithms.
* powf: (libc)Exponents and Logarithms.
* powl: (libc)Exponents and Logarithms.
* pread64: (libc)I/O Primitives.
* pread: (libc)I/O Primitives.
* printf: (libc)Formatted Output Functions.
* printf_size: (libc)Predefined Printf Handlers.
* printf_size_info: (libc)Predefined Printf Handlers.
* psignal: (libc)Signal Messages.
* pthread_getattr_default_np: (libc)Default Thread Attributes.
* pthread_getspecific: (libc)Thread-specific Data.
* pthread_key_create: (libc)Thread-specific Data.
* pthread_key_delete: (libc)Thread-specific Data.
* pthread_setattr_default_np: (libc)Default Thread Attributes.
* pthread_setspecific: (libc)Thread-specific Data.
* ptsname: (libc)Allocation.
* ptsname_r: (libc)Allocation.
* putc: (libc)Simple Output.
* putc_unlocked: (libc)Simple Output.
* putchar: (libc)Simple Output.
* putchar_unlocked: (libc)Simple Output.
* putenv: (libc)Environment Access.
* putpwent: (libc)Writing a User Entry.
* puts: (libc)Simple Output.
* pututline: (libc)Manipulating the Database.
* pututxline: (libc)XPG Functions.
* putw: (libc)Simple Output.
* putwc: (libc)Simple Output.
* putwc_unlocked: (libc)Simple Output.
* putwchar: (libc)Simple Output.
* putwchar_unlocked: (libc)Simple Output.
* pwrite64: (libc)I/O Primitives.
* pwrite: (libc)I/O Primitives.
* qecvt: (libc)System V Number Conversion.
* qecvt_r: (libc)System V Number Conversion.
* qfcvt: (libc)System V Number Conversion.
* qfcvt_r: (libc)System V Number Conversion.
* qgcvt: (libc)System V Number Conversion.
* qsort: (libc)Array Sort Function.
* raise: (libc)Signaling Yourself.
* rand: (libc)ISO Random.
* rand_r: (libc)ISO Random.
* random: (libc)BSD Random.
* random_r: (libc)BSD Random.
* rawmemchr: (libc)Search Functions.
* read: (libc)I/O Primitives.
* readdir64: (libc)Reading/Closing Directory.
* readdir64_r: (libc)Reading/Closing Directory.
* readdir: (libc)Reading/Closing Directory.
* readdir_r: (libc)Reading/Closing Directory.
* readlink: (libc)Symbolic Links.
* readv: (libc)Scatter-Gather.
* realloc: (libc)Changing Block Size.
* realpath: (libc)Symbolic Links.
* recv: (libc)Receiving Data.
* recvfrom: (libc)Receiving Datagrams.
* recvmsg: (libc)Receiving Datagrams.
* regcomp: (libc)POSIX Regexp Compilation.
* regerror: (libc)Regexp Cleanup.
* regexec: (libc)Matching POSIX Regexps.
* regfree: (libc)Regexp Cleanup.
* register_printf_function: (libc)Registering New Conversions.
* remainder: (libc)Remainder Functions.
* remainderf: (libc)Remainder Functions.
* remainderl: (libc)Remainder Functions.
* remove: (libc)Deleting Files.
* rename: (libc)Renaming Files.
* rewind: (libc)File Positioning.
* rewinddir: (libc)Random Access Directory.
* rindex: (libc)Search Functions.
* rint: (libc)Rounding Functions.
* rintf: (libc)Rounding Functions.
* rintl: (libc)Rounding Functions.
* rmdir: (libc)Deleting Files.
* round: (libc)Rounding Functions.
* roundf: (libc)Rounding Functions.
* roundl: (libc)Rounding Functions.
* rpmatch: (libc)Yes-or-No Questions.
* sbrk: (libc)Resizing the Data Segment.
* scalb: (libc)Normalization Functions.
* scalbf: (libc)Normalization Functions.
* scalbl: (libc)Normalization Functions.
* scalbln: (libc)Normalization Functions.
* scalblnf: (libc)Normalization Functions.
* scalblnl: (libc)Normalization Functions.
* scalbn: (libc)Normalization Functions.
* scalbnf: (libc)Normalization Functions.
* scalbnl: (libc)Normalization Functions.
* scandir64: (libc)Scanning Directory Content.
* scandir: (libc)Scanning Directory Content.
* scanf: (libc)Formatted Input Functions.
* sched_get_priority_max: (libc)Basic Scheduling Functions.
* sched_get_priority_min: (libc)Basic Scheduling Functions.
* sched_getaffinity: (libc)CPU Affinity.
* sched_getparam: (libc)Basic Scheduling Functions.
* sched_getscheduler: (libc)Basic Scheduling Functions.
* sched_rr_get_interval: (libc)Basic Scheduling Functions.
* sched_setaffinity: (libc)CPU Affinity.
* sched_setparam: (libc)Basic Scheduling Functions.
* sched_setscheduler: (libc)Basic Scheduling Functions.
* sched_yield: (libc)Basic Scheduling Functions.
* secure_getenv: (libc)Environment Access.
* seed48: (libc)SVID Random.
* seed48_r: (libc)SVID Random.
* seekdir: (libc)Random Access Directory.
* select: (libc)Waiting for I/O.
* send: (libc)Sending Data.
* sendmsg: (libc)Receiving Datagrams.
* sendto: (libc)Sending Datagrams.
* setbuf: (libc)Controlling Buffering.
* setbuffer: (libc)Controlling Buffering.
* setcontext: (libc)System V contexts.
* setdomainname: (libc)Host Identification.
* setegid: (libc)Setting Groups.
* setenv: (libc)Environment Access.
* seteuid: (libc)Setting User ID.
* setfsent: (libc)fstab.
* setgid: (libc)Setting Groups.
* setgrent: (libc)Scanning All Groups.
* setgroups: (libc)Setting Groups.
* sethostent: (libc)Host Names.
* sethostid: (libc)Host Identification.
* sethostname: (libc)Host Identification.
* setitimer: (libc)Setting an Alarm.
* setjmp: (libc)Non-Local Details.
* setkey: (libc)DES Encryption.
* setkey_r: (libc)DES Encryption.
* setlinebuf: (libc)Controlling Buffering.
* setlocale: (libc)Setting the Locale.
* setlogmask: (libc)setlogmask.
* setmntent: (libc)mtab.
* setnetent: (libc)Networks Database.
* setnetgrent: (libc)Lookup Netgroup.
* setpgid: (libc)Process Group Functions.
* setpgrp: (libc)Process Group Functions.
* setpriority: (libc)Traditional Scheduling Functions.
* setprotoent: (libc)Protocols Database.
* setpwent: (libc)Scanning All Users.
* setregid: (libc)Setting Groups.
* setreuid: (libc)Setting User ID.
* setrlimit64: (libc)Limits on Resources.
* setrlimit: (libc)Limits on Resources.
* setservent: (libc)Services Database.
* setsid: (libc)Process Group Functions.
* setsockopt: (libc)Socket Option Functions.
* setstate: (libc)BSD Random.
* setstate_r: (libc)BSD Random.
* settimeofday: (libc)High-Resolution Calendar.
* setuid: (libc)Setting User ID.
* setutent: (libc)Manipulating the Database.
* setutxent: (libc)XPG Functions.
* setvbuf: (libc)Controlling Buffering.
* shm_open: (libc)Memory-mapped I/O.
* shm_unlink: (libc)Memory-mapped I/O.
* shutdown: (libc)Closing a Socket.
* sigaction: (libc)Advanced Signal Handling.
* sigaddset: (libc)Signal Sets.
* sigaltstack: (libc)Signal Stack.
* sigblock: (libc)Blocking in BSD.
* sigdelset: (libc)Signal Sets.
* sigemptyset: (libc)Signal Sets.
* sigfillset: (libc)Signal Sets.
* siginterrupt: (libc)BSD Handler.
* sigismember: (libc)Signal Sets.
* siglongjmp: (libc)Non-Local Exits and Signals.
* sigmask: (libc)Blocking in BSD.
* signal: (libc)Basic Signal Handling.
* signbit: (libc)FP Bit Twiddling.
* significand: (libc)Normalization Functions.
* significandf: (libc)Normalization Functions.
* significandl: (libc)Normalization Functions.
* sigpause: (libc)Blocking in BSD.
* sigpending: (libc)Checking for Pending Signals.
* sigprocmask: (libc)Process Signal Mask.
* sigsetjmp: (libc)Non-Local Exits and Signals.
* sigsetmask: (libc)Blocking in BSD.
* sigstack: (libc)Signal Stack.
* sigsuspend: (libc)Sigsuspend.
* sigvec: (libc)BSD Handler.
* sin: (libc)Trig Functions.
* sincos: (libc)Trig Functions.
* sincosf: (libc)Trig Functions.
* sincosl: (libc)Trig Functions.
* sinf: (libc)Trig Functions.
* sinh: (libc)Hyperbolic Functions.
* sinhf: (libc)Hyperbolic Functions.
* sinhl: (libc)Hyperbolic Functions.
* sinl: (libc)Trig Functions.
* sleep: (libc)Sleeping.
* snprintf: (libc)Formatted Output Functions.
* socket: (libc)Creating a Socket.
* socketpair: (libc)Socket Pairs.
* sprintf: (libc)Formatted Output Functions.
* sqrt: (libc)Exponents and Logarithms.
* sqrtf: (libc)Exponents and Logarithms.
* sqrtl: (libc)Exponents and Logarithms.
* srand48: (libc)SVID Random.
* srand48_r: (libc)SVID Random.
* srand: (libc)ISO Random.
* srandom: (libc)BSD Random.
* srandom_r: (libc)BSD Random.
* sscanf: (libc)Formatted Input Functions.
* ssignal: (libc)Basic Signal Handling.
* stat64: (libc)Reading Attributes.
* stat: (libc)Reading Attributes.
* stime: (libc)Simple Calendar Time.
* stpcpy: (libc)Copying and Concatenation.
* stpncpy: (libc)Copying and Concatenation.
* strcasecmp: (libc)String/Array Comparison.
* strcasestr: (libc)Search Functions.
* strcat: (libc)Copying and Concatenation.
* strchr: (libc)Search Functions.
* strchrnul: (libc)Search Functions.
* strcmp: (libc)String/Array Comparison.
* strcoll: (libc)Collation Functions.
* strcpy: (libc)Copying and Concatenation.
* strcspn: (libc)Search Functions.
* strdup: (libc)Copying and Concatenation.
* strdupa: (libc)Copying and Concatenation.
* strerror: (libc)Error Messages.
* strerror_r: (libc)Error Messages.
* strfmon: (libc)Formatting Numbers.
* strfry: (libc)strfry.
* strftime: (libc)Formatting Calendar Time.
* strlen: (libc)String Length.
* strncasecmp: (libc)String/Array Comparison.
* strncat: (libc)Copying and Concatenation.
* strncmp: (libc)String/Array Comparison.
* strncpy: (libc)Copying and Concatenation.
* strndup: (libc)Copying and Concatenation.
* strndupa: (libc)Copying and Concatenation.
* strnlen: (libc)String Length.
* strpbrk: (libc)Search Functions.
* strptime: (libc)Low-Level Time String Parsing.
* strrchr: (libc)Search Functions.
* strsep: (libc)Finding Tokens in a String.
* strsignal: (libc)Signal Messages.
* strspn: (libc)Search Functions.
* strstr: (libc)Search Functions.
* strtod: (libc)Parsing of Floats.
* strtof: (libc)Parsing of Floats.
* strtoimax: (libc)Parsing of Integers.
* strtok: (libc)Finding Tokens in a String.
* strtok_r: (libc)Finding Tokens in a String.
* strtol: (libc)Parsing of Integers.
* strtold: (libc)Parsing of Floats.
* strtoll: (libc)Parsing of Integers.
* strtoq: (libc)Parsing of Integers.
* strtoul: (libc)Parsing of Integers.
* strtoull: (libc)Parsing of Integers.
* strtoumax: (libc)Parsing of Integers.
* strtouq: (libc)Parsing of Integers.
* strverscmp: (libc)String/Array Comparison.
* strxfrm: (libc)Collation Functions.
* stty: (libc)BSD Terminal Modes.
* swapcontext: (libc)System V contexts.
* swprintf: (libc)Formatted Output Functions.
* swscanf: (libc)Formatted Input Functions.
* symlink: (libc)Symbolic Links.
* sync: (libc)Synchronizing I/O.
* syscall: (libc)System Calls.
* sysconf: (libc)Sysconf Definition.
* sysctl: (libc)System Parameters.
* syslog: (libc)syslog; vsyslog.
* system: (libc)Running a Command.
* sysv_signal: (libc)Basic Signal Handling.
* tan: (libc)Trig Functions.
* tanf: (libc)Trig Functions.
* tanh: (libc)Hyperbolic Functions.
* tanhf: (libc)Hyperbolic Functions.
* tanhl: (libc)Hyperbolic Functions.
* tanl: (libc)Trig Functions.
* tcdrain: (libc)Line Control.
* tcflow: (libc)Line Control.
* tcflush: (libc)Line Control.
* tcgetattr: (libc)Mode Functions.
* tcgetpgrp: (libc)Terminal Access Functions.
* tcgetsid: (libc)Terminal Access Functions.
* tcsendbreak: (libc)Line Control.
* tcsetattr: (libc)Mode Functions.
* tcsetpgrp: (libc)Terminal Access Functions.
* tdelete: (libc)Tree Search Function.
* tdestroy: (libc)Tree Search Function.
* telldir: (libc)Random Access Directory.
* tempnam: (libc)Temporary Files.
* textdomain: (libc)Locating gettext catalog.
* tfind: (libc)Tree Search Function.
* tgamma: (libc)Special Functions.
* tgammaf: (libc)Special Functions.
* tgammal: (libc)Special Functions.
* time: (libc)Simple Calendar Time.
* timegm: (libc)Broken-down Time.
* timelocal: (libc)Broken-down Time.
* times: (libc)Processor Time.
* tmpfile64: (libc)Temporary Files.
* tmpfile: (libc)Temporary Files.
* tmpnam: (libc)Temporary Files.
* tmpnam_r: (libc)Temporary Files.
* toascii: (libc)Case Conversion.
* tolower: (libc)Case Conversion.
* toupper: (libc)Case Conversion.
* towctrans: (libc)Wide Character Case Conversion.
* towlower: (libc)Wide Character Case Conversion.
* towupper: (libc)Wide Character Case Conversion.
* trunc: (libc)Rounding Functions.
* truncate64: (libc)File Size.
* truncate: (libc)File Size.
* truncf: (libc)Rounding Functions.
* truncl: (libc)Rounding Functions.
* tsearch: (libc)Tree Search Function.
* ttyname: (libc)Is It a Terminal.
* ttyname_r: (libc)Is It a Terminal.
* twalk: (libc)Tree Search Function.
* tzset: (libc)Time Zone Functions.
* ulimit: (libc)Limits on Resources.
* umask: (libc)Setting Permissions.
* umount2: (libc)Mount-Unmount-Remount.
* umount: (libc)Mount-Unmount-Remount.
* uname: (libc)Platform Type.
* ungetc: (libc)How Unread.
* ungetwc: (libc)How Unread.
* unlink: (libc)Deleting Files.
* unlockpt: (libc)Allocation.
* unsetenv: (libc)Environment Access.
* updwtmp: (libc)Manipulating the Database.
* utime: (libc)File Times.
* utimes: (libc)File Times.
* utmpname: (libc)Manipulating the Database.
* utmpxname: (libc)XPG Functions.
* va_arg: (libc)Argument Macros.
* va_copy: (libc)Argument Macros.
* va_end: (libc)Argument Macros.
* va_start: (libc)Argument Macros.
* valloc: (libc)Aligned Memory Blocks.
* vasprintf: (libc)Variable Arguments Output.
* verr: (libc)Error Messages.
* verrx: (libc)Error Messages.
* versionsort64: (libc)Scanning Directory Content.
* versionsort: (libc)Scanning Directory Content.
* vfork: (libc)Creating a Process.
* vfprintf: (libc)Variable Arguments Output.
* vfscanf: (libc)Variable Arguments Input.
* vfwprintf: (libc)Variable Arguments Output.
* vfwscanf: (libc)Variable Arguments Input.
* vlimit: (libc)Limits on Resources.
* vprintf: (libc)Variable Arguments Output.
* vscanf: (libc)Variable Arguments Input.
* vsnprintf: (libc)Variable Arguments Output.
* vsprintf: (libc)Variable Arguments Output.
* vsscanf: (libc)Variable Arguments Input.
* vswprintf: (libc)Variable Arguments Output.
* vswscanf: (libc)Variable Arguments Input.
* vsyslog: (libc)syslog; vsyslog.
* vtimes: (libc)Resource Usage.
* vwarn: (libc)Error Messages.
* vwarnx: (libc)Error Messages.
* vwprintf: (libc)Variable Arguments Output.
* vwscanf: (libc)Variable Arguments Input.
* wait3: (libc)BSD Wait Functions.
* wait4: (libc)Process Completion.
* wait: (libc)Process Completion.
* waitpid: (libc)Process Completion.
* warn: (libc)Error Messages.
* warnx: (libc)Error Messages.
* wcpcpy: (libc)Copying and Concatenation.
* wcpncpy: (libc)Copying and Concatenation.
* wcrtomb: (libc)Converting a Character.
* wcscasecmp: (libc)String/Array Comparison.
* wcscat: (libc)Copying and Concatenation.
* wcschr: (libc)Search Functions.
* wcschrnul: (libc)Search Functions.
* wcscmp: (libc)String/Array Comparison.
* wcscoll: (libc)Collation Functions.
* wcscpy: (libc)Copying and Concatenation.
* wcscspn: (libc)Search Functions.
* wcsdup: (libc)Copying and Concatenation.
* wcsftime: (libc)Formatting Calendar Time.
* wcslen: (libc)String Length.
* wcsncasecmp: (libc)String/Array Comparison.
* wcsncat: (libc)Copying and Concatenation.
* wcsncmp: (libc)String/Array Comparison.
* wcsncpy: (libc)Copying and Concatenation.
* wcsnlen: (libc)String Length.
* wcsnrtombs: (libc)Converting Strings.
* wcspbrk: (libc)Search Functions.
* wcsrchr: (libc)Search Functions.
* wcsrtombs: (libc)Converting Strings.
* wcsspn: (libc)Search Functions.
* wcsstr: (libc)Search Functions.
* wcstod: (libc)Parsing of Floats.
* wcstof: (libc)Parsing of Floats.
* wcstoimax: (libc)Parsing of Integers.
* wcstok: (libc)Finding Tokens in a String.
* wcstol: (libc)Parsing of Integers.
* wcstold: (libc)Parsing of Floats.
* wcstoll: (libc)Parsing of Integers.
* wcstombs: (libc)Non-reentrant String Conversion.
* wcstoq: (libc)Parsing of Integers.
* wcstoul: (libc)Parsing of Integers.
* wcstoull: (libc)Parsing of Integers.
* wcstoumax: (libc)Parsing of Integers.
* wcstouq: (libc)Parsing of Integers.
* wcswcs: (libc)Search Functions.
* wcsxfrm: (libc)Collation Functions.
* wctob: (libc)Converting a Character.
* wctomb: (libc)Non-reentrant Character Conversion.
* wctrans: (libc)Wide Character Case Conversion.
* wctype: (libc)Classification of Wide Characters.
* wmemchr: (libc)Search Functions.
* wmemcmp: (libc)String/Array Comparison.
* wmemcpy: (libc)Copying and Concatenation.
* wmemmove: (libc)Copying and Concatenation.
* wmempcpy: (libc)Copying and Concatenation.
* wmemset: (libc)Copying and Concatenation.
* wordexp: (libc)Calling Wordexp.
* wordfree: (libc)Calling Wordexp.
* wprintf: (libc)Formatted Output Functions.
* write: (libc)I/O Primitives.
* writev: (libc)Scatter-Gather.
* wscanf: (libc)Formatted Input Functions.
* y0: (libc)Special Functions.
* y0f: (libc)Special Functions.
* y0l: (libc)Special Functions.
* y1: (libc)Special Functions.
* y1f: (libc)Special Functions.
* y1l: (libc)Special Functions.
* yn: (libc)Special Functions.
* ynf: (libc)Special Functions.
* ynl: (libc)Special Functions.
END-INFO-DIR-ENTRY

   This file documents the GNU C Library.

   This is `The GNU C Library Reference Manual', for version 2.19
(Buildroot).

   Copyright (C) 1993-2014 Free Software Foundation, Inc.

   Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version
1.3 or any later version published by the Free Software Foundation;
with the Invariant Sections being "Free Software Needs Free
Documentation" and "GNU Lesser General Public License", the Front-Cover
texts being "A GNU Manual", and with the Back-Cover Texts as in (a)
below.  A copy of the license is included in the section entitled "GNU
Free Documentation License".

   (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
modify this GNU manual.  Buying copies from the FSF supports it in
developing GNU and promoting software freedom."


File: libc.info,  Node: Library Summary,  Next: Installation,  Prev: Language Features,  Up: Top

Appendix B Summary of Library Facilities
****************************************

This appendix is a complete list of the facilities declared within the
header files supplied with the GNU C Library.  Each entry also lists the
standard or other source from which each facility is derived, and tells
you where in the manual you can find more information about how to use
it.

`long int a64l (const char *STRING)'
     `stdlib.h' (XPG):  *note Encode Binary Data::.

`void abort (void)'
     `stdlib.h' (ISO):  *note Aborting a Program::.

`int abs (int NUMBER)'
     `stdlib.h' (ISO):  *note Absolute Value::.

`int accept (int SOCKET, struct sockaddr *ADDR, socklen_t *LENGTH_PTR)'
     `sys/socket.h' (BSD):  *note Accepting Connections::.

`int access (const char *FILENAME, int HOW)'
     `unistd.h' (POSIX.1):  *note Testing File Access::.

`ACCOUNTING'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`double acos (double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`float acosf (float X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`double acosh (double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`float acoshf (float X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double acoshl (long double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double acosl (long double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`int addmntent (FILE *STREAM, const struct mntent *MNT)'
     `mntent.h' (BSD):  *note mtab::.

`int adjtime (const struct timeval *DELTA, struct timeval *OLDDELTA)'
     `sys/time.h' (BSD):  *note High-Resolution Calendar::.

`int adjtimex (struct timex *TIMEX)'
     `sys/timex.h' (GNU):  *note High-Resolution Calendar::.

`AF_FILE'
     `sys/socket.h' (GNU):  *note Address Formats::.

`AF_INET'
     `sys/socket.h' (BSD):  *note Address Formats::.

`AF_INET6'
     `sys/socket.h' (IPv6 Basic API):  *note Address Formats::.

`AF_LOCAL'
     `sys/socket.h' (POSIX):  *note Address Formats::.

`AF_UNIX'
     `sys/socket.h' (BSD, Unix98):  *note Address Formats::.

`AF_UNSPEC'
     `sys/socket.h' (BSD):  *note Address Formats::.

`int aio_cancel (int FILDES, struct aiocb *AIOCBP)'
     `aio.h' (POSIX.1b):  *note Cancel AIO Operations::.

`int aio_cancel64 (int FILDES, struct aiocb64 *AIOCBP)'
     `aio.h' (Unix98):  *note Cancel AIO Operations::.

`int aio_error (const struct aiocb *AIOCBP)'
     `aio.h' (POSIX.1b):  *note Status of AIO Operations::.

`int aio_error64 (const struct aiocb64 *AIOCBP)'
     `aio.h' (Unix98):  *note Status of AIO Operations::.

`int aio_fsync (int OP, struct aiocb *AIOCBP)'
     `aio.h' (POSIX.1b):  *note Synchronizing AIO Operations::.

`int aio_fsync64 (int OP, struct aiocb64 *AIOCBP)'
     `aio.h' (Unix98):  *note Synchronizing AIO Operations::.

`void aio_init (const struct aioinit *INIT)'
     `aio.h' (GNU):  *note Configuration of AIO::.

`int aio_read (struct aiocb *AIOCBP)'
     `aio.h' (POSIX.1b):  *note Asynchronous Reads/Writes::.

`int aio_read64 (struct aiocb64 *AIOCBP)'
     `aio.h' (Unix98):  *note Asynchronous Reads/Writes::.

`ssize_t aio_return (struct aiocb *AIOCBP)'
     `aio.h' (POSIX.1b):  *note Status of AIO Operations::.

`ssize_t aio_return64 (struct aiocb64 *AIOCBP)'
     `aio.h' (Unix98):  *note Status of AIO Operations::.

`int aio_suspend (const struct aiocb *const LIST[], int NENT, const struct timespec *TIMEOUT)'
     `aio.h' (POSIX.1b):  *note Synchronizing AIO Operations::.

`int aio_suspend64 (const struct aiocb64 *const LIST[], int NENT, const struct timespec *TIMEOUT)'
     `aio.h' (Unix98):  *note Synchronizing AIO Operations::.

`int aio_write (struct aiocb *AIOCBP)'
     `aio.h' (POSIX.1b):  *note Asynchronous Reads/Writes::.

`int aio_write64 (struct aiocb64 *AIOCBP)'
     `aio.h' (Unix98):  *note Asynchronous Reads/Writes::.

`unsigned int alarm (unsigned int SECONDS)'
     `unistd.h' (POSIX.1):  *note Setting an Alarm::.

`void * aligned_alloc (size_t ALIGNMENT, size_t SIZE)'
     `stdlib.h' (stdlib.h):  *note Aligned Memory Blocks::.

`void * alloca (size_t SIZE)'
     `stdlib.h' (GNU, BSD):  *note Variable Size Automatic::.

`int alphasort (const void *A, const void *B)'
     `dirent.h' (BSD/SVID):  *note Scanning Directory Content::.

`int alphasort64 (const void *A, const void *B)'
     `dirent.h' (GNU):  *note Scanning Directory Content::.

`tcflag_t ALTWERASE'
     `termios.h' (BSD):  *note Local Modes::.

`int ARG_MAX'
     `limits.h' (POSIX.1):  *note General Limits::.

`error_t argp_err_exit_status'
     `argp.h' (GNU):  *note Argp Global Variables::.

`void argp_error (const struct argp_state *STATE, const char *FMT, ...)'
     `argp.h' (GNU):  *note Argp Helper Functions::.

`int ARGP_ERR_UNKNOWN'
     `argp.h' (GNU):  *note Argp Parser Functions::.

`void argp_failure (const struct argp_state *STATE, int STATUS, int ERRNUM, const char *FMT, ...)'
     `argp.h' (GNU):  *note Argp Helper Functions::.

`void argp_help (const struct argp *ARGP, FILE *STREAM, unsigned FLAGS, char *NAME)'
     `argp.h' (GNU):  *note Argp Help::.

`ARGP_IN_ORDER'
     `argp.h' (GNU):  *note Argp Flags::.

`ARGP_KEY_ARG'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_KEY_ARGS'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_KEY_END'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_KEY_ERROR'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_KEY_FINI'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_KEY_HELP_ARGS_DOC'
     `argp.h' (GNU):  *note Argp Help Filter Keys::.

`ARGP_KEY_HELP_DUP_ARGS_NOTE'
     `argp.h' (GNU):  *note Argp Help Filter Keys::.

`ARGP_KEY_HELP_EXTRA'
     `argp.h' (GNU):  *note Argp Help Filter Keys::.

`ARGP_KEY_HELP_HEADER'
     `argp.h' (GNU):  *note Argp Help Filter Keys::.

`ARGP_KEY_HELP_POST_DOC'
     `argp.h' (GNU):  *note Argp Help Filter Keys::.

`ARGP_KEY_HELP_PRE_DOC'
     `argp.h' (GNU):  *note Argp Help Filter Keys::.

`ARGP_KEY_INIT'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_KEY_NO_ARGS'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_KEY_SUCCESS'
     `argp.h' (GNU):  *note Argp Special Keys::.

`ARGP_LONG_ONLY'
     `argp.h' (GNU):  *note Argp Flags::.

`ARGP_NO_ARGS'
     `argp.h' (GNU):  *note Argp Flags::.

`ARGP_NO_ERRS'
     `argp.h' (GNU):  *note Argp Flags::.

`ARGP_NO_EXIT'
     `argp.h' (GNU):  *note Argp Flags::.

`ARGP_NO_HELP'
     `argp.h' (GNU):  *note Argp Flags::.

`error_t argp_parse (const struct argp *ARGP, int ARGC, char **ARGV, unsigned FLAGS, int *ARG_INDEX, void *INPUT)'
     `argp.h' (GNU):  *note Suboptions: Argp.

`ARGP_PARSE_ARGV0'
     `argp.h' (GNU):  *note Argp Flags::.

`const char * argp_program_bug_address'
     `argp.h' (GNU):  *note Argp Global Variables::.

`const char * argp_program_version'
     `argp.h' (GNU):  *note Argp Global Variables::.

`argp_program_version_hook'
     `argp.h' (GNU):  *note Argp Global Variables::.

`ARGP_SILENT'
     `argp.h' (GNU):  *note Argp Flags::.

`void argp_state_help (const struct argp_state *STATE, FILE *STREAM, unsigned FLAGS)'
     `argp.h' (GNU):  *note Argp Helper Functions::.

`void argp_usage (const struct argp_state *STATE)'
     `argp.h' (GNU):  *note Argp Helper Functions::.

`error_t argz_add (char **ARGZ, size_t *ARGZ_LEN, const char *STR)'
     `argz.h' (GNU):  *note Argz Functions::.

`error_t argz_add_sep (char **ARGZ, size_t *ARGZ_LEN, const char *STR, int DELIM)'
     `argz.h' (GNU):  *note Argz Functions::.

`error_t argz_append (char **ARGZ, size_t *ARGZ_LEN, const char *BUF, size_t BUF_LEN)'
     `argz.h' (GNU):  *note Argz Functions::.

`size_t argz_count (const char *ARGZ, size_t ARG_LEN)'
     `argz.h' (GNU):  *note Argz Functions::.

`error_t argz_create (char *const ARGV[], char **ARGZ, size_t *ARGZ_LEN)'
     `argz.h' (GNU):  *note Argz Functions::.

`error_t argz_create_sep (const char *STRING, int SEP, char **ARGZ, size_t *ARGZ_LEN)'
     `argz.h' (GNU):  *note Argz Functions::.

`void argz_delete (char **ARGZ, size_t *ARGZ_LEN, char *ENTRY)'
     `argz.h' (GNU):  *note Argz Functions::.

`void argz_extract (const char *ARGZ, size_t ARGZ_LEN, char **ARGV)'
     `argz.h' (GNU):  *note Argz Functions::.

`error_t argz_insert (char **ARGZ, size_t *ARGZ_LEN, char *BEFORE, const char *ENTRY)'
     `argz.h' (GNU):  *note Argz Functions::.

`char * argz_next (const char *ARGZ, size_t ARGZ_LEN, const char *ENTRY)'
     `argz.h' (GNU):  *note Argz Functions::.

`error_t argz_replace (char **ARGZ, size_t *ARGZ_LEN, const char *STR, const char *WITH, unsigned *REPLACE_COUNT)'
     `argz.h' (GNU):  *note Argz Functions::.

`void argz_stringify (char *ARGZ, size_t LEN, int SEP)'
     `argz.h' (GNU):  *note Argz Functions::.

`char * asctime (const struct tm *BROKENTIME)'
     `time.h' (ISO):  *note Formatting Calendar Time::.

`char * asctime_r (const struct tm *BROKENTIME, char *BUFFER)'
     `time.h' (POSIX.1c):  *note Formatting Calendar Time::.

`double asin (double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`float asinf (float X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`double asinh (double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`float asinhf (float X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double asinhl (long double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double asinl (long double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`int asprintf (char **PTR, const char *TEMPLATE, ...)'
     `stdio.h' (GNU):  *note Dynamic Output::.

`void assert (int EXPRESSION)'
     `assert.h' (ISO):  *note Consistency Checking::.

`void assert_perror (int ERRNUM)'
     `assert.h' (GNU):  *note Consistency Checking::.

`double atan (double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`double atan2 (double Y, double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`float atan2f (float Y, float X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`long double atan2l (long double Y, long double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`float atanf (float X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`double atanh (double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`float atanhf (float X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double atanhl (long double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double atanl (long double X)'
     `math.h' (ISO):  *note Inverse Trig Functions::.

`int atexit (void (*FUNCTION) (void))'
     `stdlib.h' (ISO):  *note Cleanups on Exit::.

`double atof (const char *STRING)'
     `stdlib.h' (ISO):  *note Parsing of Floats::.

`int atoi (const char *STRING)'
     `stdlib.h' (ISO):  *note Parsing of Integers::.

`long int atol (const char *STRING)'
     `stdlib.h' (ISO):  *note Parsing of Integers::.

`long long int atoll (const char *STRING)'
     `stdlib.h' (ISO):  *note Parsing of Integers::.

`B0'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B110'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B115200'
     `termios.h' (GNU):  *note Line Speed::.

`B1200'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B134'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B150'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B1800'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B19200'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B200'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B230400'
     `termios.h' (GNU):  *note Line Speed::.

`B2400'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B300'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B38400'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B460800'
     `termios.h' (GNU):  *note Line Speed::.

`B4800'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B50'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B57600'
     `termios.h' (GNU):  *note Line Speed::.

`B600'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B75'
     `termios.h' (POSIX.1):  *note Line Speed::.

`B9600'
     `termios.h' (POSIX.1):  *note Line Speed::.

`int backtrace (void **BUFFER, int SIZE)'
     `execinfo.h' (GNU):  *note Backtraces::.

`char ** backtrace_symbols (void *const *BUFFER, int SIZE)'
     `execinfo.h' (GNU):  *note Backtraces::.

`void backtrace_symbols_fd (void *const *BUFFER, int SIZE, int FD)'
     `execinfo.h' (GNU):  *note Backtraces::.

`char * basename (const char *FILENAME)'
     `string.h' (GNU):  *note Finding Tokens in a String::.

`char * basename (const char *PATH)'
     `libgen.h' (XPG):  *note Finding Tokens in a String::.

`int BC_BASE_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`int BC_DIM_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`int bcmp (const void *A1, const void *A2, size_t SIZE)'
     `string.h' (BSD):  *note String/Array Comparison::.

`void bcopy (const void *FROM, void *TO, size_t SIZE)'
     `string.h' (BSD):  *note Copying and Concatenation::.

`int BC_SCALE_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`int BC_STRING_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`int bind (int SOCKET, struct sockaddr *ADDR, socklen_t LENGTH)'
     `sys/socket.h' (BSD):  *note Setting Address::.

`char * bindtextdomain (const char *DOMAINNAME, const char *DIRNAME)'
     `libintl.h' (GNU):  *note Locating gettext catalog::.

`char * bind_textdomain_codeset (const char *DOMAINNAME, const char *CODESET)'
     `libintl.h' (GNU):  *note Charset conversion in gettext::.

`blkcnt64_t'
     `sys/types.h' (Unix98):  *note Attribute Meanings::.

`blkcnt_t'
     `sys/types.h' (Unix98):  *note Attribute Meanings::.

`BOOT_TIME'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`BOOT_TIME'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int brk (void *ADDR)'
     `unistd.h' (BSD):  *note Resizing the Data Segment::.

`tcflag_t BRKINT'
     `termios.h' (POSIX.1):  *note Input Modes::.

`_BSD_SOURCE'
     (GNU):  *note Feature Test Macros::.

`void * bsearch (const void *KEY, const void *ARRAY, size_t COUNT, size_t SIZE, comparison_fn_t COMPARE)'
     `stdlib.h' (ISO):  *note Array Search Function::.

`wint_t btowc (int C)'
     `wchar.h' (ISO):  *note Converting a Character::.

`int BUFSIZ'
     `stdio.h' (ISO):  *note Controlling Buffering::.

`void bzero (void *BLOCK, size_t SIZE)'
     `string.h' (BSD):  *note Copying and Concatenation::.

`double cabs (complex double Z)'
     `complex.h' (ISO):  *note Absolute Value::.

`float cabsf (complex float Z)'
     `complex.h' (ISO):  *note Absolute Value::.

`long double cabsl (complex long double Z)'
     `complex.h' (ISO):  *note Absolute Value::.

`complex double cacos (complex double Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`complex float cacosf (complex float Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`complex double cacosh (complex double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex float cacoshf (complex float Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double cacoshl (complex long double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double cacosl (complex long double Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`void * calloc (size_t COUNT, size_t ELTSIZE)'
     `malloc.h', `stdlib.h' (ISO):  *note Allocating Cleared Space::.

`char * canonicalize_file_name (const char *NAME)'
     `stdlib.h' (GNU):  *note Symbolic Links::.

`double carg (complex double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`float cargf (complex float Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`long double cargl (complex long double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`complex double casin (complex double Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`complex float casinf (complex float Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`complex double casinh (complex double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex float casinhf (complex float Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double casinhl (complex long double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double casinl (complex long double Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`complex double catan (complex double Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`complex float catanf (complex float Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`complex double catanh (complex double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex float catanhf (complex float Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double catanhl (complex long double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double catanl (complex long double Z)'
     `complex.h' (ISO):  *note Inverse Trig Functions::.

`nl_catd catopen (const char *CAT_NAME, int FLAG)'
     `nl_types.h' (X/Open):  *note The catgets Functions::.

`int cbc_crypt (char *KEY, char *BLOCKS, unsigned LEN, unsigned MODE, char *IVEC)'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`double cbrt (double X)'
     `math.h' (BSD):  *note Exponents and Logarithms::.

`float cbrtf (float X)'
     `math.h' (BSD):  *note Exponents and Logarithms::.

`long double cbrtl (long double X)'
     `math.h' (BSD):  *note Exponents and Logarithms::.

`complex double ccos (complex double Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`complex float ccosf (complex float Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`complex double ccosh (complex double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex float ccoshf (complex float Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double ccoshl (complex long double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double ccosl (complex long double Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`cc_t'
     `termios.h' (POSIX.1):  *note Mode Data Types::.

`tcflag_t CCTS_OFLOW'
     `termios.h' (BSD):  *note Control Modes::.

`double ceil (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`float ceilf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long double ceill (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`complex double cexp (complex double Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex float cexpf (complex float Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex long double cexpl (complex long double Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`speed_t cfgetispeed (const struct termios *TERMIOS-P)'
     `termios.h' (POSIX.1):  *note Line Speed::.

`speed_t cfgetospeed (const struct termios *TERMIOS-P)'
     `termios.h' (POSIX.1):  *note Line Speed::.

`void cfmakeraw (struct termios *TERMIOS-P)'
     `termios.h' (BSD):  *note Noncanonical Input::.

`void cfree (void *PTR)'
     `stdlib.h' (Sun):  *note Freeing after Malloc::.

`int cfsetispeed (struct termios *TERMIOS-P, speed_t SPEED)'
     `termios.h' (POSIX.1):  *note Line Speed::.

`int cfsetospeed (struct termios *TERMIOS-P, speed_t SPEED)'
     `termios.h' (POSIX.1):  *note Line Speed::.

`int cfsetspeed (struct termios *TERMIOS-P, speed_t SPEED)'
     `termios.h' (BSD):  *note Line Speed::.

`CHAR_BIT'
     `limits.h' (ISO):  *note Width of Type::.

`CHAR_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`CHAR_MIN'
     `limits.h' (ISO):  *note Range of Type::.

`int chdir (const char *FILENAME)'
     `unistd.h' (POSIX.1):  *note Working Directory::.

`int CHILD_MAX'
     `limits.h' (POSIX.1):  *note General Limits::.

`int chmod (const char *FILENAME, mode_t MODE)'
     `sys/stat.h' (POSIX.1):  *note Setting Permissions::.

`int chown (const char *FILENAME, uid_t OWNER, gid_t GROUP)'
     `unistd.h' (POSIX.1):  *note File Owner::.

`tcflag_t CIGNORE'
     `termios.h' (BSD):  *note Control Modes::.

`double cimag (complex double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`float cimagf (complex float Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`long double cimagl (complex long double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`int clearenv (void)'
     `stdlib.h' (GNU):  *note Environment Access::.

`void clearerr (FILE *STREAM)'
     `stdio.h' (ISO):  *note Error Recovery::.

`void clearerr_unlocked (FILE *STREAM)'
     `stdio.h' (GNU):  *note Error Recovery::.

`int CLK_TCK'
     `time.h' (POSIX.1):  *note Processor Time::.

`tcflag_t CLOCAL'
     `termios.h' (POSIX.1):  *note Control Modes::.

`clock_t clock (void)'
     `time.h' (ISO):  *note CPU Time::.

`int CLOCKS_PER_SEC'
     `time.h' (ISO):  *note CPU Time::.

`clock_t'
     `time.h' (ISO):  *note CPU Time::.

`complex double clog (complex double Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex double clog10 (complex double Z)'
     `complex.h' (GNU):  *note Exponents and Logarithms::.

`complex float clog10f (complex float Z)'
     `complex.h' (GNU):  *note Exponents and Logarithms::.

`complex long double clog10l (complex long double Z)'
     `complex.h' (GNU):  *note Exponents and Logarithms::.

`complex float clogf (complex float Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex long double clogl (complex long double Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`int close (int FILEDES)'
     `unistd.h' (POSIX.1):  *note Opening and Closing Files::.

`int closedir (DIR *DIRSTREAM)'
     `dirent.h' (POSIX.1):  *note Reading/Closing Directory::.

`void closelog (void)'
     `syslog.h' (BSD):  *note closelog::.

`int COLL_WEIGHTS_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`size_t confstr (int PARAMETER, char *BUF, size_t LEN)'
     `unistd.h' (POSIX.2):  *note String Parameters::.

`complex double conj (complex double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`complex float conjf (complex float Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`complex long double conjl (complex long double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`int connect (int SOCKET, struct sockaddr *ADDR, socklen_t LENGTH)'
     `sys/socket.h' (BSD):  *note Connecting::.

`cookie_close_function'
     `stdio.h' (GNU):  *note Hook Functions::.

`cookie_io_functions_t'
     `stdio.h' (GNU):  *note Streams and Cookies::.

`cookie_read_function'
     `stdio.h' (GNU):  *note Hook Functions::.

`cookie_seek_function'
     `stdio.h' (GNU):  *note Hook Functions::.

`cookie_write_function'
     `stdio.h' (GNU):  *note Hook Functions::.

`double copysign (double X, double Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`float copysignf (float X, float Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`long double copysignl (long double X, long double Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`double cos (double X)'
     `math.h' (ISO):  *note Trig Functions::.

`float cosf (float X)'
     `math.h' (ISO):  *note Trig Functions::.

`double cosh (double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`float coshf (float X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double coshl (long double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double cosl (long double X)'
     `math.h' (ISO):  *note Trig Functions::.

`complex double cpow (complex double BASE, complex double POWER)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex float cpowf (complex float BASE, complex float POWER)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex long double cpowl (complex long double BASE, complex long double POWER)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex double cproj (complex double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`complex float cprojf (complex float Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`complex long double cprojl (complex long double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`void CPU_CLR (int CPU, cpu_set_t *SET)'
     `sched.h' (GNU):  *note CPU Affinity::.

`int CPU_ISSET (int CPU, const cpu_set_t *SET)'
     `sched.h' (GNU):  *note CPU Affinity::.

`void CPU_SET (int CPU, cpu_set_t *SET)'
     `sched.h' (GNU):  *note CPU Affinity::.

`int CPU_SETSIZE'
     `sched.h' (GNU):  *note CPU Affinity::.

`cpu_set_t'
     `sched.h' (GNU):  *note CPU Affinity::.

`void CPU_ZERO (cpu_set_t *SET)'
     `sched.h' (GNU):  *note CPU Affinity::.

`tcflag_t CREAD'
     `termios.h' (POSIX.1):  *note Control Modes::.

`double creal (complex double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`float crealf (complex float Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`long double creall (complex long double Z)'
     `complex.h' (ISO):  *note Operations on Complex::.

`int creat (const char *FILENAME, mode_t MODE)'
     `fcntl.h' (POSIX.1):  *note Opening and Closing Files::.

`int creat64 (const char *FILENAME, mode_t MODE)'
     `fcntl.h' (Unix98):  *note Opening and Closing Files::.

`tcflag_t CRTS_IFLOW'
     `termios.h' (BSD):  *note Control Modes::.

`char * crypt (const char *KEY, const char *SALT)'
     `crypt.h' (BSD, SVID):  *note crypt::.

`char * crypt_r (const char *KEY, const char *SALT, struct crypt_data * DATA)'
     `crypt.h' (GNU):  *note crypt::.

`tcflag_t CS5'
     `termios.h' (POSIX.1):  *note Control Modes::.

`tcflag_t CS6'
     `termios.h' (POSIX.1):  *note Control Modes::.

`tcflag_t CS7'
     `termios.h' (POSIX.1):  *note Control Modes::.

`tcflag_t CS8'
     `termios.h' (POSIX.1):  *note Control Modes::.

`complex double csin (complex double Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`complex float csinf (complex float Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`complex double csinh (complex double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex float csinhf (complex float Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double csinhl (complex long double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double csinl (complex long double Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`tcflag_t CSIZE'
     `termios.h' (POSIX.1):  *note Control Modes::.

`_CS_LFS64_CFLAGS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_LFS64_LDFLAGS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_LFS64_LIBS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_LFS64_LINTFLAGS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_LFS_CFLAGS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_LFS_LDFLAGS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_LFS_LIBS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_LFS_LINTFLAGS'
     `unistd.h' (Unix98):  *note String Parameters::.

`_CS_PATH'
     `unistd.h' (POSIX.2):  *note String Parameters::.

`complex double csqrt (complex double Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex float csqrtf (complex float Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`complex long double csqrtl (complex long double Z)'
     `complex.h' (ISO):  *note Exponents and Logarithms::.

`tcflag_t CSTOPB'
     `termios.h' (POSIX.1):  *note Control Modes::.

`complex double ctan (complex double Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`complex float ctanf (complex float Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`complex double ctanh (complex double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex float ctanhf (complex float Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double ctanhl (complex long double Z)'
     `complex.h' (ISO):  *note Hyperbolic Functions::.

`complex long double ctanl (complex long double Z)'
     `complex.h' (ISO):  *note Trig Functions::.

`char * ctermid (char *STRING)'
     `stdio.h' (POSIX.1):  *note Identifying the Terminal::.

`char * ctime (const time_t *TIME)'
     `time.h' (ISO):  *note Formatting Calendar Time::.

`char * ctime_r (const time_t *TIME, char *BUFFER)'
     `time.h' (POSIX.1c):  *note Formatting Calendar Time::.

`char * cuserid (char *STRING)'
     `stdio.h' (POSIX.1):  *note Who Logged In::.

`int daylight'
     `time.h' (SVID):  *note Time Zone Functions::.

`DBL_DIG'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_EPSILON'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_MANT_DIG'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_MAX'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_MAX_10_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_MAX_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_MIN'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_MIN_10_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`DBL_MIN_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`char * dcgettext (const char *DOMAINNAME, const char *MSGID, int CATEGORY)'
     `libintl.h' (GNU):  *note Translation with gettext::.

`char * dcngettext (const char *DOMAIN, const char *MSGID1, const char *MSGID2, unsigned long int N, int CATEGORY)'
     `libintl.h' (GNU):  *note Advanced gettext functions::.

`DEAD_PROCESS'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`DEAD_PROCESS'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`_DEFAULT_SOURCE'
     (GNU):  *note Feature Test Macros::.

`DES_DECRYPT'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`DES_ENCRYPT'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`DESERR_BADPARAM'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`DESERR_HWERROR'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`DESERR_NOHWDEVICE'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`DESERR_NONE'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`int DES_FAILED (int ERR)'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`DES_HW'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`void des_setparity (char *KEY)'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`DES_SW'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`dev_t'
     `sys/types.h' (POSIX.1):  *note Attribute Meanings::.

`char * dgettext (const char *DOMAINNAME, const char *MSGID)'
     `libintl.h' (GNU):  *note Translation with gettext::.

`double difftime (time_t TIME1, time_t TIME0)'
     `time.h' (ISO):  *note Elapsed Time::.

`DIR'
     `dirent.h' (POSIX.1):  *note Opening a Directory::.

`int dirfd (DIR *DIRSTREAM)'
     `dirent.h' (GNU):  *note Opening a Directory::.

`char * dirname (char *PATH)'
     `libgen.h' (XPG):  *note Finding Tokens in a String::.

`div_t div (int NUMERATOR, int DENOMINATOR)'
     `stdlib.h' (ISO):  *note Integer Division::.

`div_t'
     `stdlib.h' (ISO):  *note Integer Division::.

`char * dngettext (const char *DOMAIN, const char *MSGID1, const char *MSGID2, unsigned long int N)'
     `libintl.h' (GNU):  *note Advanced gettext functions::.

`double drand48 (void)'
     `stdlib.h' (SVID):  *note SVID Random::.

`int drand48_r (struct drand48_data *BUFFER, double *RESULT)'
     `stdlib.h' (GNU):  *note SVID Random::.

`double drem (double NUMERATOR, double DENOMINATOR)'
     `math.h' (BSD):  *note Remainder Functions::.

`float dremf (float NUMERATOR, float DENOMINATOR)'
     `math.h' (BSD):  *note Remainder Functions::.

`long double dreml (long double NUMERATOR, long double DENOMINATOR)'
     `math.h' (BSD):  *note Remainder Functions::.

`mode_t DTTOIF (int DTYPE)'
     `dirent.h' (BSD):  *note Directory Entries::.

`int dup (int OLD)'
     `unistd.h' (POSIX.1):  *note Duplicating Descriptors::.

`int dup2 (int OLD, int NEW)'
     `unistd.h' (POSIX.1):  *note Duplicating Descriptors::.

`int E2BIG'
     `errno.h' (POSIX.1: Argument list too long):  *note Error Codes::.

`int EACCES'
     `errno.h' (POSIX.1: Permission denied):  *note Error Codes::.

`int EADDRINUSE'
     `errno.h' (BSD: Address already in use):  *note Error Codes::.

`int EADDRNOTAVAIL'
     `errno.h' (BSD: Cannot assign requested address):  *note Error
     Codes::.

`int EADV'
     `errno.h' (Linux???: Advertise error):  *note Error Codes::.

`int EAFNOSUPPORT'
     `errno.h' (BSD: Address family not supported by protocol):  *note
     Error Codes::.

`int EAGAIN'
     `errno.h' (POSIX.1: Resource temporarily unavailable):  *note
     Error Codes::.

`int EALREADY'
     `errno.h' (BSD: Operation already in progress):  *note Error
     Codes::.

`int EAUTH'
     `errno.h' (BSD: Authentication error):  *note Error Codes::.

`int EBACKGROUND'
     `errno.h' (GNU: Inappropriate operation for background process):
     *note Error Codes::.

`int EBADE'
     `errno.h' (Linux???: Invalid exchange):  *note Error Codes::.

`int EBADF'
     `errno.h' (POSIX.1: Bad file descriptor):  *note Error Codes::.

`int EBADFD'
     `errno.h' (Linux???: File descriptor in bad state):  *note Error
     Codes::.

`int EBADMSG'
     `errno.h' (XOPEN: Bad message):  *note Error Codes::.

`int EBADR'
     `errno.h' (Linux???: Invalid request descriptor):  *note Error
     Codes::.

`int EBADRPC'
     `errno.h' (BSD: RPC struct is bad):  *note Error Codes::.

`int EBADRQC'
     `errno.h' (Linux???: Invalid request code):  *note Error Codes::.

`int EBADSLT'
     `errno.h' (Linux???: Invalid slot):  *note Error Codes::.

`int EBFONT'
     `errno.h' (Linux???: Bad font file format):  *note Error Codes::.

`int EBUSY'
     `errno.h' (POSIX.1: Device or resource busy):  *note Error Codes::.

`int ECANCELED'
     `errno.h' (POSIX.1: Operation canceled):  *note Error Codes::.

`int ecb_crypt (char *KEY, char *BLOCKS, unsigned LEN, unsigned MODE)'
     `rpc/des_crypt.h' (SUNRPC):  *note DES Encryption::.

`int ECHILD'
     `errno.h' (POSIX.1: No child processes):  *note Error Codes::.

`tcflag_t ECHO'
     `termios.h' (POSIX.1):  *note Local Modes::.

`tcflag_t ECHOCTL'
     `termios.h' (BSD):  *note Local Modes::.

`tcflag_t ECHOE'
     `termios.h' (POSIX.1):  *note Local Modes::.

`tcflag_t ECHOK'
     `termios.h' (POSIX.1):  *note Local Modes::.

`tcflag_t ECHOKE'
     `termios.h' (BSD):  *note Local Modes::.

`tcflag_t ECHONL'
     `termios.h' (POSIX.1):  *note Local Modes::.

`tcflag_t ECHOPRT'
     `termios.h' (BSD):  *note Local Modes::.

`int ECHRNG'
     `errno.h' (Linux???: Channel number out of range):  *note Error
     Codes::.

`int ECOMM'
     `errno.h' (Linux???: Communication error on send):  *note Error
     Codes::.

`int ECONNABORTED'
     `errno.h' (BSD: Software caused connection abort):  *note Error
     Codes::.

`int ECONNREFUSED'
     `errno.h' (BSD: Connection refused):  *note Error Codes::.

`int ECONNRESET'
     `errno.h' (BSD: Connection reset by peer):  *note Error Codes::.

`char * ecvt (double VALUE, int NDIGIT, int *DECPT, int *NEG)'
     `stdlib.h' (SVID, Unix98):  *note System V Number Conversion::.

`int ecvt_r (double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
     `stdlib.h' (GNU):  *note System V Number Conversion::.

`int ED'
     `errno.h' (GNU: ?):  *note Error Codes::.

`int EDEADLK'
     `errno.h' (POSIX.1: Resource deadlock avoided):  *note Error
     Codes::.

`int EDEADLOCK'
     `errno.h' (Linux???: File locking deadlock error):  *note Error
     Codes::.

`int EDESTADDRREQ'
     `errno.h' (BSD: Destination address required):  *note Error
     Codes::.

`int EDIED'
     `errno.h' (GNU: Translator died):  *note Error Codes::.

`int EDOM'
     `errno.h' (ISO: Numerical argument out of domain):  *note Error
     Codes::.

`int EDOTDOT'
     `errno.h' (Linux???: RFS specific error):  *note Error Codes::.

`int EDQUOT'
     `errno.h' (BSD: Disk quota exceeded):  *note Error Codes::.

`int EEXIST'
     `errno.h' (POSIX.1: File exists):  *note Error Codes::.

`int EFAULT'
     `errno.h' (POSIX.1: Bad address):  *note Error Codes::.

`int EFBIG'
     `errno.h' (POSIX.1: File too large):  *note Error Codes::.

`int EFTYPE'
     `errno.h' (BSD: Inappropriate file type or format):  *note Error
     Codes::.

`int EGRATUITOUS'
     `errno.h' (GNU: Gratuitous error):  *note Error Codes::.

`int EGREGIOUS'
     `errno.h' (GNU: You really blew it this time):  *note Error
     Codes::.

`int EHOSTDOWN'
     `errno.h' (BSD: Host is down):  *note Error Codes::.

`int EHOSTUNREACH'
     `errno.h' (BSD: No route to host):  *note Error Codes::.

`int EHWPOISON'
     `errno.h' (Linux: Memory page has hardware error):  *note Error
     Codes::.

`int EIDRM'
     `errno.h' (XOPEN: Identifier removed):  *note Error Codes::.

`int EIEIO'
     `errno.h' (GNU: Computer bought the farm):  *note Error Codes::.

`int EILSEQ'
     `errno.h' (ISO: Invalid or incomplete multibyte or wide
     character):  *note Error Codes::.

`int EINPROGRESS'
     `errno.h' (BSD: Operation now in progress):  *note Error Codes::.

`int EINTR'
     `errno.h' (POSIX.1: Interrupted system call):  *note Error Codes::.

`int EINVAL'
     `errno.h' (POSIX.1: Invalid argument):  *note Error Codes::.

`int EIO'
     `errno.h' (POSIX.1: Input/output error):  *note Error Codes::.

`int EISCONN'
     `errno.h' (BSD: Transport endpoint is already connected):  *note
     Error Codes::.

`int EISDIR'
     `errno.h' (POSIX.1: Is a directory):  *note Error Codes::.

`int EISNAM'
     `errno.h' (Linux???: Is a named type file):  *note Error Codes::.

`int EKEYEXPIRED'
     `errno.h' (Linux: Key has expired):  *note Error Codes::.

`int EKEYREJECTED'
     `errno.h' (Linux: Key was rejected by service):  *note Error
     Codes::.

`int EKEYREVOKED'
     `errno.h' (Linux: Key has been revoked):  *note Error Codes::.

`int EL2HLT'
     `errno.h' (Obsolete: Level 2 halted):  *note Error Codes::.

`int EL2NSYNC'
     `errno.h' (Obsolete: Level 2 not synchronized):  *note Error
     Codes::.

`int EL3HLT'
     `errno.h' (Obsolete: Level 3 halted):  *note Error Codes::.

`int EL3RST'
     `errno.h' (Obsolete: Level 3 reset):  *note Error Codes::.

`int ELIBACC'
     `errno.h' (Linux???: Can not access a needed shared library):
     *note Error Codes::.

`int ELIBBAD'
     `errno.h' (Linux???: Accessing a corrupted shared library):  *note
     Error Codes::.

`int ELIBEXEC'
     `errno.h' (Linux???: Cannot exec a shared library directly):
     *note Error Codes::.

`int ELIBMAX'
     `errno.h' (Linux???: Attempting to link in too many shared
     libraries):  *note Error Codes::.

`int ELIBSCN'
     `errno.h' (Linux???: .lib section in a.out corrupted):  *note
     Error Codes::.

`int ELNRNG'
     `errno.h' (Linux???: Link number out of range):  *note Error
     Codes::.

`int ELOOP'
     `errno.h' (BSD: Too many levels of symbolic links):  *note Error
     Codes::.

`int EMEDIUMTYPE'
     `errno.h' (Linux???: Wrong medium type):  *note Error Codes::.

`int EMFILE'
     `errno.h' (POSIX.1: Too many open files):  *note Error Codes::.

`int EMLINK'
     `errno.h' (POSIX.1: Too many links):  *note Error Codes::.

`EMPTY'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`EMPTY'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int EMSGSIZE'
     `errno.h' (BSD: Message too long):  *note Error Codes::.

`int EMULTIHOP'
     `errno.h' (XOPEN: Multihop attempted):  *note Error Codes::.

`int ENAMETOOLONG'
     `errno.h' (POSIX.1: File name too long):  *note Error Codes::.

`int ENAVAIL'
     `errno.h' (Linux???: No XENIX semaphores available):  *note Error
     Codes::.

`void encrypt (char *BLOCK, int EDFLAG)'
     `crypt.h' (BSD, SVID):  *note DES Encryption::.

`void encrypt_r (char *BLOCK, int EDFLAG, struct crypt_data * DATA)'
     `crypt.h' (GNU):  *note DES Encryption::.

`void endfsent (void)'
     `fstab.h' (BSD):  *note fstab::.

`void endgrent (void)'
     `grp.h' (SVID, BSD):  *note Scanning All Groups::.

`void endhostent (void)'
     `netdb.h' (BSD):  *note Host Names::.

`int endmntent (FILE *STREAM)'
     `mntent.h' (BSD):  *note mtab::.

`void endnetent (void)'
     `netdb.h' (BSD):  *note Networks Database::.

`void endnetgrent (void)'
     `netdb.h' (BSD):  *note Lookup Netgroup::.

`void endprotoent (void)'
     `netdb.h' (BSD):  *note Protocols Database::.

`void endpwent (void)'
     `pwd.h' (SVID, BSD):  *note Scanning All Users::.

`void endservent (void)'
     `netdb.h' (BSD):  *note Services Database::.

`void endutent (void)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`void endutxent (void)'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int ENEEDAUTH'
     `errno.h' (BSD: Need authenticator):  *note Error Codes::.

`int ENETDOWN'
     `errno.h' (BSD: Network is down):  *note Error Codes::.

`int ENETRESET'
     `errno.h' (BSD: Network dropped connection on reset):  *note Error
     Codes::.

`int ENETUNREACH'
     `errno.h' (BSD: Network is unreachable):  *note Error Codes::.

`int ENFILE'
     `errno.h' (POSIX.1: Too many open files in system):  *note Error
     Codes::.

`int ENOANO'
     `errno.h' (Linux???: No anode):  *note Error Codes::.

`int ENOBUFS'
     `errno.h' (BSD: No buffer space available):  *note Error Codes::.

`int ENOCSI'
     `errno.h' (Linux???: No CSI structure available):  *note Error
     Codes::.

`int ENODATA'
     `errno.h' (XOPEN: No data available):  *note Error Codes::.

`int ENODEV'
     `errno.h' (POSIX.1: No such device):  *note Error Codes::.

`int ENOENT'
     `errno.h' (POSIX.1: No such file or directory):  *note Error
     Codes::.

`int ENOEXEC'
     `errno.h' (POSIX.1: Exec format error):  *note Error Codes::.

`int ENOKEY'
     `errno.h' (Linux: Required key not available):  *note Error
     Codes::.

`int ENOLCK'
     `errno.h' (POSIX.1: No locks available):  *note Error Codes::.

`int ENOLINK'
     `errno.h' (XOPEN: Link has been severed):  *note Error Codes::.

`int ENOMEDIUM'
     `errno.h' (Linux???: No medium found):  *note Error Codes::.

`int ENOMEM'
     `errno.h' (POSIX.1: Cannot allocate memory):  *note Error Codes::.

`int ENOMSG'
     `errno.h' (XOPEN: No message of desired type):  *note Error
     Codes::.

`int ENONET'
     `errno.h' (Linux???: Machine is not on the network):  *note Error
     Codes::.

`int ENOPKG'
     `errno.h' (Linux???: Package not installed):  *note Error Codes::.

`int ENOPROTOOPT'
     `errno.h' (BSD: Protocol not available):  *note Error Codes::.

`int ENOSPC'
     `errno.h' (POSIX.1: No space left on device):  *note Error Codes::.

`int ENOSR'
     `errno.h' (XOPEN: Out of streams resources):  *note Error Codes::.

`int ENOSTR'
     `errno.h' (XOPEN: Device not a stream):  *note Error Codes::.

`int ENOSYS'
     `errno.h' (POSIX.1: Function not implemented):  *note Error
     Codes::.

`int ENOTBLK'
     `errno.h' (BSD: Block device required):  *note Error Codes::.

`int ENOTCONN'
     `errno.h' (BSD: Transport endpoint is not connected):  *note Error
     Codes::.

`int ENOTDIR'
     `errno.h' (POSIX.1: Not a directory):  *note Error Codes::.

`int ENOTEMPTY'
     `errno.h' (POSIX.1: Directory not empty):  *note Error Codes::.

`int ENOTNAM'
     `errno.h' (Linux???: Not a XENIX named type file):  *note Error
     Codes::.

`int ENOTRECOVERABLE'
     `errno.h' (Linux: State not recoverable):  *note Error Codes::.

`int ENOTSOCK'
     `errno.h' (BSD: Socket operation on non-socket):  *note Error
     Codes::.

`int ENOTSUP'
     `errno.h' (POSIX.1: Not supported):  *note Error Codes::.

`int ENOTTY'
     `errno.h' (POSIX.1: Inappropriate ioctl for device):  *note Error
     Codes::.

`int ENOTUNIQ'
     `errno.h' (Linux???: Name not unique on network):  *note Error
     Codes::.

`char ** environ'
     `unistd.h' (POSIX.1):  *note Environment Access::.

`error_t envz_add (char **ENVZ, size_t *ENVZ_LEN, const char *NAME, const char *VALUE)'
     `envz.h' (GNU):  *note Envz Functions::.

`char * envz_entry (const char *ENVZ, size_t ENVZ_LEN, const char *NAME)'
     `envz.h' (GNU):  *note Envz Functions::.

`char * envz_get (const char *ENVZ, size_t ENVZ_LEN, const char *NAME)'
     `envz.h' (GNU):  *note Envz Functions::.

`error_t envz_merge (char **ENVZ, size_t *ENVZ_LEN, const char *ENVZ2, size_t ENVZ2_LEN, int OVERRIDE)'
     `envz.h' (GNU):  *note Envz Functions::.

`void envz_strip (char **ENVZ, size_t *ENVZ_LEN)'
     `envz.h' (GNU):  *note Envz Functions::.

`int ENXIO'
     `errno.h' (POSIX.1: No such device or address):  *note Error
     Codes::.

`int EOF'
     `stdio.h' (ISO):  *note EOF and Errors::.

`int EOPNOTSUPP'
     `errno.h' (BSD: Operation not supported):  *note Error Codes::.

`int EOVERFLOW'
     `errno.h' (XOPEN: Value too large for defined data type):  *note
     Error Codes::.

`int EOWNERDEAD'
     `errno.h' (Linux: Owner died):  *note Error Codes::.

`int EPERM'
     `errno.h' (POSIX.1: Operation not permitted):  *note Error Codes::.

`int EPFNOSUPPORT'
     `errno.h' (BSD: Protocol family not supported):  *note Error
     Codes::.

`int EPIPE'
     `errno.h' (POSIX.1: Broken pipe):  *note Error Codes::.

`int EPROCLIM'
     `errno.h' (BSD: Too many processes):  *note Error Codes::.

`int EPROCUNAVAIL'
     `errno.h' (BSD: RPC bad procedure for program):  *note Error
     Codes::.

`int EPROGMISMATCH'
     `errno.h' (BSD: RPC program version wrong):  *note Error Codes::.

`int EPROGUNAVAIL'
     `errno.h' (BSD: RPC program not available):  *note Error Codes::.

`int EPROTO'
     `errno.h' (XOPEN: Protocol error):  *note Error Codes::.

`int EPROTONOSUPPORT'
     `errno.h' (BSD: Protocol not supported):  *note Error Codes::.

`int EPROTOTYPE'
     `errno.h' (BSD: Protocol wrong type for socket):  *note Error
     Codes::.

`int EQUIV_CLASS_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`double erand48 (unsigned short int XSUBI[3])'
     `stdlib.h' (SVID):  *note SVID Random::.

`int erand48_r (unsigned short int XSUBI[3], struct drand48_data *BUFFER, double *RESULT)'
     `stdlib.h' (GNU):  *note SVID Random::.

`int ERANGE'
     `errno.h' (ISO: Numerical result out of range):  *note Error
     Codes::.

`int EREMCHG'
     `errno.h' (Linux???: Remote address changed):  *note Error Codes::.

`int EREMOTE'
     `errno.h' (BSD: Object is remote):  *note Error Codes::.

`int EREMOTEIO'
     `errno.h' (Linux???: Remote I/O error):  *note Error Codes::.

`int ERESTART'
     `errno.h' (Linux???: Interrupted system call should be restarted):
     *note Error Codes::.

`double erf (double X)'
     `math.h' (SVID):  *note Special Functions::.

`double erfc (double X)'
     `math.h' (SVID):  *note Special Functions::.

`float erfcf (float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double erfcl (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`float erff (float X)'
     `math.h' (SVID):  *note Special Functions::.

`int ERFKILL'
     `errno.h' (Linux: Operation not possible due to RF-kill):  *note
     Error Codes::.

`long double erfl (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`int EROFS'
     `errno.h' (POSIX.1: Read-only file system):  *note Error Codes::.

`int ERPCMISMATCH'
     `errno.h' (BSD: RPC version wrong):  *note Error Codes::.

`void err (int STATUS, const char *FORMAT, ...)'
     `err.h' (BSD):  *note Error Messages::.

`volatile int errno'
     `errno.h' (ISO):  *note Checking for Errors::.

`void error (int STATUS, int ERRNUM, const char *FORMAT, ...)'
     `error.h' (GNU):  *note Error Messages::.

`void error_at_line (int STATUS, int ERRNUM, const char *FNAME, unsigned int LINENO, const char *FORMAT, ...)'
     `error.h' (GNU):  *note Error Messages::.

`unsigned int error_message_count'
     `error.h' (GNU):  *note Error Messages::.

`int error_one_per_line'
     `error.h' (GNU):  *note Error Messages::.

`void errx (int STATUS, const char *FORMAT, ...)'
     `err.h' (BSD):  *note Error Messages::.

`int ESHUTDOWN'
     `errno.h' (BSD: Cannot send after transport endpoint shutdown):
     *note Error Codes::.

`int ESOCKTNOSUPPORT'
     `errno.h' (BSD: Socket type not supported):  *note Error Codes::.

`int ESPIPE'
     `errno.h' (POSIX.1: Illegal seek):  *note Error Codes::.

`int ESRCH'
     `errno.h' (POSIX.1: No such process):  *note Error Codes::.

`int ESRMNT'
     `errno.h' (Linux???: Srmount error):  *note Error Codes::.

`int ESTALE'
     `errno.h' (BSD: Stale file handle):  *note Error Codes::.

`int ESTRPIPE'
     `errno.h' (Linux???: Streams pipe error):  *note Error Codes::.

`int ETIME'
     `errno.h' (XOPEN: Timer expired):  *note Error Codes::.

`int ETIMEDOUT'
     `errno.h' (BSD: Connection timed out):  *note Error Codes::.

`int ETOOMANYREFS'
     `errno.h' (BSD: Too many references: cannot splice):  *note Error
     Codes::.

`int ETXTBSY'
     `errno.h' (BSD: Text file busy):  *note Error Codes::.

`int EUCLEAN'
     `errno.h' (Linux???: Structure needs cleaning):  *note Error
     Codes::.

`int EUNATCH'
     `errno.h' (Linux???: Protocol driver not attached):  *note Error
     Codes::.

`int EUSERS'
     `errno.h' (BSD: Too many users):  *note Error Codes::.

`int EWOULDBLOCK'
     `errno.h' (BSD: Operation would block):  *note Error Codes::.

`int EXDEV'
     `errno.h' (POSIX.1: Invalid cross-device link):  *note Error
     Codes::.

`int execl (const char *FILENAME, const char *ARG0, ...)'
     `unistd.h' (POSIX.1):  *note Executing a File::.

`int execle (const char *FILENAME, const char *ARG0, ..., char *const ENV[])'
     `unistd.h' (POSIX.1):  *note Executing a File::.

`int execlp (const char *FILENAME, const char *ARG0, ...)'
     `unistd.h' (POSIX.1):  *note Executing a File::.

`int execv (const char *FILENAME, char *const ARGV[])'
     `unistd.h' (POSIX.1):  *note Executing a File::.

`int execve (const char *FILENAME, char *const ARGV[], char *const ENV[])'
     `unistd.h' (POSIX.1):  *note Executing a File::.

`int execvp (const char *FILENAME, char *const ARGV[])'
     `unistd.h' (POSIX.1):  *note Executing a File::.

`int EXFULL'
     `errno.h' (Linux???: Exchange full):  *note Error Codes::.

`void _Exit (int STATUS)'
     `stdlib.h' (ISO):  *note Termination Internals::.

`void _exit (int STATUS)'
     `unistd.h' (POSIX.1):  *note Termination Internals::.

`void exit (int STATUS)'
     `stdlib.h' (ISO):  *note Normal Termination::.

`int EXIT_FAILURE'
     `stdlib.h' (ISO):  *note Exit Status::.

`int EXIT_SUCCESS'
     `stdlib.h' (ISO):  *note Exit Status::.

`double exp (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`double exp10 (double X)'
     `math.h' (GNU):  *note Exponents and Logarithms::.

`float exp10f (float X)'
     `math.h' (GNU):  *note Exponents and Logarithms::.

`long double exp10l (long double X)'
     `math.h' (GNU):  *note Exponents and Logarithms::.

`double exp2 (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float exp2f (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double exp2l (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float expf (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double expl (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`double expm1 (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float expm1f (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double expm1l (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`int EXPR_NEST_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`double fabs (double NUMBER)'
     `math.h' (ISO):  *note Absolute Value::.

`float fabsf (float NUMBER)'
     `math.h' (ISO):  *note Absolute Value::.

`long double fabsl (long double NUMBER)'
     `math.h' (ISO):  *note Absolute Value::.

`size_t __fbufsize (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Controlling Buffering::.

`int fchdir (int FILEDES)'
     `unistd.h' (XPG):  *note Working Directory::.

`int fchmod (int FILEDES, mode_t MODE)'
     `sys/stat.h' (BSD):  *note Setting Permissions::.

`int fchown (int FILEDES, uid_t OWNER, gid_t GROUP)'
     `unistd.h' (BSD):  *note File Owner::.

`int fclose (FILE *STREAM)'
     `stdio.h' (ISO):  *note Closing Streams::.

`int fcloseall (void)'
     `stdio.h' (GNU):  *note Closing Streams::.

`int fcntl (int FILEDES, int COMMAND, ...)'
     `fcntl.h' (POSIX.1):  *note Control Operations::.

`char * fcvt (double VALUE, int NDIGIT, int *DECPT, int *NEG)'
     `stdlib.h' (SVID, Unix98):  *note System V Number Conversion::.

`int fcvt_r (double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
     `stdlib.h' (SVID, Unix98):  *note System V Number Conversion::.

`int fdatasync (int FILDES)'
     `unistd.h' (POSIX):  *note Synchronizing I/O::.

`int FD_CLOEXEC'
     `fcntl.h' (POSIX.1):  *note Descriptor Flags::.

`void FD_CLR (int FILEDES, fd_set *SET)'
     `sys/types.h' (BSD):  *note Waiting for I/O::.

`double fdim (double X, double Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`float fdimf (float X, float Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`long double fdiml (long double X, long double Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`int FD_ISSET (int FILEDES, const fd_set *SET)'
     `sys/types.h' (BSD):  *note Waiting for I/O::.

`FILE * fdopen (int FILEDES, const char *OPENTYPE)'
     `stdio.h' (POSIX.1):  *note Descriptors and Streams::.

`DIR * fdopendir (int FD)'
     `dirent.h' (GNU):  *note Opening a Directory::.

`void FD_SET (int FILEDES, fd_set *SET)'
     `sys/types.h' (BSD):  *note Waiting for I/O::.

`fd_set'
     `sys/types.h' (BSD):  *note Waiting for I/O::.

`int FD_SETSIZE'
     `sys/types.h' (BSD):  *note Waiting for I/O::.

`int F_DUPFD'
     `fcntl.h' (POSIX.1):  *note Duplicating Descriptors::.

`void FD_ZERO (fd_set *SET)'
     `sys/types.h' (BSD):  *note Waiting for I/O::.

`int feclearexcept (int EXCEPTS)'
     `fenv.h' (ISO):  *note Status bit operations::.

`int fedisableexcept (int EXCEPTS)'
     `fenv.h' (GNU):  *note Control Functions::.

`FE_DIVBYZERO'
     `fenv.h' (ISO):  *note Status bit operations::.

`FE_DOWNWARD'
     `fenv.h' (ISO):  *note Rounding::.

`int feenableexcept (int EXCEPTS)'
     `fenv.h' (GNU):  *note Control Functions::.

`int fegetenv (fenv_t *ENVP)'
     `fenv.h' (ISO):  *note Control Functions::.

`int fegetexcept (void)'
     `fenv.h' (GNU):  *note Control Functions::.

`int fegetexceptflag (fexcept_t *FLAGP, int EXCEPTS)'
     `fenv.h' (ISO):  *note Status bit operations::.

`int fegetround (void)'
     `fenv.h' (ISO):  *note Rounding::.

`int feholdexcept (fenv_t *ENVP)'
     `fenv.h' (ISO):  *note Control Functions::.

`FE_INEXACT'
     `fenv.h' (ISO):  *note Status bit operations::.

`FE_INVALID'
     `fenv.h' (ISO):  *note Status bit operations::.

`int feof (FILE *STREAM)'
     `stdio.h' (ISO):  *note EOF and Errors::.

`int feof_unlocked (FILE *STREAM)'
     `stdio.h' (GNU):  *note EOF and Errors::.

`FE_OVERFLOW'
     `fenv.h' (ISO):  *note Status bit operations::.

`int feraiseexcept (int EXCEPTS)'
     `fenv.h' (ISO):  *note Status bit operations::.

`int ferror (FILE *STREAM)'
     `stdio.h' (ISO):  *note EOF and Errors::.

`int ferror_unlocked (FILE *STREAM)'
     `stdio.h' (GNU):  *note EOF and Errors::.

`int fesetenv (const fenv_t *ENVP)'
     `fenv.h' (ISO):  *note Control Functions::.

`int fesetexceptflag (const fexcept_t *FLAGP, int EXCEPTS)'
     `fenv.h' (ISO):  *note Status bit operations::.

`int fesetround (int ROUND)'
     `fenv.h' (ISO):  *note Rounding::.

`int fetestexcept (int EXCEPTS)'
     `fenv.h' (ISO):  *note Status bit operations::.

`FE_TONEAREST'
     `fenv.h' (ISO):  *note Rounding::.

`FE_TOWARDZERO'
     `fenv.h' (ISO):  *note Rounding::.

`FE_UNDERFLOW'
     `fenv.h' (ISO):  *note Status bit operations::.

`int feupdateenv (const fenv_t *ENVP)'
     `fenv.h' (ISO):  *note Control Functions::.

`FE_UPWARD'
     `fenv.h' (ISO):  *note Rounding::.

`int fflush (FILE *STREAM)'
     `stdio.h' (ISO):  *note Flushing Buffers::.

`int fflush_unlocked (FILE *STREAM)'
     `stdio.h' (POSIX):  *note Flushing Buffers::.

`int fgetc (FILE *STREAM)'
     `stdio.h' (ISO):  *note Character Input::.

`int fgetc_unlocked (FILE *STREAM)'
     `stdio.h' (POSIX):  *note Character Input::.

`int F_GETFD'
     `fcntl.h' (POSIX.1):  *note Descriptor Flags::.

`int F_GETFL'
     `fcntl.h' (POSIX.1):  *note Getting File Status Flags::.

`struct group * fgetgrent (FILE *STREAM)'
     `grp.h' (SVID):  *note Scanning All Groups::.

`int fgetgrent_r (FILE *STREAM, struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
     `grp.h' (GNU):  *note Scanning All Groups::.

`int F_GETLK'
     `fcntl.h' (POSIX.1):  *note File Locks::.

`int F_GETOWN'
     `fcntl.h' (BSD):  *note Interrupt Input::.

`int fgetpos (FILE *STREAM, fpos_t *POSITION)'
     `stdio.h' (ISO):  *note Portable Positioning::.

`int fgetpos64 (FILE *STREAM, fpos64_t *POSITION)'
     `stdio.h' (Unix98):  *note Portable Positioning::.

`struct passwd * fgetpwent (FILE *STREAM)'
     `pwd.h' (SVID):  *note Scanning All Users::.

`int fgetpwent_r (FILE *STREAM, struct passwd *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd **RESULT)'
     `pwd.h' (GNU):  *note Scanning All Users::.

`char * fgets (char *S, int COUNT, FILE *STREAM)'
     `stdio.h' (ISO):  *note Line Input::.

`char * fgets_unlocked (char *S, int COUNT, FILE *STREAM)'
     `stdio.h' (GNU):  *note Line Input::.

`wint_t fgetwc (FILE *STREAM)'
     `wchar.h' (ISO):  *note Character Input::.

`wint_t fgetwc_unlocked (FILE *STREAM)'
     `wchar.h' (GNU):  *note Character Input::.

`wchar_t * fgetws (wchar_t *WS, int COUNT, FILE *STREAM)'
     `wchar.h' (ISO):  *note Line Input::.

`wchar_t * fgetws_unlocked (wchar_t *WS, int COUNT, FILE *STREAM)'
     `wchar.h' (GNU):  *note Line Input::.

`FILE'
     `stdio.h' (ISO):  *note Streams::.

`int FILENAME_MAX'
     `stdio.h' (ISO):  *note Limits for Files::.

`int fileno (FILE *STREAM)'
     `stdio.h' (POSIX.1):  *note Descriptors and Streams::.

`int fileno_unlocked (FILE *STREAM)'
     `stdio.h' (GNU):  *note Descriptors and Streams::.

`int finite (double X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int finitef (float X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int finitel (long double X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int __flbf (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Controlling Buffering::.

`void flockfile (FILE *STREAM)'
     `stdio.h' (POSIX):  *note Streams and Threads::.

`double floor (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`float floorf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long double floorl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`FLT_DIG'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_EPSILON'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_MANT_DIG'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_MAX'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_MAX_10_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_MAX_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_MIN'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_MIN_10_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_MIN_EXP'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_RADIX'
     `float.h' (ISO):  *note Floating Point Parameters::.

`FLT_ROUNDS'
     `float.h' (ISO):  *note Floating Point Parameters::.

`void _flushlbf (void)'
     `stdio_ext.h' (GNU):  *note Flushing Buffers::.

`tcflag_t FLUSHO'
     `termios.h' (BSD):  *note Local Modes::.

`double fma (double X, double Y, double Z)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`float fmaf (float X, float Y, float Z)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`long double fmal (long double X, long double Y, long double Z)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`double fmax (double X, double Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`float fmaxf (float X, float Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`long double fmaxl (long double X, long double Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`FILE * fmemopen (void *BUF, size_t SIZE, const char *OPENTYPE)'
     `stdio.h' (GNU):  *note String Streams::.

`double fmin (double X, double Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`float fminf (float X, float Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`long double fminl (long double X, long double Y)'
     `math.h' (ISO):  *note Misc FP Arithmetic::.

`double fmod (double NUMERATOR, double DENOMINATOR)'
     `math.h' (ISO):  *note Remainder Functions::.

`float fmodf (float NUMERATOR, float DENOMINATOR)'
     `math.h' (ISO):  *note Remainder Functions::.

`long double fmodl (long double NUMERATOR, long double DENOMINATOR)'
     `math.h' (ISO):  *note Remainder Functions::.

`int fmtmsg (long int CLASSIFICATION, const char *LABEL, int SEVERITY, const char *TEXT, const char *ACTION, const char *TAG)'
     `fmtmsg.h' (XPG):  *note Printing Formatted Messages::.

`int fnmatch (const char *PATTERN, const char *STRING, int FLAGS)'
     `fnmatch.h' (POSIX.2):  *note Wildcard Matching::.

`FNM_CASEFOLD'
     `fnmatch.h' (GNU):  *note Wildcard Matching::.

`FNM_EXTMATCH'
     `fnmatch.h' (GNU):  *note Wildcard Matching::.

`FNM_FILE_NAME'
     `fnmatch.h' (GNU):  *note Wildcard Matching::.

`FNM_LEADING_DIR'
     `fnmatch.h' (GNU):  *note Wildcard Matching::.

`FNM_NOESCAPE'
     `fnmatch.h' (POSIX.2):  *note Wildcard Matching::.

`FNM_PATHNAME'
     `fnmatch.h' (POSIX.2):  *note Wildcard Matching::.

`FNM_PERIOD'
     `fnmatch.h' (POSIX.2):  *note Wildcard Matching::.

`int F_OK'
     `unistd.h' (POSIX.1):  *note Testing File Access::.

`FILE * fopen (const char *FILENAME, const char *OPENTYPE)'
     `stdio.h' (ISO):  *note Opening Streams::.

`FILE * fopen64 (const char *FILENAME, const char *OPENTYPE)'
     `stdio.h' (Unix98):  *note Opening Streams::.

`FILE * fopencookie (void *COOKIE, const char *OPENTYPE, cookie_io_functions_t IO-FUNCTIONS)'
     `stdio.h' (GNU):  *note Streams and Cookies::.

`int FOPEN_MAX'
     `stdio.h' (ISO):  *note Opening Streams::.

`pid_t fork (void)'
     `unistd.h' (POSIX.1):  *note Creating a Process::.

`int forkpty (int *AMASTER, char *NAME, const struct termios *TERMP, const struct winsize *WINP)'
     `pty.h' (BSD):  *note Pseudo-Terminal Pairs::.

`long int fpathconf (int FILEDES, int PARAMETER)'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`int fpclassify (_float-type_ X)'
     `math.h' (ISO):  *note Floating Point Classes::.

`FPE_DECOVF_TRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_FLTDIV_FAULT'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_FLTDIV_TRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_FLTOVF_FAULT'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_FLTOVF_TRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_FLTUND_FAULT'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_FLTUND_TRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_INTDIV_TRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`FPE_INTOVF_TRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`size_t __fpending (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Controlling Buffering::.

`FPE_SUBRNG_TRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`int FP_ILOGB0'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`int FP_ILOGBNAN'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`fpos64_t'
     `stdio.h' (Unix98):  *note Portable Positioning::.

`fpos_t'
     `stdio.h' (ISO):  *note Portable Positioning::.

`int fprintf (FILE *STREAM, const char *TEMPLATE, ...)'
     `stdio.h' (ISO):  *note Formatted Output Functions::.

`void __fpurge (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Flushing Buffers::.

`int fputc (int C, FILE *STREAM)'
     `stdio.h' (ISO):  *note Simple Output::.

`int fputc_unlocked (int C, FILE *STREAM)'
     `stdio.h' (POSIX):  *note Simple Output::.

`int fputs (const char *S, FILE *STREAM)'
     `stdio.h' (ISO):  *note Simple Output::.

`int fputs_unlocked (const char *S, FILE *STREAM)'
     `stdio.h' (GNU):  *note Simple Output::.

`wint_t fputwc (wchar_t WC, FILE *STREAM)'
     `wchar.h' (ISO):  *note Simple Output::.

`wint_t fputwc_unlocked (wchar_t WC, FILE *STREAM)'
     `wchar.h' (POSIX):  *note Simple Output::.

`int fputws (const wchar_t *WS, FILE *STREAM)'
     `wchar.h' (ISO):  *note Simple Output::.

`int fputws_unlocked (const wchar_t *WS, FILE *STREAM)'
     `wchar.h' (GNU):  *note Simple Output::.

`F_RDLCK'
     `fcntl.h' (POSIX.1):  *note File Locks::.

`size_t fread (void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
     `stdio.h' (ISO):  *note Block Input/Output::.

`int __freadable (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Opening Streams::.

`int __freading (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Opening Streams::.

`size_t fread_unlocked (void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
     `stdio.h' (GNU):  *note Block Input/Output::.

`void free (void *PTR)'
     `malloc.h', `stdlib.h' (ISO):  *note Freeing after Malloc::.

`__free_hook'
     `malloc.h' (GNU):  *note Hooks for Malloc::.

`FILE * freopen (const char *FILENAME, const char *OPENTYPE, FILE *STREAM)'
     `stdio.h' (ISO):  *note Opening Streams::.

`FILE * freopen64 (const char *FILENAME, const char *OPENTYPE, FILE *STREAM)'
     `stdio.h' (Unix98):  *note Opening Streams::.

`double frexp (double VALUE, int *EXPONENT)'
     `math.h' (ISO):  *note Normalization Functions::.

`float frexpf (float VALUE, int *EXPONENT)'
     `math.h' (ISO):  *note Normalization Functions::.

`long double frexpl (long double VALUE, int *EXPONENT)'
     `math.h' (ISO):  *note Normalization Functions::.

`int fscanf (FILE *STREAM, const char *TEMPLATE, ...)'
     `stdio.h' (ISO):  *note Formatted Input Functions::.

`int fseek (FILE *STREAM, long int OFFSET, int WHENCE)'
     `stdio.h' (ISO):  *note File Positioning::.

`int fseeko (FILE *STREAM, off_t OFFSET, int WHENCE)'
     `stdio.h' (Unix98):  *note File Positioning::.

`int fseeko64 (FILE *STREAM, off64_t OFFSET, int WHENCE)'
     `stdio.h' (Unix98):  *note File Positioning::.

`int F_SETFD'
     `fcntl.h' (POSIX.1):  *note Descriptor Flags::.

`int F_SETFL'
     `fcntl.h' (POSIX.1):  *note Getting File Status Flags::.

`int F_SETLK'
     `fcntl.h' (POSIX.1):  *note File Locks::.

`int F_SETLKW'
     `fcntl.h' (POSIX.1):  *note File Locks::.

`int __fsetlocking (FILE *STREAM, int TYPE)'
     `stdio_ext.h' (GNU):  *note Streams and Threads::.

`int F_SETOWN'
     `fcntl.h' (BSD):  *note Interrupt Input::.

`int fsetpos (FILE *STREAM, const fpos_t *POSITION)'
     `stdio.h' (ISO):  *note Portable Positioning::.

`int fsetpos64 (FILE *STREAM, const fpos64_t *POSITION)'
     `stdio.h' (Unix98):  *note Portable Positioning::.

`int fstat (int FILEDES, struct stat *BUF)'
     `sys/stat.h' (POSIX.1):  *note Reading Attributes::.

`int fstat64 (int FILEDES, struct stat64 *BUF)'
     `sys/stat.h' (Unix98):  *note Reading Attributes::.

`int fsync (int FILDES)'
     `unistd.h' (POSIX):  *note Synchronizing I/O::.

`long int ftell (FILE *STREAM)'
     `stdio.h' (ISO):  *note File Positioning::.

`off_t ftello (FILE *STREAM)'
     `stdio.h' (Unix98):  *note File Positioning::.

`off64_t ftello64 (FILE *STREAM)'
     `stdio.h' (Unix98):  *note File Positioning::.

`int ftruncate (int FD, off_t LENGTH)'
     `unistd.h' (POSIX):  *note File Size::.

`int ftruncate64 (int ID, off64_t LENGTH)'
     `unistd.h' (Unix98):  *note File Size::.

`int ftrylockfile (FILE *STREAM)'
     `stdio.h' (POSIX):  *note Streams and Threads::.

`int ftw (const char *FILENAME, __ftw_func_t FUNC, int DESCRIPTORS)'
     `ftw.h' (SVID):  *note Working with Directory Trees::.

`int ftw64 (const char *FILENAME, __ftw64_func_t FUNC, int DESCRIPTORS)'
     `ftw.h' (Unix98):  *note Working with Directory Trees::.

`__ftw64_func_t'
     `ftw.h' (GNU):  *note Working with Directory Trees::.

`__ftw_func_t'
     `ftw.h' (GNU):  *note Working with Directory Trees::.

`F_UNLCK'
     `fcntl.h' (POSIX.1):  *note File Locks::.

`void funlockfile (FILE *STREAM)'
     `stdio.h' (POSIX):  *note Streams and Threads::.

`int futimes (int FD, const struct timeval TVP[2])'
     `sys/time.h' (BSD):  *note File Times::.

`int fwide (FILE *STREAM, int MODE)'
     `wchar.h' (ISO):  *note Streams and I18N::.

`int fwprintf (FILE *STREAM, const wchar_t *TEMPLATE, ...)'
     `wchar.h' (ISO):  *note Formatted Output Functions::.

`int __fwritable (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Opening Streams::.

`size_t fwrite (const void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
     `stdio.h' (ISO):  *note Block Input/Output::.

`size_t fwrite_unlocked (const void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
     `stdio.h' (GNU):  *note Block Input/Output::.

`int __fwriting (FILE *STREAM)'
     `stdio_ext.h' (GNU):  *note Opening Streams::.

`F_WRLCK'
     `fcntl.h' (POSIX.1):  *note File Locks::.

`int fwscanf (FILE *STREAM, const wchar_t *TEMPLATE, ...)'
     `wchar.h' (ISO):  *note Formatted Input Functions::.

`double gamma (double X)'
     `math.h' (SVID):  *note Special Functions::.

`float gammaf (float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double gammal (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`void (*__gconv_end_fct) (struct gconv_step *)'
     `gconv.h' (GNU):  *note glibc iconv Implementation::.

`int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, const char **, const char *, size_t *, int)'
     `gconv.h' (GNU):  *note glibc iconv Implementation::.

`int (*__gconv_init_fct) (struct __gconv_step *)'
     `gconv.h' (GNU):  *note glibc iconv Implementation::.

`char * gcvt (double VALUE, int NDIGIT, char *BUF)'
     `stdlib.h' (SVID, Unix98):  *note System V Number Conversion::.

`unsigned long int getauxval (unsigned long int TYPE)'
     `sys/auxv.h' (sys/auxv.h):  *note Auxiliary Vector::.

`long int get_avphys_pages (void)'
     `sys/sysinfo.h' (GNU):  *note Query Memory Parameters::.

`int getc (FILE *STREAM)'
     `stdio.h' (ISO):  *note Character Input::.

`int getchar (void)'
     `stdio.h' (ISO):  *note Character Input::.

`int getchar_unlocked (void)'
     `stdio.h' (POSIX):  *note Character Input::.

`int getcontext (ucontext_t *UCP)'
     `ucontext.h' (SVID):  *note System V contexts::.

`int getc_unlocked (FILE *STREAM)'
     `stdio.h' (POSIX):  *note Character Input::.

`char * get_current_dir_name (void)'
     `unistd.h' (GNU):  *note Working Directory::.

`char * getcwd (char *BUFFER, size_t SIZE)'
     `unistd.h' (POSIX.1):  *note Working Directory::.

`struct tm * getdate (const char *STRING)'
     `time.h' (Unix98):  *note General Time String Parsing::.

`getdate_err'
     `time.h' (Unix98):  *note General Time String Parsing::.

`int getdate_r (const char *STRING, struct tm *TP)'
     `time.h' (GNU):  *note General Time String Parsing::.

`ssize_t getdelim (char **LINEPTR, size_t *N, int DELIMITER, FILE *STREAM)'
     `stdio.h' (GNU):  *note Line Input::.

`int getdomainnname (char *NAME, size_t LENGTH)'
     `unistd.h' (???):  *note Host Identification::.

`gid_t getegid (void)'
     `unistd.h' (POSIX.1):  *note Reading Persona::.

`char * getenv (const char *NAME)'
     `stdlib.h' (ISO):  *note Environment Access::.

`uid_t geteuid (void)'
     `unistd.h' (POSIX.1):  *note Reading Persona::.

`struct fstab * getfsent (void)'
     `fstab.h' (BSD):  *note fstab::.

`struct fstab * getfsfile (const char *NAME)'
     `fstab.h' (BSD):  *note fstab::.

`struct fstab * getfsspec (const char *NAME)'
     `fstab.h' (BSD):  *note fstab::.

`gid_t getgid (void)'
     `unistd.h' (POSIX.1):  *note Reading Persona::.

`struct group * getgrent (void)'
     `grp.h' (SVID, BSD):  *note Scanning All Groups::.

`int getgrent_r (struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
     `grp.h' (GNU):  *note Scanning All Groups::.

`struct group * getgrgid (gid_t GID)'
     `grp.h' (POSIX.1):  *note Lookup Group::.

`int getgrgid_r (gid_t GID, struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
     `grp.h' (POSIX.1c):  *note Lookup Group::.

`struct group * getgrnam (const char *NAME)'
     `grp.h' (SVID, BSD):  *note Lookup Group::.

`int getgrnam_r (const char *NAME, struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
     `grp.h' (POSIX.1c):  *note Lookup Group::.

`int getgrouplist (const char *USER, gid_t GROUP, gid_t *GROUPS, int *NGROUPS)'
     `grp.h' (BSD):  *note Setting Groups::.

`int getgroups (int COUNT, gid_t *GROUPS)'
     `unistd.h' (POSIX.1):  *note Reading Persona::.

`struct hostent * gethostbyaddr (const void *ADDR, socklen_t LENGTH, int FORMAT)'
     `netdb.h' (BSD):  *note Host Names::.

`int gethostbyaddr_r (const void *ADDR, socklen_t LENGTH, int FORMAT, struct hostent *restrict RESULT_BUF, char *restrict BUF, size_t BUFLEN, struct hostent **restrict RESULT, int *restrict H_ERRNOP)'
     `netdb.h' (GNU):  *note Host Names::.

`struct hostent * gethostbyname (const char *NAME)'
     `netdb.h' (BSD):  *note Host Names::.

`struct hostent * gethostbyname2 (const char *NAME, int AF)'
     `netdb.h' (IPv6 Basic API):  *note Host Names::.

`int gethostbyname2_r (const char *NAME, int AF, struct hostent *restrict RESULT_BUF, char *restrict BUF, size_t BUFLEN, struct hostent **restrict RESULT, int *restrict H_ERRNOP)'
     `netdb.h' (GNU):  *note Host Names::.

`int gethostbyname_r (const char *restrict NAME, struct hostent *restrict RESULT_BUF, char *restrict BUF, size_t BUFLEN, struct hostent **restrict RESULT, int *restrict H_ERRNOP)'
     `netdb.h' (GNU):  *note Host Names::.

`struct hostent * gethostent (void)'
     `netdb.h' (BSD):  *note Host Names::.

`long int gethostid (void)'
     `unistd.h' (BSD):  *note Host Identification::.

`int gethostname (char *NAME, size_t SIZE)'
     `unistd.h' (BSD):  *note Host Identification::.

`int getitimer (int WHICH, struct itimerval *OLD)'
     `sys/time.h' (BSD):  *note Setting an Alarm::.

`ssize_t getline (char **LINEPTR, size_t *N, FILE *STREAM)'
     `stdio.h' (GNU):  *note Line Input::.

`int getloadavg (double LOADAVG[], int NELEM)'
     `stdlib.h' (BSD):  *note Processor Resources::.

`char * getlogin (void)'
     `unistd.h' (POSIX.1):  *note Who Logged In::.

`struct mntent * getmntent (FILE *STREAM)'
     `mntent.h' (BSD):  *note mtab::.

`struct mntent * getmntent_r (FILE *STREAM, struct mntent *RESULT, char *BUFFER, int BUFSIZE)'
     `mntent.h' (BSD):  *note mtab::.

`struct netent * getnetbyaddr (uint32_t NET, int TYPE)'
     `netdb.h' (BSD):  *note Networks Database::.

`struct netent * getnetbyname (const char *NAME)'
     `netdb.h' (BSD):  *note Networks Database::.

`struct netent * getnetent (void)'
     `netdb.h' (BSD):  *note Networks Database::.

`int getnetgrent (char **HOSTP, char **USERP, char **DOMAINP)'
     `netdb.h' (BSD):  *note Lookup Netgroup::.

`int getnetgrent_r (char **HOSTP, char **USERP, char **DOMAINP, char *BUFFER, size_t BUFLEN)'
     `netdb.h' (GNU):  *note Lookup Netgroup::.

`int get_nprocs (void)'
     `sys/sysinfo.h' (GNU):  *note Processor Resources::.

`int get_nprocs_conf (void)'
     `sys/sysinfo.h' (GNU):  *note Processor Resources::.

`int getopt (int ARGC, char *const *ARGV, const char *OPTIONS)'
     `unistd.h' (POSIX.2):  *note Using Getopt::.

`int getopt_long (int ARGC, char *const *ARGV, const char *SHORTOPTS, const struct option *LONGOPTS, int *INDEXPTR)'
     `getopt.h' (GNU):  *note Getopt Long Options::.

`int getopt_long_only (int ARGC, char *const *ARGV, const char *SHORTOPTS, const struct option *LONGOPTS, int *INDEXPTR)'
     `getopt.h' (GNU):  *note Getopt Long Options::.

`int getpagesize (void)'
     `unistd.h' (BSD):  *note Query Memory Parameters::.

`char * getpass (const char *PROMPT)'
     `unistd.h' (BSD):  *note getpass::.

`int getpeername (int SOCKET, struct sockaddr *ADDR, socklen_t *LENGTH-PTR)'
     `sys/socket.h' (BSD):  *note Who is Connected::.

`int getpgid (pid_t PID)'
     `unistd.h' (POSIX.1):  *note Process Group Functions::.

`pid_t getpgrp (void)'
     `unistd.h' (POSIX.1):  *note Process Group Functions::.

`long int get_phys_pages (void)'
     `sys/sysinfo.h' (GNU):  *note Query Memory Parameters::.

`pid_t getpid (void)'
     `unistd.h' (POSIX.1):  *note Process Identification::.

`pid_t getppid (void)'
     `unistd.h' (POSIX.1):  *note Process Identification::.

`int getpriority (int CLASS, int ID)'
     `sys/resource.h' (BSD,POSIX):  *note Traditional Scheduling
     Functions::.

`struct protoent * getprotobyname (const char *NAME)'
     `netdb.h' (BSD):  *note Protocols Database::.

`struct protoent * getprotobynumber (int PROTOCOL)'
     `netdb.h' (BSD):  *note Protocols Database::.

`struct protoent * getprotoent (void)'
     `netdb.h' (BSD):  *note Protocols Database::.

`int getpt (void)'
     `stdlib.h' (GNU):  *note Allocation::.

`struct passwd * getpwent (void)'
     `pwd.h' (POSIX.1):  *note Scanning All Users::.

`int getpwent_r (struct passwd *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd **RESULT)'
     `pwd.h' (GNU):  *note Scanning All Users::.

`struct passwd * getpwnam (const char *NAME)'
     `pwd.h' (POSIX.1):  *note Lookup User::.

`int getpwnam_r (const char *NAME, struct passwd *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd **RESULT)'
     `pwd.h' (POSIX.1c):  *note Lookup User::.

`struct passwd * getpwuid (uid_t UID)'
     `pwd.h' (POSIX.1):  *note Lookup User::.

`int getpwuid_r (uid_t UID, struct passwd *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd **RESULT)'
     `pwd.h' (POSIX.1c):  *note Lookup User::.

`int getrlimit (int RESOURCE, struct rlimit *RLP)'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`int getrlimit64 (int RESOURCE, struct rlimit64 *RLP)'
     `sys/resource.h' (Unix98):  *note Limits on Resources::.

`int getrusage (int PROCESSES, struct rusage *RUSAGE)'
     `sys/resource.h' (BSD):  *note Resource Usage::.

`char * gets (char *S)'
     `stdio.h' (ISO):  *note Line Input::.

`struct servent * getservbyname (const char *NAME, const char *PROTO)'
     `netdb.h' (BSD):  *note Services Database::.

`struct servent * getservbyport (int PORT, const char *PROTO)'
     `netdb.h' (BSD):  *note Services Database::.

`struct servent * getservent (void)'
     `netdb.h' (BSD):  *note Services Database::.

`pid_t getsid (pid_t PID)'
     `unistd.h' (SVID):  *note Process Group Functions::.

`int getsockname (int SOCKET, struct sockaddr *ADDR, socklen_t *LENGTH-PTR)'
     `sys/socket.h' (BSD):  *note Reading Address::.

`int getsockopt (int SOCKET, int LEVEL, int OPTNAME, void *OPTVAL, socklen_t *OPTLEN-PTR)'
     `sys/socket.h' (BSD):  *note Socket Option Functions::.

`int getsubopt (char **OPTIONP, char *const *TOKENS, char **VALUEP)'
     `stdlib.h' (stdlib.h):  *note Suboptions Example: Suboptions.

`char * gettext (const char *MSGID)'
     `libintl.h' (GNU):  *note Translation with gettext::.

`int gettimeofday (struct timeval *TP, struct timezone *TZP)'
     `sys/time.h' (BSD):  *note High-Resolution Calendar::.

`uid_t getuid (void)'
     `unistd.h' (POSIX.1):  *note Reading Persona::.

`mode_t getumask (void)'
     `sys/stat.h' (GNU):  *note Setting Permissions::.

`struct utmp * getutent (void)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`int getutent_r (struct utmp *BUFFER, struct utmp **RESULT)'
     `utmp.h' (GNU):  *note Manipulating the Database::.

`struct utmp * getutid (const struct utmp *ID)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`int getutid_r (const struct utmp *ID, struct utmp *BUFFER, struct utmp **RESULT)'
     `utmp.h' (GNU):  *note Manipulating the Database::.

`struct utmp * getutline (const struct utmp *LINE)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`int getutline_r (const struct utmp *LINE, struct utmp *BUFFER, struct utmp **RESULT)'
     `utmp.h' (GNU):  *note Manipulating the Database::.

`int getutmp (const struct utmpx *UTMPX, struct utmp *UTMP)'
     `utmp.h' (GNU):  *note XPG Functions::.

`int getutmpx (const struct utmp *UTMP, struct utmpx *UTMPX)'
     `utmp.h' (GNU):  *note XPG Functions::.

`struct utmpx * getutxent (void)'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`struct utmpx * getutxid (const struct utmpx *ID)'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`struct utmpx * getutxline (const struct utmpx *LINE)'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int getw (FILE *STREAM)'
     `stdio.h' (SVID):  *note Character Input::.

`wint_t getwc (FILE *STREAM)'
     `wchar.h' (ISO):  *note Character Input::.

`wint_t getwchar (void)'
     `wchar.h' (ISO):  *note Character Input::.

`wint_t getwchar_unlocked (void)'
     `wchar.h' (GNU):  *note Character Input::.

`wint_t getwc_unlocked (FILE *STREAM)'
     `wchar.h' (GNU):  *note Character Input::.

`char * getwd (char *BUFFER)'
     `unistd.h' (BSD):  *note Working Directory::.

`gid_t'
     `sys/types.h' (POSIX.1):  *note Reading Persona::.

`int glob (const char *PATTERN, int FLAGS, int (*ERRFUNC) (const char *FILENAME, int ERROR-CODE), glob_t *VECTOR-PTR)'
     `glob.h' (POSIX.2):  *note Calling Glob::.

`int glob64 (const char *PATTERN, int FLAGS, int (*ERRFUNC) (const char *FILENAME, int ERROR-CODE), glob64_t *VECTOR-PTR)'
     `glob.h' (GNU):  *note Calling Glob::.

`glob64_t'
     `glob.h' (GNU):  *note Calling Glob::.

`GLOB_ABORTED'
     `glob.h' (POSIX.2):  *note Calling Glob::.

`GLOB_ALTDIRFUNC'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`GLOB_APPEND'
     `glob.h' (POSIX.2):  *note Flags for Globbing::.

`GLOB_BRACE'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`GLOB_DOOFFS'
     `glob.h' (POSIX.2):  *note Flags for Globbing::.

`GLOB_ERR'
     `glob.h' (POSIX.2):  *note Flags for Globbing::.

`void globfree (glob_t *PGLOB)'
     `glob.h' (POSIX.2):  *note More Flags for Globbing::.

`void globfree64 (glob64_t *PGLOB)'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`GLOB_MAGCHAR'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`GLOB_MARK'
     `glob.h' (POSIX.2):  *note Flags for Globbing::.

`GLOB_NOCHECK'
     `glob.h' (POSIX.2):  *note Flags for Globbing::.

`GLOB_NOESCAPE'
     `glob.h' (POSIX.2):  *note Flags for Globbing::.

`GLOB_NOMAGIC'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`GLOB_NOMATCH'
     `glob.h' (POSIX.2):  *note Calling Glob::.

`GLOB_NOSORT'
     `glob.h' (POSIX.2):  *note Flags for Globbing::.

`GLOB_NOSPACE'
     `glob.h' (POSIX.2):  *note Calling Glob::.

`GLOB_ONLYDIR'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`GLOB_PERIOD'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`glob_t'
     `glob.h' (POSIX.2):  *note Calling Glob::.

`GLOB_TILDE'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`GLOB_TILDE_CHECK'
     `glob.h' (GNU):  *note More Flags for Globbing::.

`struct tm * gmtime (const time_t *TIME)'
     `time.h' (ISO):  *note Broken-down Time::.

`struct tm * gmtime_r (const time_t *TIME, struct tm *RESULTP)'
     `time.h' (POSIX.1c):  *note Broken-down Time::.

`_GNU_SOURCE'
     (GNU):  *note Feature Test Macros::.

`int grantpt (int FILEDES)'
     `stdlib.h' (SVID, XPG4.2):  *note Allocation::.

`int gsignal (int SIGNUM)'
     `signal.h' (SVID):  *note Signaling Yourself::.

`int gtty (int FILEDES, struct sgttyb *ATTRIBUTES)'
     `sgtty.h' (BSD):  *note BSD Terminal Modes::.

`char * hasmntopt (const struct mntent *MNT, const char *OPT)'
     `mntent.h' (BSD):  *note mtab::.

`int hcreate (size_t NEL)'
     `search.h' (SVID):  *note Hash Search Function::.

`int hcreate_r (size_t NEL, struct hsearch_data *HTAB)'
     `search.h' (GNU):  *note Hash Search Function::.

`void hdestroy (void)'
     `search.h' (SVID):  *note Hash Search Function::.

`void hdestroy_r (struct hsearch_data *HTAB)'
     `search.h' (GNU):  *note Hash Search Function::.

`HOST_NOT_FOUND'
     `netdb.h' (BSD):  *note Host Names::.

`ENTRY * hsearch (ENTRY ITEM, ACTION ACTION)'
     `search.h' (SVID):  *note Hash Search Function::.

`int hsearch_r (ENTRY ITEM, ACTION ACTION, ENTRY **RETVAL, struct hsearch_data *HTAB)'
     `search.h' (GNU):  *note Hash Search Function::.

`uint32_t htonl (uint32_t HOSTLONG)'
     `netinet/in.h' (BSD):  *note Byte Order::.

`uint16_t htons (uint16_t HOSTSHORT)'
     `netinet/in.h' (BSD):  *note Byte Order::.

`double HUGE_VAL'
     `math.h' (ISO):  *note Math Error Reporting::.

`float HUGE_VALF'
     `math.h' (ISO):  *note Math Error Reporting::.

`long double HUGE_VALL'
     `math.h' (ISO):  *note Math Error Reporting::.

`tcflag_t HUPCL'
     `termios.h' (POSIX.1):  *note Control Modes::.

`double hypot (double X, double Y)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float hypotf (float X, float Y)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double hypotl (long double X, long double Y)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`tcflag_t ICANON'
     `termios.h' (POSIX.1):  *note Local Modes::.

`size_t iconv (iconv_t CD, char **INBUF, size_t *INBYTESLEFT, char **OUTBUF, size_t *OUTBYTESLEFT)'
     `iconv.h' (XPG2):  *note Generic Conversion Interface::.

`int iconv_close (iconv_t CD)'
     `iconv.h' (XPG2):  *note Generic Conversion Interface::.

`iconv_t iconv_open (const char *TOCODE, const char *FROMCODE)'
     `iconv.h' (XPG2):  *note Generic Conversion Interface::.

`iconv_t'
     `iconv.h' (XPG2):  *note Generic Conversion Interface::.

`tcflag_t ICRNL'
     `termios.h' (POSIX.1):  *note Input Modes::.

`tcflag_t IEXTEN'
     `termios.h' (POSIX.1):  *note Local Modes::.

`void if_freenameindex (struct if_nameindex *PTR)'
     `net/if.h' (IPv6 basic API):  *note Interface Naming::.

`char * if_indextoname (unsigned int IFINDEX, char *IFNAME)'
     `net/if.h' (IPv6 basic API):  *note Interface Naming::.

`struct if_nameindex * if_nameindex (void)'
     `net/if.h' (IPv6 basic API):  *note Interface Naming::.

`unsigned int if_nametoindex (const char *IFNAME)'
     `net/if.h' (IPv6 basic API):  *note Interface Naming::.

`size_t IFNAMSIZ'
     `net/if.h' (net/if.h):  *note Interface Naming::.

`int IFTODT (mode_t MODE)'
     `dirent.h' (BSD):  *note Directory Entries::.

`tcflag_t IGNBRK'
     `termios.h' (POSIX.1):  *note Input Modes::.

`tcflag_t IGNCR'
     `termios.h' (POSIX.1):  *note Input Modes::.

`tcflag_t IGNPAR'
     `termios.h' (POSIX.1):  *note Input Modes::.

`int ilogb (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`int ilogbf (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`int ilogbl (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`intmax_t imaxabs (intmax_t NUMBER)'
     `inttypes.h' (ISO):  *note Absolute Value::.

`tcflag_t IMAXBEL'
     `termios.h' (BSD):  *note Input Modes::.

`imaxdiv_t imaxdiv (intmax_t NUMERATOR, intmax_t DENOMINATOR)'
     `inttypes.h' (ISO):  *note Integer Division::.

`imaxdiv_t'
     `inttypes.h' (ISO):  *note Integer Division::.

`struct in6_addr in6addr_any'
     `netinet/in.h' (IPv6 basic API):  *note Host Address Data Type::.

`struct in6_addr in6addr_loopback'
     `netinet/in.h' (IPv6 basic API):  *note Host Address Data Type::.

`uint32_t INADDR_ANY'
     `netinet/in.h' (BSD):  *note Host Address Data Type::.

`uint32_t INADDR_BROADCAST'
     `netinet/in.h' (BSD):  *note Host Address Data Type::.

`uint32_t INADDR_LOOPBACK'
     `netinet/in.h' (BSD):  *note Host Address Data Type::.

`uint32_t INADDR_NONE'
     `netinet/in.h' (BSD):  *note Host Address Data Type::.

`char * index (const char *STRING, int C)'
     `string.h' (BSD):  *note Search Functions::.

`uint32_t inet_addr (const char *NAME)'
     `arpa/inet.h' (BSD):  *note Host Address Functions::.

`int inet_aton (const char *NAME, struct in_addr *ADDR)'
     `arpa/inet.h' (BSD):  *note Host Address Functions::.

`uint32_t inet_lnaof (struct in_addr ADDR)'
     `arpa/inet.h' (BSD):  *note Host Address Functions::.

`struct in_addr inet_makeaddr (uint32_t NET, uint32_t LOCAL)'
     `arpa/inet.h' (BSD):  *note Host Address Functions::.

`uint32_t inet_netof (struct in_addr ADDR)'
     `arpa/inet.h' (BSD):  *note Host Address Functions::.

`uint32_t inet_network (const char *NAME)'
     `arpa/inet.h' (BSD):  *note Host Address Functions::.

`char * inet_ntoa (struct in_addr ADDR)'
     `arpa/inet.h' (BSD):  *note Host Address Functions::.

`const char * inet_ntop (int AF, const void *CP, char *BUF, socklen_t LEN)'
     `arpa/inet.h' (IPv6 basic API):  *note Host Address Functions::.

`int inet_pton (int AF, const char *CP, void *BUF)'
     `arpa/inet.h' (IPv6 basic API):  *note Host Address Functions::.

`float INFINITY'
     `math.h' (ISO):  *note Infinity and NaN::.

`int initgroups (const char *USER, gid_t GROUP)'
     `grp.h' (BSD):  *note Setting Groups::.

`INIT_PROCESS'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`INIT_PROCESS'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`char * initstate (unsigned int SEED, char *STATE, size_t SIZE)'
     `stdlib.h' (BSD):  *note BSD Random::.

`int initstate_r (unsigned int SEED, char *restrict STATEBUF, size_t STATELEN, struct random_data *restrict BUF)'
     `stdlib.h' (GNU):  *note BSD Random::.

`tcflag_t INLCR'
     `termios.h' (POSIX.1):  *note Input Modes::.

`int innetgr (const char *NETGROUP, const char *HOST, const char *USER, const char *DOMAIN)'
     `netdb.h' (BSD):  *note Netgroup Membership::.

`ino64_t'
     `sys/types.h' (Unix98):  *note Attribute Meanings::.

`ino_t'
     `sys/types.h' (POSIX.1):  *note Attribute Meanings::.

`tcflag_t INPCK'
     `termios.h' (POSIX.1):  *note Input Modes::.

`INT_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`INT_MIN'
     `limits.h' (ISO):  *note Range of Type::.

`int ioctl (int FILEDES, int COMMAND, ...)'
     `sys/ioctl.h' (BSD):  *note IOCTLs::.

`int _IOFBF'
     `stdio.h' (ISO):  *note Controlling Buffering::.

`int _IOLBF'
     `stdio.h' (ISO):  *note Controlling Buffering::.

`int _IONBF'
     `stdio.h' (ISO):  *note Controlling Buffering::.

`int IPPORT_RESERVED'
     `netinet/in.h' (BSD):  *note Ports::.

`int IPPORT_USERRESERVED'
     `netinet/in.h' (BSD):  *note Ports::.

`int isalnum (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int isalpha (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int isascii (int C)'
     `ctype.h' (SVID, BSD):  *note Classification of Characters::.

`int isatty (int FILEDES)'
     `unistd.h' (POSIX.1):  *note Is It a Terminal::.

`int isblank (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int iscntrl (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int isdigit (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int isfinite (_float-type_ X)'
     `math.h' (ISO):  *note Floating Point Classes::.

`int isgraph (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int isgreater (_real-floating_ X, _real-floating_ Y)'
     `math.h' (ISO):  *note FP Comparison Functions::.

`int isgreaterequal (_real-floating_ X, _real-floating_ Y)'
     `math.h' (ISO):  *note FP Comparison Functions::.

`tcflag_t ISIG'
     `termios.h' (POSIX.1):  *note Local Modes::.

`int isinf (double X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int isinff (float X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int isinfl (long double X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int isless (_real-floating_ X, _real-floating_ Y)'
     `math.h' (ISO):  *note FP Comparison Functions::.

`int islessequal (_real-floating_ X, _real-floating_ Y)'
     `math.h' (ISO):  *note FP Comparison Functions::.

`int islessgreater (_real-floating_ X, _real-floating_ Y)'
     `math.h' (ISO):  *note FP Comparison Functions::.

`int islower (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int isnan (_float-type_ X)'
     `math.h' (ISO):  *note Floating Point Classes::.

`int isnan (double X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int isnanf (float X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int isnanl (long double X)'
     `math.h' (BSD):  *note Floating Point Classes::.

`int isnormal (_float-type_ X)'
     `math.h' (ISO):  *note Floating Point Classes::.

`_ISOC99_SOURCE'
     (GNU):  *note Feature Test Macros::.

`int isprint (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int ispunct (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int issignaling (_float-type_ X)'
     `math.h' (GNU):  *note Floating Point Classes::.

`int isspace (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`tcflag_t ISTRIP'
     `termios.h' (POSIX.1):  *note Input Modes::.

`int isunordered (_real-floating_ X, _real-floating_ Y)'
     `math.h' (ISO):  *note FP Comparison Functions::.

`int isupper (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`int iswalnum (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswalpha (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswblank (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswcntrl (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswctype (wint_t WC, wctype_t DESC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswdigit (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswgraph (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswlower (wint_t WC)'
     `ctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswprint (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswpunct (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswspace (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswupper (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int iswxdigit (wint_t WC)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int isxdigit (int C)'
     `ctype.h' (ISO):  *note Classification of Characters::.

`ITIMER_PROF'
     `sys/time.h' (BSD):  *note Setting an Alarm::.

`ITIMER_REAL'
     `sys/time.h' (BSD):  *note Setting an Alarm::.

`ITIMER_VIRTUAL'
     `sys/time.h' (BSD):  *note Setting an Alarm::.

`tcflag_t IXANY'
     `termios.h' (BSD):  *note Input Modes::.

`tcflag_t IXOFF'
     `termios.h' (POSIX.1):  *note Input Modes::.

`tcflag_t IXON'
     `termios.h' (POSIX.1):  *note Input Modes::.

`double j0 (double X)'
     `math.h' (SVID):  *note Special Functions::.

`float j0f (float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double j0l (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`double j1 (double X)'
     `math.h' (SVID):  *note Special Functions::.

`float j1f (float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double j1l (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`jmp_buf'
     `setjmp.h' (ISO):  *note Non-Local Details::.

`double jn (int N, double X)'
     `math.h' (SVID):  *note Special Functions::.

`float jnf (int N, float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double jnl (int N, long double X)'
     `math.h' (SVID):  *note Special Functions::.

`long int jrand48 (unsigned short int XSUBI[3])'
     `stdlib.h' (SVID):  *note SVID Random::.

`int jrand48_r (unsigned short int XSUBI[3], struct drand48_data *BUFFER, long int *RESULT)'
     `stdlib.h' (GNU):  *note SVID Random::.

`int kill (pid_t PID, int SIGNUM)'
     `signal.h' (POSIX.1):  *note Signaling Another Process::.

`int killpg (int PGID, int SIGNUM)'
     `signal.h' (BSD):  *note Signaling Another Process::.

`char * l64a (long int N)'
     `stdlib.h' (XPG):  *note Encode Binary Data::.

`long int labs (long int NUMBER)'
     `stdlib.h' (ISO):  *note Absolute Value::.

`LANG'
     `locale.h' (ISO):  *note Locale Categories::.

`LC_ALL'
     `locale.h' (ISO):  *note Locale Categories::.

`LC_COLLATE'
     `locale.h' (ISO):  *note Locale Categories::.

`LC_CTYPE'
     `locale.h' (ISO):  *note Locale Categories::.

`LC_MESSAGES'
     `locale.h' (XOPEN):  *note Locale Categories::.

`LC_MONETARY'
     `locale.h' (ISO):  *note Locale Categories::.

`LC_NUMERIC'
     `locale.h' (ISO):  *note Locale Categories::.

`void lcong48 (unsigned short int PARAM[7])'
     `stdlib.h' (SVID):  *note SVID Random::.

`int lcong48_r (unsigned short int PARAM[7], struct drand48_data *BUFFER)'
     `stdlib.h' (GNU):  *note SVID Random::.

`int L_ctermid'
     `stdio.h' (POSIX.1):  *note Identifying the Terminal::.

`LC_TIME'
     `locale.h' (ISO):  *note Locale Categories::.

`int L_cuserid'
     `stdio.h' (POSIX.1):  *note Who Logged In::.

`double ldexp (double VALUE, int EXPONENT)'
     `math.h' (ISO):  *note Normalization Functions::.

`float ldexpf (float VALUE, int EXPONENT)'
     `math.h' (ISO):  *note Normalization Functions::.

`long double ldexpl (long double VALUE, int EXPONENT)'
     `math.h' (ISO):  *note Normalization Functions::.

`ldiv_t ldiv (long int NUMERATOR, long int DENOMINATOR)'
     `stdlib.h' (ISO):  *note Integer Division::.

`ldiv_t'
     `stdlib.h' (ISO):  *note Integer Division::.

`void * lfind (const void *KEY, const void *BASE, size_t *NMEMB, size_t SIZE, comparison_fn_t COMPAR)'
     `search.h' (SVID):  *note Array Search Function::.

`double lgamma (double X)'
     `math.h' (SVID):  *note Special Functions::.

`float lgammaf (float X)'
     `math.h' (SVID):  *note Special Functions::.

`float lgammaf_r (float X, int *SIGNP)'
     `math.h' (XPG):  *note Special Functions::.

`long double lgammal (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`long double lgammal_r (long double X, int *SIGNP)'
     `math.h' (XPG):  *note Special Functions::.

`double lgamma_r (double X, int *SIGNP)'
     `math.h' (XPG):  *note Special Functions::.

`L_INCR'
     `sys/file.h' (BSD):  *note File Positioning::.

`int LINE_MAX'
     `limits.h' (POSIX.2):  *note Utility Limits::.

`int link (const char *OLDNAME, const char *NEWNAME)'
     `unistd.h' (POSIX.1):  *note Hard Links::.

`int LINK_MAX'
     `limits.h', `(optional)' (POSIX.1):  *note Limits for Files::.

`int lio_listio (int MODE, struct aiocb *const LIST[], int NENT, struct sigevent *SIG)'
     `aio.h' (POSIX.1b):  *note Asynchronous Reads/Writes::.

`int lio_listio64 (int MODE, struct aiocb64 *const LIST[], int NENT, struct sigevent *SIG)'
     `aio.h' (Unix98):  *note Asynchronous Reads/Writes::.

`int listen (int SOCKET, int N)'
     `sys/socket.h' (BSD):  *note Listening::.

`long long int llabs (long long int NUMBER)'
     `stdlib.h' (ISO):  *note Absolute Value::.

`lldiv_t lldiv (long long int NUMERATOR, long long int DENOMINATOR)'
     `stdlib.h' (ISO):  *note Integer Division::.

`lldiv_t'
     `stdlib.h' (ISO):  *note Integer Division::.

`LLONG_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`LLONG_MIN'
     `limits.h' (ISO):  *note Range of Type::.

`long long int llrint (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long long int llrintf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long long int llrintl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long long int llround (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long long int llroundf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long long int llroundl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`struct lconv * localeconv (void)'
     `locale.h' (ISO):  *note The Lame Way to Locale Data::.

`struct tm * localtime (const time_t *TIME)'
     `time.h' (ISO):  *note Broken-down Time::.

`struct tm * localtime_r (const time_t *TIME, struct tm *RESULTP)'
     `time.h' (POSIX.1c):  *note Broken-down Time::.

`double log (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`double log10 (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float log10f (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double log10l (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`double log1p (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float log1pf (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double log1pl (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`double log2 (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float log2f (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double log2l (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`double logb (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float logbf (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double logbl (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float logf (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`void login (const struct utmp *ENTRY)'
     `utmp.h' (BSD):  *note Logging In and Out::.

`LOGIN_PROCESS'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`LOGIN_PROCESS'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int login_tty (int FILEDES)'
     `utmp.h' (BSD):  *note Logging In and Out::.

`long double logl (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`int logout (const char *UT_LINE)'
     `utmp.h' (BSD):  *note Logging In and Out::.

`void logwtmp (const char *UT_LINE, const char *UT_NAME, const char *UT_HOST)'
     `utmp.h' (BSD):  *note Logging In and Out::.

`void longjmp (jmp_buf STATE, int VALUE)'
     `setjmp.h' (ISO):  *note Non-Local Details::.

`LONG_LONG_MAX'
     `limits.h' (GNU):  *note Range of Type::.

`LONG_LONG_MIN'
     `limits.h' (GNU):  *note Range of Type::.

`LONG_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`LONG_MIN'
     `limits.h' (ISO):  *note Range of Type::.

`long int lrand48 (void)'
     `stdlib.h' (SVID):  *note SVID Random::.

`int lrand48_r (struct drand48_data *BUFFER, long int *RESULT)'
     `stdlib.h' (GNU):  *note SVID Random::.

`long int lrint (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long int lrintf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long int lrintl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long int lround (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long int lroundf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long int lroundl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`void * lsearch (const void *KEY, void *BASE, size_t *NMEMB, size_t SIZE, comparison_fn_t COMPAR)'
     `search.h' (SVID):  *note Array Search Function::.

`off_t lseek (int FILEDES, off_t OFFSET, int WHENCE)'
     `unistd.h' (POSIX.1):  *note File Position Primitive::.

`off64_t lseek64 (int FILEDES, off64_t OFFSET, int WHENCE)'
     `unistd.h' (Unix98):  *note File Position Primitive::.

`L_SET'
     `sys/file.h' (BSD):  *note File Positioning::.

`int lstat (const char *FILENAME, struct stat *BUF)'
     `sys/stat.h' (BSD):  *note Reading Attributes::.

`int lstat64 (const char *FILENAME, struct stat64 *BUF)'
     `sys/stat.h' (Unix98):  *note Reading Attributes::.

`int L_tmpnam'
     `stdio.h' (ISO):  *note Temporary Files::.

`int lutimes (const char *FILENAME, const struct timeval TVP[2])'
     `sys/time.h' (BSD):  *note File Times::.

`L_XTND'
     `sys/file.h' (BSD):  *note File Positioning::.

`int madvise (void *ADDR, size_t LENGTH, int ADVICE)'
     `sys/mman.h' (POSIX):  *note Memory-mapped I/O::.

`void makecontext (ucontext_t *UCP, void (*FUNC) (void), int ARGC, ...)'
     `ucontext.h' (SVID):  *note System V contexts::.

`struct mallinfo mallinfo (void)'
     `malloc.h' (SVID):  *note Statistics of Malloc::.

`void * malloc (size_t SIZE)'
     `malloc.h', `stdlib.h' (ISO):  *note Basic Allocation::.

`__malloc_hook'
     `malloc.h' (GNU):  *note Hooks for Malloc::.

`__malloc_initialize_hook'
     `malloc.h' (GNU):  *note Hooks for Malloc::.

`int MAX_CANON'
     `limits.h' (POSIX.1):  *note Limits for Files::.

`int MAX_INPUT'
     `limits.h' (POSIX.1):  *note Limits for Files::.

`int MAXNAMLEN'
     `dirent.h' (BSD):  *note Limits for Files::.

`int MAXSYMLINKS'
     `sys/param.h' (BSD):  *note Symbolic Links::.

`int MB_CUR_MAX'
     `stdlib.h' (ISO):  *note Selecting the Conversion::.

`int mblen (const char *STRING, size_t SIZE)'
     `stdlib.h' (ISO):  *note Non-reentrant Character Conversion::.

`int MB_LEN_MAX'
     `limits.h' (ISO):  *note Selecting the Conversion::.

`size_t mbrlen (const char *restrict S, size_t N, mbstate_t *PS)'
     `wchar.h' (ISO):  *note Converting a Character::.

`size_t mbrtowc (wchar_t *restrict PWC, const char *restrict S, size_t N, mbstate_t *restrict PS)'
     `wchar.h' (ISO):  *note Converting a Character::.

`int mbsinit (const mbstate_t *PS)'
     `wchar.h' (ISO):  *note Keeping the state::.

`size_t mbsnrtowcs (wchar_t *restrict DST, const char **restrict SRC, size_t NMC, size_t LEN, mbstate_t *restrict PS)'
     `wchar.h' (GNU):  *note Converting Strings::.

`size_t mbsrtowcs (wchar_t *restrict DST, const char **restrict SRC, size_t LEN, mbstate_t *restrict PS)'
     `wchar.h' (ISO):  *note Converting Strings::.

`mbstate_t'
     `wchar.h' (ISO):  *note Keeping the state::.

`size_t mbstowcs (wchar_t *WSTRING, const char *STRING, size_t SIZE)'
     `stdlib.h' (ISO):  *note Non-reentrant String Conversion::.

`int mbtowc (wchar_t *restrict RESULT, const char *restrict STRING, size_t SIZE)'
     `stdlib.h' (ISO):  *note Non-reentrant Character Conversion::.

`int mcheck (void (*ABORTFN) (enum mcheck_status STATUS))'
     `mcheck.h' (GNU):  *note Heap Consistency Checking::.

`tcflag_t MDMBUF'
     `termios.h' (BSD):  *note Control Modes::.

`void * memalign (size_t BOUNDARY, size_t SIZE)'
     `malloc.h' (BSD):  *note Aligned Memory Blocks::.

`__memalign_hook'
     `malloc.h' (GNU):  *note Hooks for Malloc::.

`void * memccpy (void *restrict TO, const void *restrict FROM, int C, size_t SIZE)'
     `string.h' (SVID):  *note Copying and Concatenation::.

`void * memchr (const void *BLOCK, int C, size_t SIZE)'
     `string.h' (ISO):  *note Search Functions::.

`int memcmp (const void *A1, const void *A2, size_t SIZE)'
     `string.h' (ISO):  *note String/Array Comparison::.

`void * memcpy (void *restrict TO, const void *restrict FROM, size_t SIZE)'
     `string.h' (ISO):  *note Copying and Concatenation::.

`void * memfrob (void *MEM, size_t LENGTH)'
     `string.h' (GNU):  *note Trivial Encryption::.

`void * memmem (const void *HAYSTACK, size_t HAYSTACK-LEN,
     const void *NEEDLE, size_t NEEDLE-LEN)'
     `string.h' (GNU):  *note Search Functions::.

`void * memmove (void *TO, const void *FROM, size_t SIZE)'
     `string.h' (ISO):  *note Copying and Concatenation::.

`void * mempcpy (void *restrict TO, const void *restrict FROM, size_t SIZE)'
     `string.h' (GNU):  *note Copying and Concatenation::.

`void * memrchr (const void *BLOCK, int C, size_t SIZE)'
     `string.h' (GNU):  *note Search Functions::.

`void * memset (void *BLOCK, int C, size_t SIZE)'
     `string.h' (ISO):  *note Copying and Concatenation::.

`int mkdir (const char *FILENAME, mode_t MODE)'
     `sys/stat.h' (POSIX.1):  *note Creating Directories::.

`char * mkdtemp (char *TEMPLATE)'
     `stdlib.h' (BSD):  *note Temporary Files::.

`int mkfifo (const char *FILENAME, mode_t MODE)'
     `sys/stat.h' (POSIX.1):  *note FIFO Special Files::.

`int mknod (const char *FILENAME, mode_t MODE, dev_t DEV)'
     `sys/stat.h' (BSD):  *note Making Special Files::.

`int mkstemp (char *TEMPLATE)'
     `stdlib.h' (BSD):  *note Temporary Files::.

`char * mktemp (char *TEMPLATE)'
     `stdlib.h' (Unix):  *note Temporary Files::.

`time_t mktime (struct tm *BROKENTIME)'
     `time.h' (ISO):  *note Broken-down Time::.

`int mlock (const void *ADDR, size_t LEN)'
     `sys/mman.h' (POSIX.1b):  *note Page Lock Functions::.

`int mlockall (int FLAGS)'
     `sys/mman.h' (POSIX.1b):  *note Page Lock Functions::.

`void * mmap (void *ADDRESS, size_t LENGTH, int PROTECT, int FLAGS, int FILEDES, off_t OFFSET)'
     `sys/mman.h' (POSIX):  *note Memory-mapped I/O::.

`void * mmap64 (void *ADDRESS, size_t LENGTH, int PROTECT, int FLAGS, int FILEDES, off64_t OFFSET)'
     `sys/mman.h' (LFS):  *note Memory-mapped I/O::.

`mode_t'
     `sys/types.h' (POSIX.1):  *note Attribute Meanings::.

`double modf (double VALUE, double *INTEGER-PART)'
     `math.h' (ISO):  *note Rounding Functions::.

`float modff (float VALUE, float *INTEGER-PART)'
     `math.h' (ISO):  *note Rounding Functions::.

`long double modfl (long double VALUE, long double *INTEGER-PART)'
     `math.h' (ISO):  *note Rounding Functions::.

`int mount (const char *SPECIAL_FILE, const char *DIR, const char *FSTYPE, unsigned long int OPTIONS, const void *DATA)'
     `sys/mount.h' (SVID, BSD):  *note Mount-Unmount-Remount::.

`long int mrand48 (void)'
     `stdlib.h' (SVID):  *note SVID Random::.

`int mrand48_r (struct drand48_data *BUFFER, long int *RESULT)'
     `stdlib.h' (GNU):  *note SVID Random::.

`void * mremap (void *ADDRESS, size_t LENGTH, size_t NEW_LENGTH, int FLAG)'
     `sys/mman.h' (GNU):  *note Memory-mapped I/O::.

`int MSG_DONTROUTE'
     `sys/socket.h' (BSD):  *note Socket Data Options::.

`int MSG_OOB'
     `sys/socket.h' (BSD):  *note Socket Data Options::.

`int MSG_PEEK'
     `sys/socket.h' (BSD):  *note Socket Data Options::.

`int msync (void *ADDRESS, size_t LENGTH, int FLAGS)'
     `sys/mman.h' (POSIX):  *note Memory-mapped I/O::.

`void mtrace (void)'
     `mcheck.h' (GNU):  *note Tracing malloc::.

`int munlock (const void *ADDR, size_t LEN)'
     `sys/mman.h' (POSIX.1b):  *note Page Lock Functions::.

`int munlockall (void)'
     `sys/mman.h' (POSIX.1b):  *note Page Lock Functions::.

`int munmap (void *ADDR, size_t LENGTH)'
     `sys/mman.h' (POSIX):  *note Memory-mapped I/O::.

`void muntrace (void)'
     `mcheck.h' (GNU):  *note Tracing malloc::.

`int NAME_MAX'
     `limits.h' (POSIX.1):  *note Limits for Files::.

`float NAN'
     `math.h' (GNU):  *note Infinity and NaN::.

`double nan (const char *TAGP)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`float nanf (const char *TAGP)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`long double nanl (const char *TAGP)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`int nanosleep (const struct timespec *REQUESTED_TIME, struct timespec *REMAINING)'
     `time.h' (POSIX.1):  *note Sleeping::.

`int NCCS'
     `termios.h' (POSIX.1):  *note Mode Data Types::.

`double nearbyint (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`float nearbyintf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long double nearbyintl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`NEW_TIME'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`NEW_TIME'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`double nextafter (double X, double Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`float nextafterf (float X, float Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`long double nextafterl (long double X, long double Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`double nexttoward (double X, long double Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`float nexttowardf (float X, long double Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`long double nexttowardl (long double X, long double Y)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`int nftw (const char *FILENAME, __nftw_func_t FUNC, int DESCRIPTORS, int FLAG)'
     `ftw.h' (XPG4.2):  *note Working with Directory Trees::.

`int nftw64 (const char *FILENAME, __nftw64_func_t FUNC, int DESCRIPTORS, int FLAG)'
     `ftw.h' (Unix98):  *note Working with Directory Trees::.

`__nftw64_func_t'
     `ftw.h' (GNU):  *note Working with Directory Trees::.

`__nftw_func_t'
     `ftw.h' (GNU):  *note Working with Directory Trees::.

`char * ngettext (const char *MSGID1, const char *MSGID2, unsigned long int N)'
     `libintl.h' (GNU):  *note Advanced gettext functions::.

`int NGROUPS_MAX'
     `limits.h' (POSIX.1):  *note General Limits::.

`int nice (int INCREMENT)'
     `unistd.h' (BSD):  *note Traditional Scheduling Functions::.

`nlink_t'
     `sys/types.h' (POSIX.1):  *note Attribute Meanings::.

`char * nl_langinfo (nl_item ITEM)'
     `langinfo.h' (XOPEN):  *note The Elegant and Fast Way::.

`NO_ADDRESS'
     `netdb.h' (BSD):  *note Host Names::.

`tcflag_t NOFLSH'
     `termios.h' (POSIX.1):  *note Local Modes::.

`tcflag_t NOKERNINFO'
     `termios.h', `(optional)' (BSD):  *note Local Modes::.

`NO_RECOVERY'
     `netdb.h' (BSD):  *note Host Names::.

`long int nrand48 (unsigned short int XSUBI[3])'
     `stdlib.h' (SVID):  *note SVID Random::.

`int nrand48_r (unsigned short int XSUBI[3], struct drand48_data *BUFFER, long int *RESULT)'
     `stdlib.h' (GNU):  *note SVID Random::.

`int NSIG'
     `signal.h' (BSD):  *note Standard Signals::.

`uint32_t ntohl (uint32_t NETLONG)'
     `netinet/in.h' (BSD):  *note Byte Order::.

`uint16_t ntohs (uint16_t NETSHORT)'
     `netinet/in.h' (BSD):  *note Byte Order::.

`int ntp_adjtime (struct timex *TPTR)'
     `sys/timex.h' (GNU):  *note High Accuracy Clock::.

`int ntp_gettime (struct ntptimeval *TPTR)'
     `sys/timex.h' (GNU):  *note High Accuracy Clock::.

`void * NULL'
     `stddef.h' (ISO):  *note Null Pointer Constant::.

`int O_ACCMODE'
     `fcntl.h' (POSIX.1):  *note Access Modes::.

`int O_APPEND'
     `fcntl.h' (POSIX.1):  *note Operating Modes::.

`int O_ASYNC'
     `fcntl.h' (BSD):  *note Operating Modes::.

`void obstack_1grow (struct obstack *OBSTACK-PTR, char C)'
     `obstack.h' (GNU):  *note Growing Objects::.

`void obstack_1grow_fast (struct obstack *OBSTACK-PTR, char C)'
     `obstack.h' (GNU):  *note Extra Fast Growing::.

`int obstack_alignment_mask (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Obstacks Data Alignment::.

`void * obstack_alloc (struct obstack *OBSTACK-PTR, int SIZE)'
     `obstack.h' (GNU):  *note Allocation in an Obstack::.

`obstack_alloc_failed_handler'
     `obstack.h' (GNU):  *note Preparing for Obstacks::.

`void * obstack_base (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Status of an Obstack::.

`void obstack_blank (struct obstack *OBSTACK-PTR, int SIZE)'
     `obstack.h' (GNU):  *note Growing Objects::.

`void obstack_blank_fast (struct obstack *OBSTACK-PTR, int SIZE)'
     `obstack.h' (GNU):  *note Extra Fast Growing::.

`int obstack_chunk_size (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Obstack Chunks::.

`void * obstack_copy (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
     `obstack.h' (GNU):  *note Allocation in an Obstack::.

`void * obstack_copy0 (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
     `obstack.h' (GNU):  *note Allocation in an Obstack::.

`void * obstack_finish (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Growing Objects::.

`void obstack_free (struct obstack *OBSTACK-PTR, void *OBJECT)'
     `obstack.h' (GNU):  *note Freeing Obstack Objects::.

`void obstack_grow (struct obstack *OBSTACK-PTR, void *DATA, int SIZE)'
     `obstack.h' (GNU):  *note Growing Objects::.

`void obstack_grow0 (struct obstack *OBSTACK-PTR, void *DATA, int SIZE)'
     `obstack.h' (GNU):  *note Growing Objects::.

`int obstack_init (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Preparing for Obstacks::.

`void obstack_int_grow (struct obstack *OBSTACK-PTR, int DATA)'
     `obstack.h' (GNU):  *note Growing Objects::.

`void obstack_int_grow_fast (struct obstack *OBSTACK-PTR, int DATA)'
     `obstack.h' (GNU):  *note Extra Fast Growing::.

`void * obstack_next_free (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Status of an Obstack::.

`int obstack_object_size (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Growing Objects::.

`int obstack_object_size (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Status of an Obstack::.

`int obstack_printf (struct obstack *OBSTACK, const char *TEMPLATE, ...)'
     `stdio.h' (GNU):  *note Dynamic Output::.

`void obstack_ptr_grow (struct obstack *OBSTACK-PTR, void *DATA)'
     `obstack.h' (GNU):  *note Growing Objects::.

`void obstack_ptr_grow_fast (struct obstack *OBSTACK-PTR, void *DATA)'
     `obstack.h' (GNU):  *note Extra Fast Growing::.

`int obstack_room (struct obstack *OBSTACK-PTR)'
     `obstack.h' (GNU):  *note Extra Fast Growing::.

`int obstack_vprintf (struct obstack *OBSTACK, const char *TEMPLATE, va_list AP)'
     `stdio.h' (GNU):  *note Variable Arguments Output::.

`int O_CREAT'
     `fcntl.h' (POSIX.1):  *note Open-time Flags::.

`int O_EXCL'
     `fcntl.h' (POSIX.1):  *note Open-time Flags::.

`int O_EXEC'
     `fcntl.h', `(optional)' (GNU):  *note Access Modes::.

`int O_EXLOCK'
     `fcntl.h', `(optional)' (BSD):  *note Open-time Flags::.

`off64_t'
     `sys/types.h' (Unix98):  *note File Position Primitive::.

`size_t offsetof (TYPE, MEMBER)'
     `stddef.h' (ISO):  *note Structure Measurement::.

`off_t'
     `sys/types.h' (POSIX.1):  *note File Position Primitive::.

`int O_FSYNC'
     `fcntl.h' (BSD):  *note Operating Modes::.

`int O_IGNORE_CTTY'
     `fcntl.h', `(optional)' (GNU):  *note Open-time Flags::.

`OLD_TIME'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`OLD_TIME'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int O_NDELAY'
     `fcntl.h' (BSD):  *note Operating Modes::.

`int on_exit (void (*FUNCTION)(int STATUS, void *ARG), void *ARG)'
     `stdlib.h' (SunOS):  *note Cleanups on Exit::.

`tcflag_t ONLCR'
     `termios.h' (POSIX.1):  *note Output Modes::.

`int O_NOATIME'
     `fcntl.h' (GNU):  *note Operating Modes::.

`int O_NOCTTY'
     `fcntl.h' (POSIX.1):  *note Open-time Flags::.

`tcflag_t ONOEOT'
     `termios.h', `(optional)' (BSD):  *note Output Modes::.

`int O_NOLINK'
     `fcntl.h', `(optional)' (GNU):  *note Open-time Flags::.

`int O_NONBLOCK'
     `fcntl.h' (POSIX.1):  *note Open-time Flags::.

`int O_NONBLOCK'
     `fcntl.h' (POSIX.1):  *note Operating Modes::.

`int O_NOTRANS'
     `fcntl.h', `(optional)' (GNU):  *note Open-time Flags::.

`int open (const char *FILENAME, int FLAGS[, mode_t MODE])'
     `fcntl.h' (POSIX.1):  *note Opening and Closing Files::.

`int open64 (const char *FILENAME, int FLAGS[, mode_t MODE])'
     `fcntl.h' (Unix98):  *note Opening and Closing Files::.

`DIR * opendir (const char *DIRNAME)'
     `dirent.h' (POSIX.1):  *note Opening a Directory::.

`void openlog (const char *IDENT, int OPTION, int FACILITY)'
     `syslog.h' (BSD):  *note openlog::.

`int OPEN_MAX'
     `limits.h' (POSIX.1):  *note General Limits::.

`FILE * open_memstream (char **PTR, size_t *SIZELOC)'
     `stdio.h' (GNU):  *note String Streams::.

`int openpty (int *AMASTER, int *ASLAVE, char *NAME, const struct termios *TERMP, const struct winsize *WINP)'
     `pty.h' (BSD):  *note Pseudo-Terminal Pairs::.

`tcflag_t OPOST'
     `termios.h' (POSIX.1):  *note Output Modes::.

`char * optarg'
     `unistd.h' (POSIX.2):  *note Using Getopt::.

`int opterr'
     `unistd.h' (POSIX.2):  *note Using Getopt::.

`int optind'
     `unistd.h' (POSIX.2):  *note Using Getopt::.

`OPTION_ALIAS'
     `argp.h' (GNU):  *note Argp Option Flags::.

`OPTION_ARG_OPTIONAL'
     `argp.h' (GNU):  *note Argp Option Flags::.

`OPTION_DOC'
     `argp.h' (GNU):  *note Argp Option Flags::.

`OPTION_HIDDEN'
     `argp.h' (GNU):  *note Argp Option Flags::.

`OPTION_NO_USAGE'
     `argp.h' (GNU):  *note Argp Option Flags::.

`int optopt'
     `unistd.h' (POSIX.2):  *note Using Getopt::.

`int O_RDONLY'
     `fcntl.h' (POSIX.1):  *note Access Modes::.

`int O_RDWR'
     `fcntl.h' (POSIX.1):  *note Access Modes::.

`int O_READ'
     `fcntl.h', `(optional)' (GNU):  *note Access Modes::.

`int O_SHLOCK'
     `fcntl.h', `(optional)' (BSD):  *note Open-time Flags::.

`int O_SYNC'
     `fcntl.h' (BSD):  *note Operating Modes::.

`int O_TRUNC'
     `fcntl.h' (POSIX.1):  *note Open-time Flags::.

`int O_WRITE'
     `fcntl.h', `(optional)' (GNU):  *note Access Modes::.

`int O_WRONLY'
     `fcntl.h' (POSIX.1):  *note Access Modes::.

`tcflag_t OXTABS'
     `termios.h', `(optional)' (BSD):  *note Output Modes::.

`PA_CHAR'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_DOUBLE'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_FLAG_LONG'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_FLAG_LONG_DOUBLE'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_FLAG_LONG_LONG'
     `printf.h' (GNU):  *note Parsing a Template String::.

`int PA_FLAG_MASK'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_FLAG_PTR'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_FLAG_SHORT'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_FLOAT'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_INT'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_LAST'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_POINTER'
     `printf.h' (GNU):  *note Parsing a Template String::.

`tcflag_t PARENB'
     `termios.h' (POSIX.1):  *note Control Modes::.

`tcflag_t PARMRK'
     `termios.h' (POSIX.1):  *note Input Modes::.

`tcflag_t PARODD'
     `termios.h' (POSIX.1):  *note Control Modes::.

`size_t parse_printf_format (const char *TEMPLATE, size_t N, int *ARGTYPES)'
     `printf.h' (GNU):  *note Parsing a Template String::.

`PA_STRING'
     `printf.h' (GNU):  *note Parsing a Template String::.

`long int pathconf (const char *FILENAME, int PARAMETER)'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`int PATH_MAX'
     `limits.h' (POSIX.1):  *note Limits for Files::.

`int pause (void)'
     `unistd.h' (POSIX.1):  *note Using Pause::.

`_PC_ASYNC_IO'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_CHOWN_RESTRICTED'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_FILESIZEBITS'
     `unistd.h' (LFS):  *note Pathconf::.

`_PC_LINK_MAX'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`int pclose (FILE *STREAM)'
     `stdio.h' (POSIX.2, SVID, BSD):  *note Pipe to a Subprocess::.

`_PC_MAX_CANON'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_MAX_INPUT'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_NAME_MAX'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_NO_TRUNC'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_PATH_MAX'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_PIPE_BUF'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_PRIO_IO'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_REC_INCR_XFER_SIZE'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_REC_MAX_XFER_SIZE'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_REC_MIN_XFER_SIZE'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_REC_XFER_ALIGN'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_SYNC_IO'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`_PC_VDISABLE'
     `unistd.h' (POSIX.1):  *note Pathconf::.

`tcflag_t PENDIN'
     `termios.h' (BSD):  *note Local Modes::.

`void perror (const char *MESSAGE)'
     `stdio.h' (ISO):  *note Error Messages::.

`int PF_FILE'
     `sys/socket.h' (GNU):  *note Local Namespace Details::.

`int PF_INET'
     `sys/socket.h' (BSD):  *note Internet Namespace::.

`int PF_INET6'
     `sys/socket.h' (X/Open):  *note Internet Namespace::.

`int PF_LOCAL'
     `sys/socket.h' (POSIX):  *note Local Namespace Details::.

`int PF_UNIX'
     `sys/socket.h' (BSD):  *note Local Namespace Details::.

`pid_t'
     `sys/types.h' (POSIX.1):  *note Process Identification::.

`int pipe (int FILEDES[2])'
     `unistd.h' (POSIX.1):  *note Creating a Pipe::.

`int PIPE_BUF'
     `limits.h' (POSIX.1):  *note Limits for Files::.

`FILE * popen (const char *COMMAND, const char *MODE)'
     `stdio.h' (POSIX.2, SVID, BSD):  *note Pipe to a Subprocess::.

`_POSIX2_BC_BASE_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`_POSIX2_BC_DIM_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`_POSIX2_BC_SCALE_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`_POSIX2_BC_STRING_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`int _POSIX2_C_DEV'
     `unistd.h' (POSIX.2):  *note System Options::.

`_POSIX2_COLL_WEIGHTS_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`long int _POSIX2_C_VERSION'
     `unistd.h' (POSIX.2):  *note Version Supported::.

`_POSIX2_EQUIV_CLASS_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`_POSIX2_EXPR_NEST_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`int _POSIX2_FORT_DEV'
     `unistd.h' (POSIX.2):  *note System Options::.

`int _POSIX2_FORT_RUN'
     `unistd.h' (POSIX.2):  *note System Options::.

`_POSIX2_LINE_MAX'
     `limits.h' (POSIX.2):  *note Utility Minimums::.

`int _POSIX2_LOCALEDEF'
     `unistd.h' (POSIX.2):  *note System Options::.

`_POSIX2_RE_DUP_MAX'
     `limits.h' (POSIX.2):  *note Minimums::.

`int _POSIX2_SW_DEV'
     `unistd.h' (POSIX.2):  *note System Options::.

`_POSIX_AIO_LISTIO_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`_POSIX_AIO_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`_POSIX_ARG_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`_POSIX_CHILD_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`int _POSIX_CHOWN_RESTRICTED'
     `unistd.h' (POSIX.1):  *note Options for Files::.

`_POSIX_C_SOURCE'
     (POSIX.2):  *note Feature Test Macros::.

`int _POSIX_JOB_CONTROL'
     `unistd.h' (POSIX.1):  *note System Options::.

`_POSIX_LINK_MAX'
     `limits.h' (POSIX.1):  *note File Minimums::.

`_POSIX_MAX_CANON'
     `limits.h' (POSIX.1):  *note File Minimums::.

`_POSIX_MAX_INPUT'
     `limits.h' (POSIX.1):  *note File Minimums::.

`int posix_memalign (void **MEMPTR, size_t ALIGNMENT, size_t SIZE)'
     `stdlib.h' (POSIX):  *note Aligned Memory Blocks::.

`_POSIX_NAME_MAX'
     `limits.h' (POSIX.1):  *note File Minimums::.

`_POSIX_NGROUPS_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`int _POSIX_NO_TRUNC'
     `unistd.h' (POSIX.1):  *note Options for Files::.

`_POSIX_OPEN_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`_POSIX_PATH_MAX'
     `limits.h' (POSIX.1):  *note File Minimums::.

`_POSIX_PIPE_BUF'
     `limits.h' (POSIX.1):  *note File Minimums::.

`POSIX_REC_INCR_XFER_SIZE'
     `limits.h' (POSIX.1):  *note File Minimums::.

`POSIX_REC_MAX_XFER_SIZE'
     `limits.h' (POSIX.1):  *note File Minimums::.

`POSIX_REC_MIN_XFER_SIZE'
     `limits.h' (POSIX.1):  *note File Minimums::.

`POSIX_REC_XFER_ALIGN'
     `limits.h' (POSIX.1):  *note File Minimums::.

`int _POSIX_SAVED_IDS'
     `unistd.h' (POSIX.1):  *note System Options::.

`_POSIX_SOURCE'
     (POSIX.1):  *note Feature Test Macros::.

`_POSIX_SSIZE_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`_POSIX_STREAM_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`_POSIX_TZNAME_MAX'
     `limits.h' (POSIX.1):  *note Minimums::.

`unsigned char _POSIX_VDISABLE'
     `unistd.h' (POSIX.1):  *note Options for Files::.

`long int _POSIX_VERSION'
     `unistd.h' (POSIX.1):  *note Version Supported::.

`double pow (double BASE, double POWER)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`double pow10 (double X)'
     `math.h' (GNU):  *note Exponents and Logarithms::.

`float pow10f (float X)'
     `math.h' (GNU):  *note Exponents and Logarithms::.

`long double pow10l (long double X)'
     `math.h' (GNU):  *note Exponents and Logarithms::.

`float powf (float BASE, float POWER)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double powl (long double BASE, long double POWER)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`ssize_t pread (int FILEDES, void *BUFFER, size_t SIZE, off_t OFFSET)'
     `unistd.h' (Unix98):  *note I/O Primitives::.

`ssize_t pread64 (int FILEDES, void *BUFFER, size_t SIZE, off64_t OFFSET)'
     `unistd.h' (Unix98):  *note I/O Primitives::.

`int printf (const char *TEMPLATE, ...)'
     `stdio.h' (ISO):  *note Formatted Output Functions::.

`printf_arginfo_function'
     `printf.h' (GNU):  *note Defining the Output Handler::.

`printf_function'
     `printf.h' (GNU):  *note Defining the Output Handler::.

`int printf_size (FILE *FP, const struct printf_info *INFO, const void *const *ARGS)'
     `printf.h' (GNU):  *note Predefined Printf Handlers::.

`int printf_size_info (const struct printf_info *INFO, size_t N, int *ARGTYPES)'
     `printf.h' (GNU):  *note Predefined Printf Handlers::.

`PRIO_MAX'
     `sys/resource.h' (BSD):  *note Traditional Scheduling Functions::.

`PRIO_MIN'
     `sys/resource.h' (BSD):  *note Traditional Scheduling Functions::.

`PRIO_PGRP'
     `sys/resource.h' (BSD):  *note Traditional Scheduling Functions::.

`PRIO_PROCESS'
     `sys/resource.h' (BSD):  *note Traditional Scheduling Functions::.

`PRIO_USER'
     `sys/resource.h' (BSD):  *note Traditional Scheduling Functions::.

`char * program_invocation_name'
     `errno.h' (GNU):  *note Error Messages::.

`char * program_invocation_short_name'
     `errno.h' (GNU):  *note Error Messages::.

`void psignal (int SIGNUM, const char *MESSAGE)'
     `signal.h' (BSD):  *note Signal Messages::.

`char * P_tmpdir'
     `stdio.h' (SVID):  *note Temporary Files::.

`ptrdiff_t'
     `stddef.h' (ISO):  *note Important Data Types::.

`char * ptsname (int FILEDES)'
     `stdlib.h' (SVID, XPG4.2):  *note Allocation::.

`int ptsname_r (int FILEDES, char *BUF, size_t LEN)'
     `stdlib.h' (GNU):  *note Allocation::.

`int putc (int C, FILE *STREAM)'
     `stdio.h' (ISO):  *note Simple Output::.

`int putchar (int C)'
     `stdio.h' (ISO):  *note Simple Output::.

`int putchar_unlocked (int C)'
     `stdio.h' (POSIX):  *note Simple Output::.

`int putc_unlocked (int C, FILE *STREAM)'
     `stdio.h' (POSIX):  *note Simple Output::.

`int putenv (char *STRING)'
     `stdlib.h' (SVID):  *note Environment Access::.

`int putpwent (const struct passwd *P, FILE *STREAM)'
     `pwd.h' (SVID):  *note Writing a User Entry::.

`int puts (const char *S)'
     `stdio.h' (ISO):  *note Simple Output::.

`struct utmp * pututline (const struct utmp *UTMP)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`struct utmpx * pututxline (const struct utmpx *UTMP)'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int putw (int W, FILE *STREAM)'
     `stdio.h' (SVID):  *note Simple Output::.

`wint_t putwc (wchar_t WC, FILE *STREAM)'
     `wchar.h' (ISO):  *note Simple Output::.

`wint_t putwchar (wchar_t WC)'
     `wchar.h' (ISO):  *note Simple Output::.

`wint_t putwchar_unlocked (wchar_t WC)'
     `wchar.h' (GNU):  *note Simple Output::.

`wint_t putwc_unlocked (wchar_t WC, FILE *STREAM)'
     `wchar.h' (GNU):  *note Simple Output::.

`ssize_t pwrite (int FILEDES, const void *BUFFER, size_t SIZE, off_t OFFSET)'
     `unistd.h' (Unix98):  *note I/O Primitives::.

`ssize_t pwrite64 (int FILEDES, const void *BUFFER, size_t SIZE, off64_t OFFSET)'
     `unistd.h' (Unix98):  *note I/O Primitives::.

`char * qecvt (long double VALUE, int NDIGIT, int *DECPT, int *NEG)'
     `stdlib.h' (GNU):  *note System V Number Conversion::.

`int qecvt_r (long double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
     `stdlib.h' (GNU):  *note System V Number Conversion::.

`char * qfcvt (long double VALUE, int NDIGIT, int *DECPT, int *NEG)'
     `stdlib.h' (GNU):  *note System V Number Conversion::.

`int qfcvt_r (long double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
     `stdlib.h' (GNU):  *note System V Number Conversion::.

`char * qgcvt (long double VALUE, int NDIGIT, char *BUF)'
     `stdlib.h' (GNU):  *note System V Number Conversion::.

`void qsort (void *ARRAY, size_t COUNT, size_t SIZE, comparison_fn_t COMPARE)'
     `stdlib.h' (ISO):  *note Array Sort Function::.

`int raise (int SIGNUM)'
     `signal.h' (ISO):  *note Signaling Yourself::.

`int rand (void)'
     `stdlib.h' (ISO):  *note ISO Random::.

`int RAND_MAX'
     `stdlib.h' (ISO):  *note ISO Random::.

`long int random (void)'
     `stdlib.h' (BSD):  *note BSD Random::.

`int random_r (struct random_data *restrict BUF, int32_t *restrict RESULT)'
     `stdlib.h' (GNU):  *note BSD Random::.

`int rand_r (unsigned int *SEED)'
     `stdlib.h' (POSIX.1):  *note ISO Random::.

`void * rawmemchr (const void *BLOCK, int C)'
     `string.h' (GNU):  *note Search Functions::.

`ssize_t read (int FILEDES, void *BUFFER, size_t SIZE)'
     `unistd.h' (POSIX.1):  *note I/O Primitives::.

`struct dirent * readdir (DIR *DIRSTREAM)'
     `dirent.h' (POSIX.1):  *note Reading/Closing Directory::.

`struct dirent64 * readdir64 (DIR *DIRSTREAM)'
     `dirent.h' (LFS):  *note Reading/Closing Directory::.

`int readdir64_r (DIR *DIRSTREAM, struct dirent64 *ENTRY, struct dirent64 **RESULT)'
     `dirent.h' (LFS):  *note Reading/Closing Directory::.

`int readdir_r (DIR *DIRSTREAM, struct dirent *ENTRY, struct dirent **RESULT)'
     `dirent.h' (GNU):  *note Reading/Closing Directory::.

`ssize_t readlink (const char *FILENAME, char *BUFFER, size_t SIZE)'
     `unistd.h' (BSD):  *note Symbolic Links::.

`ssize_t readv (int FILEDES, const struct iovec *VECTOR, int COUNT)'
     `sys/uio.h' (BSD):  *note Scatter-Gather::.

`void * realloc (void *PTR, size_t NEWSIZE)'
     `malloc.h', `stdlib.h' (ISO):  *note Changing Block Size::.

`__realloc_hook'
     `malloc.h' (GNU):  *note Hooks for Malloc::.

`char * realpath (const char *restrict NAME, char *restrict RESOLVED)'
     `stdlib.h' (XPG):  *note Symbolic Links::.

`ssize_t recv (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS)'
     `sys/socket.h' (BSD):  *note Receiving Data::.

`ssize_t recvfrom (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS, struct sockaddr *ADDR, socklen_t *LENGTH-PTR)'
     `sys/socket.h' (BSD):  *note Receiving Datagrams::.

`ssize_t recvmsg (int SOCKET, struct msghdr *MESSAGE, int FLAGS)'
     `sys/socket.h' (BSD):  *note Receiving Datagrams::.

`int RE_DUP_MAX'
     `limits.h' (POSIX.2):  *note General Limits::.

`_REENTRANT'
     (GNU):  *note Feature Test Macros::.

`REG_BADBR'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_BADPAT'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_BADRPT'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`int regcomp (regex_t *restrict COMPILED, const char *restrict PATTERN, int CFLAGS)'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_EBRACE'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_EBRACK'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_ECOLLATE'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_ECTYPE'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_EESCAPE'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_EPAREN'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_ERANGE'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`size_t regerror (int ERRCODE, const regex_t *restrict COMPILED, char *restrict BUFFER, size_t LENGTH)'
     `regex.h' (POSIX.2):  *note Regexp Cleanup::.

`REG_ESPACE'
     `regex.h' (POSIX.2):  *note Matching POSIX Regexps::.

`REG_ESPACE'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_ESUBREG'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`int regexec (const regex_t *restrict COMPILED, const char *restrict STRING, size_t NMATCH, regmatch_t MATCHPTR[restrict], int EFLAGS)'
     `regex.h' (POSIX.2):  *note Matching POSIX Regexps::.

`regex_t'
     `regex.h' (POSIX.2):  *note POSIX Regexp Compilation::.

`REG_EXTENDED'
     `regex.h' (POSIX.2):  *note Flags for POSIX Regexps::.

`void regfree (regex_t *COMPILED)'
     `regex.h' (POSIX.2):  *note Regexp Cleanup::.

`REG_ICASE'
     `regex.h' (POSIX.2):  *note Flags for POSIX Regexps::.

`int register_printf_function (int SPEC, printf_function HANDLER-FUNCTION, printf_arginfo_function ARGINFO-FUNCTION)'
     `printf.h' (GNU):  *note Registering New Conversions::.

`regmatch_t'
     `regex.h' (POSIX.2):  *note Regexp Subexpressions::.

`REG_NEWLINE'
     `regex.h' (POSIX.2):  *note Flags for POSIX Regexps::.

`REG_NOMATCH'
     `regex.h' (POSIX.2):  *note Matching POSIX Regexps::.

`REG_NOSUB'
     `regex.h' (POSIX.2):  *note Flags for POSIX Regexps::.

`REG_NOTBOL'
     `regex.h' (POSIX.2):  *note Matching POSIX Regexps::.

`REG_NOTEOL'
     `regex.h' (POSIX.2):  *note Matching POSIX Regexps::.

`regoff_t'
     `regex.h' (POSIX.2):  *note Regexp Subexpressions::.

`double remainder (double NUMERATOR, double DENOMINATOR)'
     `math.h' (BSD):  *note Remainder Functions::.

`float remainderf (float NUMERATOR, float DENOMINATOR)'
     `math.h' (BSD):  *note Remainder Functions::.

`long double remainderl (long double NUMERATOR, long double DENOMINATOR)'
     `math.h' (BSD):  *note Remainder Functions::.

`int remove (const char *FILENAME)'
     `stdio.h' (ISO):  *note Deleting Files::.

`int rename (const char *OLDNAME, const char *NEWNAME)'
     `stdio.h' (ISO):  *note Renaming Files::.

`void rewind (FILE *STREAM)'
     `stdio.h' (ISO):  *note File Positioning::.

`void rewinddir (DIR *DIRSTREAM)'
     `dirent.h' (POSIX.1):  *note Random Access Directory::.

`char * rindex (const char *STRING, int C)'
     `string.h' (BSD):  *note Search Functions::.

`double rint (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`float rintf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long double rintl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`rlim_t RLIM_INFINITY'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_AS'
     `sys/resource.h' (Unix98):  *note Limits on Resources::.

`RLIMIT_CORE'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_CPU'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_DATA'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_FSIZE'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_MEMLOCK'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_NOFILE'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_NPROC'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_RSS'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIMIT_STACK'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`RLIM_NLIMITS'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`int rmdir (const char *FILENAME)'
     `unistd.h' (POSIX.1):  *note Deleting Files::.

`int R_OK'
     `unistd.h' (POSIX.1):  *note Testing File Access::.

`double round (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`float roundf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long double roundl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`int rpmatch (const char *RESPONSE)'
     `stdlib.h' (stdlib.h):  *note Yes-or-No Questions::.

`RUN_LVL'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`RUN_LVL'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`RUSAGE_CHILDREN'
     `sys/resource.h' (BSD):  *note Resource Usage::.

`RUSAGE_SELF'
     `sys/resource.h' (BSD):  *note Resource Usage::.

`int SA_NOCLDSTOP'
     `signal.h' (POSIX.1):  *note Flags for Sigaction::.

`int SA_ONSTACK'
     `signal.h' (BSD):  *note Flags for Sigaction::.

`int SA_RESTART'
     `signal.h' (BSD):  *note Flags for Sigaction::.

`void *sbrk (ptrdiff_t DELTA)'
     `unistd.h' (BSD):  *note Resizing the Data Segment::.

`_SC_2_C_DEV'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_2_FORT_DEV'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_2_FORT_RUN'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_2_LOCALEDEF'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_2_SW_DEV'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_2_VERSION'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_AIO_LISTIO_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_AIO_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_AIO_PRIO_DELTA_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`double scalb (double VALUE, double EXPONENT)'
     `math.h' (BSD):  *note Normalization Functions::.

`float scalbf (float VALUE, float EXPONENT)'
     `math.h' (BSD):  *note Normalization Functions::.

`long double scalbl (long double VALUE, long double EXPONENT)'
     `math.h' (BSD):  *note Normalization Functions::.

`double scalbln (double X, long int N)'
     `math.h' (BSD):  *note Normalization Functions::.

`float scalblnf (float X, long int N)'
     `math.h' (BSD):  *note Normalization Functions::.

`long double scalblnl (long double X, long int N)'
     `math.h' (BSD):  *note Normalization Functions::.

`double scalbn (double X, int N)'
     `math.h' (BSD):  *note Normalization Functions::.

`float scalbnf (float X, int N)'
     `math.h' (BSD):  *note Normalization Functions::.

`long double scalbnl (long double X, int N)'
     `math.h' (BSD):  *note Normalization Functions::.

`int scandir (const char *DIR, struct dirent ***NAMELIST, int (*SELECTOR) (const struct dirent *), int (*CMP) (const struct dirent **, const struct dirent **))'
     `dirent.h' (BSD/SVID):  *note Scanning Directory Content::.

`int scandir64 (const char *DIR, struct dirent64 ***NAMELIST, int (*SELECTOR) (const struct dirent64 *), int (*CMP) (const struct dirent64 **, const struct dirent64 **))'
     `dirent.h' (GNU):  *note Scanning Directory Content::.

`int scanf (const char *TEMPLATE, ...)'
     `stdio.h' (ISO):  *note Formatted Input Functions::.

`_SC_ARG_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_ASYNCHRONOUS_IO'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_ATEXIT_MAX'
     `unistd.h' (GNU):  *note Constants for Sysconf::.

`_SC_AVPHYS_PAGES'
     `unistd.h' (GNU):  *note Constants for Sysconf::.

`_SC_BC_BASE_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_BC_DIM_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_BC_SCALE_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_BC_STRING_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_CHAR_BIT'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_CHARCLASS_NAME_MAX'
     `unistd.h' (GNU):  *note Constants for Sysconf::.

`_SC_CHAR_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_CHAR_MIN'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_CHILD_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_CLK_TCK'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_COLL_WEIGHTS_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_DELAYTIMER_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_EQUIV_CLASS_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_EXPR_NEST_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_FSYNC'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_GETGR_R_SIZE_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_GETPW_R_SIZE_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`SCHAR_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`SCHAR_MIN'
     `limits.h' (ISO):  *note Range of Type::.

`int sched_getaffinity (pid_t PID, size_t CPUSETSIZE, cpu_set_t *CPUSET)'
     `sched.h' (GNU):  *note CPU Affinity::.

`int sched_getparam (pid_t PID, struct sched_param *PARAM)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`int sched_get_priority_max (int POLICY)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`int sched_get_priority_min (int POLICY)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`int sched_getscheduler (pid_t PID)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`int sched_rr_get_interval (pid_t PID, struct timespec *INTERVAL)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`int sched_setaffinity (pid_t PID, size_t CPUSETSIZE, const cpu_set_t *CPUSET)'
     `sched.h' (GNU):  *note CPU Affinity::.

`int sched_setparam (pid_t PID, const struct sched_param *PARAM)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`int sched_setscheduler (pid_t PID, int POLICY, const struct sched_param *PARAM)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`int sched_yield (void)'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`_SC_INT_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_INT_MIN'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_JOB_CONTROL'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_LINE_MAX'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_LOGIN_NAME_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_LONG_BIT'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_MAPPED_FILES'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_MB_LEN_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_MEMLOCK'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_MEMLOCK_RANGE'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_MEMORY_PROTECTION'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_MESSAGE_PASSING'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_MQ_OPEN_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_MQ_PRIO_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_NGROUPS_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_NL_ARGMAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_NL_LANGMAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_NL_MSGMAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_NL_NMAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_NL_SETMAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_NL_TEXTMAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_NPROCESSORS_CONF'
     `unistd.h' (GNU):  *note Constants for Sysconf::.

`_SC_NPROCESSORS_ONLN'
     `unistd.h' (GNU):  *note Constants for Sysconf::.

`_SC_NZERO'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_OPEN_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_PAGESIZE'
     `unistd.h' (GNU):  *note Constants for Sysconf::.

`_SC_PHYS_PAGES'
     `unistd.h' (GNU):  *note Constants for Sysconf::.

`_SC_PII'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_INTERNET'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_INTERNET_DGRAM'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_INTERNET_STREAM'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_OSI'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_OSI_CLTS'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_OSI_COTS'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_OSI_M'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_SOCKET'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PII_XTI'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_PRIORITIZED_IO'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_PRIORITY_SCHEDULING'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_REALTIME_SIGNALS'
     `unistdh.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_RTSIG_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_SAVED_IDS'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_SCHAR_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_SCHAR_MIN'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_SELECT'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_SEMAPHORES'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_SEM_NSEMS_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_SEM_VALUE_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_SHARED_MEMORY_OBJECTS'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_SHRT_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_SHRT_MIN'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_SIGQUEUE_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`SC_SSIZE_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_STREAM_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_SYNCHRONIZED_IO'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_ATTR_STACKADDR'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_ATTR_STACKSIZE'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_DESTRUCTOR_ITERATIONS'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_KEYS_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_PRIO_INHERIT'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_PRIO_PROTECT'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_PRIORITY_SCHEDULING'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_PROCESS_SHARED'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREADS'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_SAFE_FUNCTIONS'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_STACK_MIN'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_THREAD_THREADS_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_TIMER_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_TIMERS'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_T_IOV_MAX'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_TTY_NAME_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_TZNAME_MAX'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_UCHAR_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_UINT_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_UIO_MAXIOV'
     `unistd.h' (POSIX.1g):  *note Constants for Sysconf::.

`_SC_ULONG_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_USHRT_MAX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_VERSION'
     `unistd.h' (POSIX.1):  *note Constants for Sysconf::.

`_SC_VERSION'
     `unistd.h' (POSIX.2):  *note Constants for Sysconf::.

`_SC_WORD_BIT'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_CRYPT'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_ENH_I18N'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_LEGACY'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_REALTIME'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_REALTIME_THREADS'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_SHM'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_UNIX'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_VERSION'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_XCU_VERSION'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_XPG2'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_XPG3'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`_SC_XOPEN_XPG4'
     `unistd.h' (X/Open):  *note Constants for Sysconf::.

`char * secure_getenv (const char *NAME)'
     `stdlib.h' (GNU):  *note Environment Access::.

`unsigned short int * seed48 (unsigned short int SEED16V[3])'
     `stdlib.h' (SVID):  *note SVID Random::.

`int seed48_r (unsigned short int SEED16V[3], struct drand48_data *BUFFER)'
     `stdlib.h' (GNU):  *note SVID Random::.

`int SEEK_CUR'
     `stdio.h' (ISO):  *note File Positioning::.

`void seekdir (DIR *DIRSTREAM, long int POS)'
     `dirent.h' (BSD):  *note Random Access Directory::.

`int SEEK_END'
     `stdio.h' (ISO):  *note File Positioning::.

`int SEEK_SET'
     `stdio.h' (ISO):  *note File Positioning::.

`int select (int NFDS, fd_set *READ-FDS, fd_set *WRITE-FDS, fd_set *EXCEPT-FDS, struct timeval *TIMEOUT)'
     `sys/types.h' (BSD):  *note Waiting for I/O::.

`ssize_t send (int SOCKET, const void *BUFFER, size_t SIZE, int FLAGS)'
     `sys/socket.h' (BSD):  *note Sending Data::.

`ssize_t sendmsg (int SOCKET, const struct msghdr *MESSAGE, int FLAGS)'
     `sys/socket.h' (BSD):  *note Receiving Datagrams::.

`ssize_t sendto (int SOCKET, const void *BUFFER, size_t SIZE, int FLAGS, struct sockaddr *ADDR, socklen_t LENGTH)'
     `sys/socket.h' (BSD):  *note Sending Datagrams::.

`void setbuf (FILE *STREAM, char *BUF)'
     `stdio.h' (ISO):  *note Controlling Buffering::.

`void setbuffer (FILE *STREAM, char *BUF, size_t SIZE)'
     `stdio.h' (BSD):  *note Controlling Buffering::.

`int setcontext (const ucontext_t *UCP)'
     `ucontext.h' (SVID):  *note System V contexts::.

`int setdomainname (const char *NAME, size_t LENGTH)'
     `unistd.h' (???):  *note Host Identification::.

`int setegid (gid_t NEWGID)'
     `unistd.h' (POSIX.1):  *note Setting Groups::.

`int setenv (const char *NAME, const char *VALUE, int REPLACE)'
     `stdlib.h' (BSD):  *note Environment Access::.

`int seteuid (uid_t NEWEUID)'
     `unistd.h' (POSIX.1):  *note Setting User ID::.

`int setfsent (void)'
     `fstab.h' (BSD):  *note fstab::.

`int setgid (gid_t NEWGID)'
     `unistd.h' (POSIX.1):  *note Setting Groups::.

`void setgrent (void)'
     `grp.h' (SVID, BSD):  *note Scanning All Groups::.

`int setgroups (size_t COUNT, const gid_t *GROUPS)'
     `grp.h' (BSD):  *note Setting Groups::.

`void sethostent (int STAYOPEN)'
     `netdb.h' (BSD):  *note Host Names::.

`int sethostid (long int ID)'
     `unistd.h' (BSD):  *note Host Identification::.

`int sethostname (const char *NAME, size_t LENGTH)'
     `unistd.h' (BSD):  *note Host Identification::.

`int setitimer (int WHICH, const struct itimerval *NEW, struct itimerval *OLD)'
     `sys/time.h' (BSD):  *note Setting an Alarm::.

`int setjmp (jmp_buf STATE)'
     `setjmp.h' (ISO):  *note Non-Local Details::.

`void setkey (const char *KEY)'
     `crypt.h' (BSD, SVID):  *note DES Encryption::.

`void setkey_r (const char *KEY, struct crypt_data * DATA)'
     `crypt.h' (GNU):  *note DES Encryption::.

`void setlinebuf (FILE *STREAM)'
     `stdio.h' (BSD):  *note Controlling Buffering::.

`char * setlocale (int CATEGORY, const char *LOCALE)'
     `locale.h' (ISO):  *note Setting the Locale::.

`int setlogmask (int MASK)'
     `syslog.h' (BSD):  *note setlogmask::.

`FILE * setmntent (const char *FILE, const char *MODE)'
     `mntent.h' (BSD):  *note mtab::.

`void setnetent (int STAYOPEN)'
     `netdb.h' (BSD):  *note Networks Database::.

`int setnetgrent (const char *NETGROUP)'
     `netdb.h' (BSD):  *note Lookup Netgroup::.

`int setpgid (pid_t PID, pid_t PGID)'
     `unistd.h' (POSIX.1):  *note Process Group Functions::.

`int setpgrp (pid_t PID, pid_t PGID)'
     `unistd.h' (BSD):  *note Process Group Functions::.

`int setpriority (int CLASS, int ID, int NICEVAL)'
     `sys/resource.h' (BSD,POSIX):  *note Traditional Scheduling
     Functions::.

`void setprotoent (int STAYOPEN)'
     `netdb.h' (BSD):  *note Protocols Database::.

`void setpwent (void)'
     `pwd.h' (SVID, BSD):  *note Scanning All Users::.

`int setregid (gid_t RGID, gid_t EGID)'
     `unistd.h' (BSD):  *note Setting Groups::.

`int setreuid (uid_t RUID, uid_t EUID)'
     `unistd.h' (BSD):  *note Setting User ID::.

`int setrlimit (int RESOURCE, const struct rlimit *RLP)'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`int setrlimit64 (int RESOURCE, const struct rlimit64 *RLP)'
     `sys/resource.h' (Unix98):  *note Limits on Resources::.

`void setservent (int STAYOPEN)'
     `netdb.h' (BSD):  *note Services Database::.

`pid_t setsid (void)'
     `unistd.h' (POSIX.1):  *note Process Group Functions::.

`int setsockopt (int SOCKET, int LEVEL, int OPTNAME, const void *OPTVAL, socklen_t OPTLEN)'
     `sys/socket.h' (BSD):  *note Socket Option Functions::.

`char * setstate (char *STATE)'
     `stdlib.h' (BSD):  *note BSD Random::.

`int setstate_r (char *restrict STATEBUF, struct random_data *restrict BUF)'
     `stdlib.h' (GNU):  *note BSD Random::.

`int settimeofday (const struct timeval *TP, const struct timezone *TZP)'
     `sys/time.h' (BSD):  *note High-Resolution Calendar::.

`int setuid (uid_t NEWUID)'
     `unistd.h' (POSIX.1):  *note Setting User ID::.

`void setutent (void)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`void setutxent (void)'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`int setvbuf (FILE *STREAM, char *BUF, int MODE, size_t SIZE)'
     `stdio.h' (ISO):  *note Controlling Buffering::.

`int shm_open (const char *NAME, int OFLAG, mode_t MODE)'
     `sys/mman.h' (POSIX):  *note Memory-mapped I/O::.

`SHRT_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`SHRT_MIN'
     `limits.h' (ISO):  *note Range of Type::.

`int shutdown (int SOCKET, int HOW)'
     `sys/socket.h' (BSD):  *note Closing a Socket::.

`S_IEXEC'
     `sys/stat.h' (BSD):  *note Permission Bits::.

`S_IFBLK'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`S_IFCHR'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`S_IFDIR'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`S_IFIFO'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`S_IFLNK'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`int S_IFMT'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`S_IFREG'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`S_IFSOCK'
     `sys/stat.h' (BSD):  *note Testing File Type::.

`int SIGABRT'
     `signal.h' (ISO):  *note Program Error Signals::.

`int sigaction (int SIGNUM, const struct sigaction *restrict ACTION, struct sigaction *restrict OLD-ACTION)'
     `signal.h' (POSIX.1):  *note Advanced Signal Handling::.

`int sigaddset (sigset_t *SET, int SIGNUM)'
     `signal.h' (POSIX.1):  *note Signal Sets::.

`int SIGALRM'
     `signal.h' (POSIX.1):  *note Alarm Signals::.

`int sigaltstack (const stack_t *restrict STACK, stack_t *restrict OLDSTACK)'
     `signal.h' (XPG):  *note Signal Stack::.

`sig_atomic_t'
     `signal.h' (ISO):  *note Atomic Types::.

`SIG_BLOCK'
     `signal.h' (POSIX.1):  *note Process Signal Mask::.

`int sigblock (int MASK)'
     `signal.h' (BSD):  *note Blocking in BSD::.

`int SIGBUS'
     `signal.h' (BSD):  *note Program Error Signals::.

`int SIGCHLD'
     `signal.h' (POSIX.1):  *note Job Control Signals::.

`int SIGCLD'
     `signal.h' (SVID):  *note Job Control Signals::.

`int SIGCONT'
     `signal.h' (POSIX.1):  *note Job Control Signals::.

`int sigdelset (sigset_t *SET, int SIGNUM)'
     `signal.h' (POSIX.1):  *note Signal Sets::.

`int sigemptyset (sigset_t *SET)'
     `signal.h' (POSIX.1):  *note Signal Sets::.

`int SIGEMT'
     `signal.h' (BSD):  *note Program Error Signals::.

`sighandler_t SIG_ERR'
     `signal.h' (ISO):  *note Basic Signal Handling::.

`int sigfillset (sigset_t *SET)'
     `signal.h' (POSIX.1):  *note Signal Sets::.

`int SIGFPE'
     `signal.h' (ISO):  *note Program Error Signals::.

`sighandler_t'
     `signal.h' (GNU):  *note Basic Signal Handling::.

`int SIGHUP'
     `signal.h' (POSIX.1):  *note Termination Signals::.

`int SIGILL'
     `signal.h' (ISO):  *note Program Error Signals::.

`int SIGINFO'
     `signal.h' (BSD):  *note Miscellaneous Signals::.

`int SIGINT'
     `signal.h' (ISO):  *note Termination Signals::.

`int siginterrupt (int SIGNUM, int FAILFLAG)'
     `signal.h' (BSD):  *note BSD Handler::.

`int SIGIO'
     `signal.h' (BSD):  *note Asynchronous I/O Signals::.

`int SIGIOT'
     `signal.h' (Unix):  *note Program Error Signals::.

`int sigismember (const sigset_t *SET, int SIGNUM)'
     `signal.h' (POSIX.1):  *note Signal Sets::.

`sigjmp_buf'
     `setjmp.h' (POSIX.1):  *note Non-Local Exits and Signals::.

`int SIGKILL'
     `signal.h' (POSIX.1):  *note Termination Signals::.

`void siglongjmp (sigjmp_buf STATE, int VALUE)'
     `setjmp.h' (POSIX.1):  *note Non-Local Exits and Signals::.

`int SIGLOST'
     `signal.h' (GNU):  *note Operation Error Signals::.

`int sigmask (int SIGNUM)'
     `signal.h' (BSD):  *note Blocking in BSD::.

`sighandler_t signal (int SIGNUM, sighandler_t ACTION)'
     `signal.h' (ISO):  *note Basic Signal Handling::.

`int signbit (_float-type_ X)'
     `math.h' (ISO):  *note FP Bit Twiddling::.

`double significand (double X)'
     `math.h' (BSD):  *note Normalization Functions::.

`float significandf (float X)'
     `math.h' (BSD):  *note Normalization Functions::.

`long double significandl (long double X)'
     `math.h' (BSD):  *note Normalization Functions::.

`int sigpause (int MASK)'
     `signal.h' (BSD):  *note Blocking in BSD::.

`int sigpending (sigset_t *SET)'
     `signal.h' (POSIX.1):  *note Checking for Pending Signals::.

`int SIGPIPE'
     `signal.h' (POSIX.1):  *note Operation Error Signals::.

`int SIGPOLL'
     `signal.h' (SVID):  *note Asynchronous I/O Signals::.

`int sigprocmask (int HOW, const sigset_t *restrict SET, sigset_t *restrict OLDSET)'
     `signal.h' (POSIX.1):  *note Process Signal Mask::.

`int SIGPROF'
     `signal.h' (BSD):  *note Alarm Signals::.

`int SIGQUIT'
     `signal.h' (POSIX.1):  *note Termination Signals::.

`int SIGSEGV'
     `signal.h' (ISO):  *note Program Error Signals::.

`int sigsetjmp (sigjmp_buf STATE, int SAVESIGS)'
     `setjmp.h' (POSIX.1):  *note Non-Local Exits and Signals::.

`SIG_SETMASK'
     `signal.h' (POSIX.1):  *note Process Signal Mask::.

`int sigsetmask (int MASK)'
     `signal.h' (BSD):  *note Blocking in BSD::.

`sigset_t'
     `signal.h' (POSIX.1):  *note Signal Sets::.

`int sigstack (struct sigstack *STACK, struct sigstack *OLDSTACK)'
     `signal.h' (BSD):  *note Signal Stack::.

`int SIGSTOP'
     `signal.h' (POSIX.1):  *note Job Control Signals::.

`int sigsuspend (const sigset_t *SET)'
     `signal.h' (POSIX.1):  *note Sigsuspend::.

`int SIGSYS'
     `signal.h' (Unix):  *note Program Error Signals::.

`int SIGTERM'
     `signal.h' (ISO):  *note Termination Signals::.

`int SIGTRAP'
     `signal.h' (BSD):  *note Program Error Signals::.

`int SIGTSTP'
     `signal.h' (POSIX.1):  *note Job Control Signals::.

`int SIGTTIN'
     `signal.h' (POSIX.1):  *note Job Control Signals::.

`int SIGTTOU'
     `signal.h' (POSIX.1):  *note Job Control Signals::.

`SIG_UNBLOCK'
     `signal.h' (POSIX.1):  *note Process Signal Mask::.

`int SIGURG'
     `signal.h' (BSD):  *note Asynchronous I/O Signals::.

`int SIGUSR1'
     `signal.h' (POSIX.1):  *note Miscellaneous Signals::.

`int SIGUSR2'
     `signal.h' (POSIX.1):  *note Miscellaneous Signals::.

`int sigvec (int SIGNUM, const struct sigvec *ACTION, struct sigvec *OLD-ACTION)'
     `signal.h' (BSD):  *note BSD Handler::.

`int SIGVTALRM'
     `signal.h' (BSD):  *note Alarm Signals::.

`int SIGWINCH'
     `signal.h' (BSD):  *note Miscellaneous Signals::.

`int SIGXCPU'
     `signal.h' (BSD):  *note Operation Error Signals::.

`int SIGXFSZ'
     `signal.h' (BSD):  *note Operation Error Signals::.

`double sin (double X)'
     `math.h' (ISO):  *note Trig Functions::.

`void sincos (double X, double *SINX, double *COSX)'
     `math.h' (GNU):  *note Trig Functions::.

`void sincosf (float X, float *SINX, float *COSX)'
     `math.h' (GNU):  *note Trig Functions::.

`void sincosl (long double X, long double *SINX, long double *COSX)'
     `math.h' (GNU):  *note Trig Functions::.

`float sinf (float X)'
     `math.h' (ISO):  *note Trig Functions::.

`double sinh (double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`float sinhf (float X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double sinhl (long double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double sinl (long double X)'
     `math.h' (ISO):  *note Trig Functions::.

`S_IREAD'
     `sys/stat.h' (BSD):  *note Permission Bits::.

`S_IRGRP'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IROTH'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IRUSR'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IRWXG'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IRWXO'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IRWXU'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`int S_ISBLK (mode_t M)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`int S_ISCHR (mode_t M)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`int S_ISDIR (mode_t M)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`int S_ISFIFO (mode_t M)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`S_ISGID'
     `sys/stat.h' (POSIX):  *note Permission Bits::.

`int S_ISLNK (mode_t M)'
     `sys/stat.h' (GNU):  *note Testing File Type::.

`int S_ISREG (mode_t M)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`int S_ISSOCK (mode_t M)'
     `sys/stat.h' (GNU):  *note Testing File Type::.

`S_ISUID'
     `sys/stat.h' (POSIX):  *note Permission Bits::.

`S_ISVTX'
     `sys/stat.h' (BSD):  *note Permission Bits::.

`S_IWGRP'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IWOTH'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IWRITE'
     `sys/stat.h' (BSD):  *note Permission Bits::.

`S_IWUSR'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IXGRP'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IXOTH'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`S_IXUSR'
     `sys/stat.h' (POSIX.1):  *note Permission Bits::.

`size_t'
     `stddef.h' (ISO):  *note Important Data Types::.

`unsigned int sleep (unsigned int SECONDS)'
     `unistd.h' (POSIX.1):  *note Sleeping::.

`int snprintf (char *S, size_t SIZE, const char *TEMPLATE, ...)'
     `stdio.h' (GNU):  *note Formatted Output Functions::.

`SO_BROADCAST'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`int SOCK_DGRAM'
     `sys/socket.h' (BSD):  *note Communication Styles::.

`int socket (int NAMESPACE, int STYLE, int PROTOCOL)'
     `sys/socket.h' (BSD):  *note Creating a Socket::.

`int socketpair (int NAMESPACE, int STYLE, int PROTOCOL, int FILEDES[2])'
     `sys/socket.h' (BSD):  *note Socket Pairs::.

`int SOCK_RAW'
     `sys/socket.h' (BSD):  *note Communication Styles::.

`int SOCK_RDM'
     `sys/socket.h' (BSD):  *note Communication Styles::.

`int SOCK_SEQPACKET'
     `sys/socket.h' (BSD):  *note Communication Styles::.

`int SOCK_STREAM'
     `sys/socket.h' (BSD):  *note Communication Styles::.

`SO_DEBUG'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_DONTROUTE'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_ERROR'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_KEEPALIVE'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_LINGER'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`int SOL_SOCKET'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_OOBINLINE'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_RCVBUF'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_REUSEADDR'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_SNDBUF'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`SO_STYLE'
     `sys/socket.h' (GNU):  *note Socket-Level Options::.

`SO_TYPE'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`speed_t'
     `termios.h' (POSIX.1):  *note Line Speed::.

`int sprintf (char *S, const char *TEMPLATE, ...)'
     `stdio.h' (ISO):  *note Formatted Output Functions::.

`double sqrt (double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`float sqrtf (float X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`long double sqrtl (long double X)'
     `math.h' (ISO):  *note Exponents and Logarithms::.

`void srand (unsigned int SEED)'
     `stdlib.h' (ISO):  *note ISO Random::.

`void srand48 (long int SEEDVAL)'
     `stdlib.h' (SVID):  *note SVID Random::.

`int srand48_r (long int SEEDVAL, struct drand48_data *BUFFER)'
     `stdlib.h' (GNU):  *note SVID Random::.

`void srandom (unsigned int SEED)'
     `stdlib.h' (BSD):  *note BSD Random::.

`int srandom_r (unsigned int SEED, struct random_data *BUF)'
     `stdlib.h' (GNU):  *note BSD Random::.

`int sscanf (const char *S, const char *TEMPLATE, ...)'
     `stdio.h' (ISO):  *note Formatted Input Functions::.

`sighandler_t ssignal (int SIGNUM, sighandler_t ACTION)'
     `signal.h' (SVID):  *note Basic Signal Handling::.

`ssize_t SSIZE_MAX'
     `limits.h' (POSIX.1):  *note General Limits::.

`ssize_t'
     `unistd.h' (POSIX.1):  *note I/O Primitives::.

`stack_t'
     `signal.h' (XPG):  *note Signal Stack::.

`int stat (const char *FILENAME, struct stat *BUF)'
     `sys/stat.h' (POSIX.1):  *note Reading Attributes::.

`int stat64 (const char *FILENAME, struct stat64 *BUF)'
     `sys/stat.h' (Unix98):  *note Reading Attributes::.

`FILE * stderr'
     `stdio.h' (ISO):  *note Standard Streams::.

`STDERR_FILENO'
     `unistd.h' (POSIX.1):  *note Descriptors and Streams::.

`FILE * stdin'
     `stdio.h' (ISO):  *note Standard Streams::.

`STDIN_FILENO'
     `unistd.h' (POSIX.1):  *note Descriptors and Streams::.

`FILE * stdout'
     `stdio.h' (ISO):  *note Standard Streams::.

`STDOUT_FILENO'
     `unistd.h' (POSIX.1):  *note Descriptors and Streams::.

`int stime (const time_t *NEWTIME)'
     `time.h' (SVID, XPG):  *note Simple Calendar Time::.

`char * stpcpy (char *restrict TO, const char *restrict FROM)'
     `string.h' (Unknown origin):  *note Copying and Concatenation::.

`char * stpncpy (char *restrict TO, const char *restrict FROM, size_t SIZE)'
     `string.h' (GNU):  *note Copying and Concatenation::.

`int strcasecmp (const char *S1, const char *S2)'
     `string.h' (BSD):  *note String/Array Comparison::.

`char * strcasestr (const char *HAYSTACK, const char *NEEDLE)'
     `string.h' (GNU):  *note Search Functions::.

`char * strcat (char *restrict TO, const char *restrict FROM)'
     `string.h' (ISO):  *note Copying and Concatenation::.

`char * strchr (const char *STRING, int C)'
     `string.h' (ISO):  *note Search Functions::.

`char * strchrnul (const char *STRING, int C)'
     `string.h' (GNU):  *note Search Functions::.

`int strcmp (const char *S1, const char *S2)'
     `string.h' (ISO):  *note String/Array Comparison::.

`int strcoll (const char *S1, const char *S2)'
     `string.h' (ISO):  *note Collation Functions::.

`char * strcpy (char *restrict TO, const char *restrict FROM)'
     `string.h' (ISO):  *note Copying and Concatenation::.

`size_t strcspn (const char *STRING, const char *STOPSET)'
     `string.h' (ISO):  *note Search Functions::.

`char * strdup (const char *S)'
     `string.h' (SVID):  *note Copying and Concatenation::.

`char * strdupa (const char *S)'
     `string.h' (GNU):  *note Copying and Concatenation::.

`int STREAM_MAX'
     `limits.h' (POSIX.1):  *note General Limits::.

`char * strerror (int ERRNUM)'
     `string.h' (ISO):  *note Error Messages::.

`char * strerror_r (int ERRNUM, char *BUF, size_t N)'
     `string.h' (GNU):  *note Error Messages::.

`char * strfry (char *STRING)'
     `string.h' (GNU):  *note strfry::.

`size_t strftime (char *S, size_t SIZE, const char *TEMPLATE, const struct tm *BROKENTIME)'
     `time.h' (ISO):  *note Formatting Calendar Time::.

`size_t strlen (const char *S)'
     `string.h' (ISO):  *note String Length::.

`int strncasecmp (const char *S1, const char *S2, size_t N)'
     `string.h' (BSD):  *note String/Array Comparison::.

`char * strncat (char *restrict TO, const char *restrict FROM, size_t SIZE)'
     `string.h' (ISO):  *note Copying and Concatenation::.

`int strncmp (const char *S1, const char *S2, size_t SIZE)'
     `string.h' (ISO):  *note String/Array Comparison::.

`char * strncpy (char *restrict TO, const char *restrict FROM, size_t SIZE)'
     `string.h' (ISO):  *note Copying and Concatenation::.

`char * strndup (const char *S, size_t SIZE)'
     `string.h' (GNU):  *note Copying and Concatenation::.

`char * strndupa (const char *S, size_t SIZE)'
     `string.h' (GNU):  *note Copying and Concatenation::.

`size_t strnlen (const char *S, size_t MAXLEN)'
     `string.h' (GNU):  *note String Length::.

`char * strpbrk (const char *STRING, const char *STOPSET)'
     `string.h' (ISO):  *note Search Functions::.

`char * strptime (const char *S, const char *FMT, struct tm *TP)'
     `time.h' (XPG4):  *note Low-Level Time String Parsing::.

`char * strrchr (const char *STRING, int C)'
     `string.h' (ISO):  *note Search Functions::.

`char * strsep (char **STRING_PTR, const char *DELIMITER)'
     `string.h' (BSD):  *note Finding Tokens in a String::.

`char * strsignal (int SIGNUM)'
     `string.h' (GNU):  *note Signal Messages::.

`size_t strspn (const char *STRING, const char *SKIPSET)'
     `string.h' (ISO):  *note Search Functions::.

`char * strstr (const char *HAYSTACK, const char *NEEDLE)'
     `string.h' (ISO):  *note Search Functions::.

`double strtod (const char *restrict STRING, char **restrict TAILPTR)'
     `stdlib.h' (ISO):  *note Parsing of Floats::.

`float strtof (const char *STRING, char **TAILPTR)'
     `stdlib.h' (ISO):  *note Parsing of Floats::.

`intmax_t strtoimax (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
     `inttypes.h' (ISO):  *note Parsing of Integers::.

`char * strtok (char *restrict NEWSTRING, const char *restrict DELIMITERS)'
     `string.h' (ISO):  *note Finding Tokens in a String::.

`char * strtok_r (char *NEWSTRING, const char *DELIMITERS, char **SAVE_PTR)'
     `string.h' (POSIX):  *note Finding Tokens in a String::.

`long int strtol (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
     `stdlib.h' (ISO):  *note Parsing of Integers::.

`long double strtold (const char *STRING, char **TAILPTR)'
     `stdlib.h' (ISO):  *note Parsing of Floats::.

`long long int strtoll (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
     `stdlib.h' (ISO):  *note Parsing of Integers::.

`long long int strtoq (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
     `stdlib.h' (BSD):  *note Parsing of Integers::.

`unsigned long int strtoul (const char *retrict STRING, char **restrict TAILPTR, int BASE)'
     `stdlib.h' (ISO):  *note Parsing of Integers::.

`unsigned long long int strtoull (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
     `stdlib.h' (ISO):  *note Parsing of Integers::.

`uintmax_t strtoumax (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
     `inttypes.h' (ISO):  *note Parsing of Integers::.

`unsigned long long int strtouq (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
     `stdlib.h' (BSD):  *note Parsing of Integers::.

`struct aiocb'
     `aio.h' (POSIX.1b):  *note Asynchronous I/O::.

`struct aiocb64'
     `aio.h' (POSIX.1b):  *note Asynchronous I/O::.

`struct aioinit'
     `aio.h' (GNU):  *note Configuration of AIO::.

`struct argp'
     `argp.h' (GNU):  *note Argp Parsers::.

`struct argp_child'
     `argp.h' (GNU):  *note Argp Children::.

`struct argp_option'
     `argp.h' (GNU):  *note Argp Option Vectors::.

`struct argp_state'
     `argp.h' (GNU):  *note Argp Parsing State::.

`struct dirent'
     `dirent.h' (POSIX.1):  *note Directory Entries::.

`struct exit_status'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`struct flock'
     `fcntl.h' (POSIX.1):  *note File Locks::.

`struct fstab'
     `fstab.h' (BSD):  *note fstab::.

`struct FTW'
     `ftw.h' (XPG4.2):  *note Working with Directory Trees::.

`struct __gconv_step'
     `gconv.h' (GNU):  *note glibc iconv Implementation::.

`struct __gconv_step_data'
     `gconv.h' (GNU):  *note glibc iconv Implementation::.

`struct group'
     `grp.h' (POSIX.1):  *note Group Data Structure::.

`struct hostent'
     `netdb.h' (BSD):  *note Host Names::.

`struct if_nameindex'
     `net/if.h' (IPv6 basic API):  *note Interface Naming::.

`struct in6_addr'
     `netinet/in.h' (IPv6 basic API):  *note Host Address Data Type::.

`struct in_addr'
     `netinet/in.h' (BSD):  *note Host Address Data Type::.

`struct iovec'
     `sys/uio.h' (BSD):  *note Scatter-Gather::.

`struct itimerval'
     `sys/time.h' (BSD):  *note Setting an Alarm::.

`struct lconv'
     `locale.h' (ISO):  *note The Lame Way to Locale Data::.

`struct linger'
     `sys/socket.h' (BSD):  *note Socket-Level Options::.

`struct mallinfo'
     `malloc.h' (GNU):  *note Statistics of Malloc::.

`struct mntent'
     `mntent.h' (BSD):  *note mtab::.

`struct msghdr'
     `sys/socket.h' (BSD):  *note Receiving Datagrams::.

`struct netent'
     `netdb.h' (BSD):  *note Networks Database::.

`struct obstack'
     `obstack.h' (GNU):  *note Creating Obstacks::.

`struct option'
     `getopt.h' (GNU):  *note Getopt Long Options::.

`struct passwd'
     `pwd.h' (POSIX.1):  *note User Data Structure::.

`struct printf_info'
     `printf.h' (GNU):  *note Conversion Specifier Options::.

`struct protoent'
     `netdb.h' (BSD):  *note Protocols Database::.

`struct random_data'
     `stdlib.h' (GNU):  *note BSD Random::.

`struct rlimit'
     `sys/resource.h' (BSD):  *note Limits on Resources::.

`struct rlimit64'
     `sys/resource.h' (Unix98):  *note Limits on Resources::.

`struct rusage'
     `sys/resource.h' (BSD):  *note Resource Usage::.

`struct sched_param'
     `sched.h' (POSIX):  *note Basic Scheduling Functions::.

`struct servent'
     `netdb.h' (BSD):  *note Services Database::.

`struct sgttyb'
     `termios.h' (BSD):  *note BSD Terminal Modes::.

`struct sigaction'
     `signal.h' (POSIX.1):  *note Advanced Signal Handling::.

`struct sigstack'
     `signal.h' (BSD):  *note Signal Stack::.

`struct sigvec'
     `signal.h' (BSD):  *note BSD Handler::.

`struct sockaddr'
     `sys/socket.h' (BSD):  *note Address Formats::.

`struct sockaddr_in'
     `netinet/in.h' (BSD):  *note Internet Address Formats::.

`struct sockaddr_un'
     `sys/un.h' (BSD):  *note Local Namespace Details::.

`struct stat'
     `sys/stat.h' (POSIX.1):  *note Attribute Meanings::.

`struct stat64'
     `sys/stat.h' (LFS):  *note Attribute Meanings::.

`struct termios'
     `termios.h' (POSIX.1):  *note Mode Data Types::.

`struct timespec'
     `sys/time.h' (POSIX.1):  *note Elapsed Time::.

`struct timeval'
     `sys/time.h' (BSD):  *note Elapsed Time::.

`struct timezone'
     `sys/time.h' (BSD):  *note High-Resolution Calendar::.

`struct tm'
     `time.h' (ISO):  *note Broken-down Time::.

`struct tms'
     `sys/times.h' (POSIX.1):  *note Processor Time::.

`struct utimbuf'
     `utime.h' (POSIX.1):  *note File Times::.

`struct utsname'
     `sys/utsname.h' (POSIX.1):  *note Platform Type::.

`int strverscmp (const char *S1, const char *S2)'
     `string.h' (GNU):  *note String/Array Comparison::.

`size_t strxfrm (char *restrict TO, const char *restrict FROM, size_t SIZE)'
     `string.h' (ISO):  *note Collation Functions::.

`int stty (int FILEDES, const struct sgttyb *ATTRIBUTES)'
     `sgtty.h' (BSD):  *note BSD Terminal Modes::.

`int S_TYPEISMQ (struct stat *S)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`int S_TYPEISSEM (struct stat *S)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`int S_TYPEISSHM (struct stat *S)'
     `sys/stat.h' (POSIX):  *note Testing File Type::.

`int SUN_LEN (_struct sockaddr_un *_ PTR)'
     `sys/un.h' (BSD):  *note Local Namespace Details::.

`_SVID_SOURCE'
     (GNU):  *note Feature Test Macros::.

`int SV_INTERRUPT'
     `signal.h' (BSD):  *note BSD Handler::.

`int SV_ONSTACK'
     `signal.h' (BSD):  *note BSD Handler::.

`int SV_RESETHAND'
     `signal.h' (Sun):  *note BSD Handler::.

`int swapcontext (ucontext_t *restrict OUCP, const ucontext_t *restrict UCP)'
     `ucontext.h' (SVID):  *note System V contexts::.

`int swprintf (wchar_t *S, size_t SIZE, const wchar_t *TEMPLATE, ...)'
     `wchar.h' (GNU):  *note Formatted Output Functions::.

`int swscanf (const wchar_t *WS, const wchar_t *TEMPLATE, ...)'
     `wchar.h' (ISO):  *note Formatted Input Functions::.

`int symlink (const char *OLDNAME, const char *NEWNAME)'
     `unistd.h' (BSD):  *note Symbolic Links::.

`SYMLINK_MAX'
     `limits.h' (POSIX.1):  *note File Minimums::.

`void sync (void)'
     `unistd.h' (X/Open):  *note Synchronizing I/O::.

`long int syscall (long int SYSNO, ...)'
     `unistd.h' (???):  *note System Calls::.

`long int sysconf (int PARAMETER)'
     `unistd.h' (POSIX.1):  *note Sysconf Definition::.

`int sysctl (int *NAMES, int NLEN, void *OLDVAL, size_t *OLDLENP, void *NEWVAL, size_t NEWLEN)'
     `sys/sysctl.h' (BSD):  *note System Parameters::.

`void syslog (int FACILITY_PRIORITY, const char *FORMAT, ...)'
     `syslog.h' (BSD):  *note syslog; vsyslog::.

`int system (const char *COMMAND)'
     `stdlib.h' (ISO):  *note Running a Command::.

`sighandler_t sysv_signal (int SIGNUM, sighandler_t ACTION)'
     `signal.h' (GNU):  *note Basic Signal Handling::.

`double tan (double X)'
     `math.h' (ISO):  *note Trig Functions::.

`float tanf (float X)'
     `math.h' (ISO):  *note Trig Functions::.

`double tanh (double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`float tanhf (float X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double tanhl (long double X)'
     `math.h' (ISO):  *note Hyperbolic Functions::.

`long double tanl (long double X)'
     `math.h' (ISO):  *note Trig Functions::.

`int tcdrain (int FILEDES)'
     `termios.h' (POSIX.1):  *note Line Control::.

`tcflag_t'
     `termios.h' (POSIX.1):  *note Mode Data Types::.

`int tcflow (int FILEDES, int ACTION)'
     `termios.h' (POSIX.1):  *note Line Control::.

`int tcflush (int FILEDES, int QUEUE)'
     `termios.h' (POSIX.1):  *note Line Control::.

`int tcgetattr (int FILEDES, struct termios *TERMIOS-P)'
     `termios.h' (POSIX.1):  *note Mode Functions::.

`pid_t tcgetpgrp (int FILEDES)'
     `unistd.h' (POSIX.1):  *note Terminal Access Functions::.

`pid_t tcgetsid (int FILDES)'
     `termios.h' (Unix98):  *note Terminal Access Functions::.

`TCSADRAIN'
     `termios.h' (POSIX.1):  *note Mode Functions::.

`TCSAFLUSH'
     `termios.h' (POSIX.1):  *note Mode Functions::.

`TCSANOW'
     `termios.h' (POSIX.1):  *note Mode Functions::.

`TCSASOFT'
     `termios.h' (BSD):  *note Mode Functions::.

`int tcsendbreak (int FILEDES, int DURATION)'
     `termios.h' (POSIX.1):  *note Line Control::.

`int tcsetattr (int FILEDES, int WHEN, const struct termios *TERMIOS-P)'
     `termios.h' (POSIX.1):  *note Mode Functions::.

`int tcsetpgrp (int FILEDES, pid_t PGID)'
     `unistd.h' (POSIX.1):  *note Terminal Access Functions::.

`void * tdelete (const void *KEY, void **ROOTP, comparison_fn_t COMPAR)'
     `search.h' (SVID):  *note Tree Search Function::.

`void tdestroy (void *VROOT, __free_fn_t FREEFCT)'
     `search.h' (GNU):  *note Tree Search Function::.

`long int telldir (DIR *DIRSTREAM)'
     `dirent.h' (BSD):  *note Random Access Directory::.

`TEMP_FAILURE_RETRY (EXPRESSION)'
     `unistd.h' (GNU):  *note Interrupted Primitives::.

`char * tempnam (const char *DIR, const char *PREFIX)'
     `stdio.h' (SVID):  *note Temporary Files::.

`char * textdomain (const char *DOMAINNAME)'
     `libintl.h' (GNU):  *note Locating gettext catalog::.

`void * tfind (const void *KEY, void *const *ROOTP, comparison_fn_t COMPAR)'
     `search.h' (SVID):  *note Tree Search Function::.

`double tgamma (double X)'
     `math.h' (XPG, ISO):  *note Special Functions::.

`float tgammaf (float X)'
     `math.h' (XPG, ISO):  *note Special Functions::.

`long double tgammal (long double X)'
     `math.h' (XPG, ISO):  *note Special Functions::.

`time_t time (time_t *RESULT)'
     `time.h' (ISO):  *note Simple Calendar Time::.

`time_t timegm (struct tm *BROKENTIME)'
     `time.h' (???):  *note Broken-down Time::.

`time_t timelocal (struct tm *BROKENTIME)'
     `time.h' (???):  *note Broken-down Time::.

`clock_t times (struct tms *BUFFER)'
     `sys/times.h' (POSIX.1):  *note Processor Time::.

`time_t'
     `time.h' (ISO):  *note Simple Calendar Time::.

`long int timezone'
     `time.h' (SVID):  *note Time Zone Functions::.

`FILE * tmpfile (void)'
     `stdio.h' (ISO):  *note Temporary Files::.

`FILE * tmpfile64 (void)'
     `stdio.h' (Unix98):  *note Temporary Files::.

`int TMP_MAX'
     `stdio.h' (ISO):  *note Temporary Files::.

`char * tmpnam (char *RESULT)'
     `stdio.h' (ISO):  *note Temporary Files::.

`char * tmpnam_r (char *RESULT)'
     `stdio.h' (GNU):  *note Temporary Files::.

`int toascii (int C)'
     `ctype.h' (SVID, BSD):  *note Case Conversion::.

`int _tolower (int C)'
     `ctype.h' (SVID):  *note Case Conversion::.

`int tolower (int C)'
     `ctype.h' (ISO):  *note Case Conversion::.

`tcflag_t TOSTOP'
     `termios.h' (POSIX.1):  *note Local Modes::.

`int _toupper (int C)'
     `ctype.h' (SVID):  *note Case Conversion::.

`int toupper (int C)'
     `ctype.h' (ISO):  *note Case Conversion::.

`wint_t towctrans (wint_t WC, wctrans_t DESC)'
     `wctype.h' (ISO):  *note Wide Character Case Conversion::.

`wint_t towlower (wint_t WC)'
     `wctype.h' (ISO):  *note Wide Character Case Conversion::.

`wint_t towupper (wint_t WC)'
     `wctype.h' (ISO):  *note Wide Character Case Conversion::.

`double trunc (double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`int truncate (const char *FILENAME, off_t LENGTH)'
     `unistd.h' (X/Open):  *note File Size::.

`int truncate64 (const char *NAME, off64_t LENGTH)'
     `unistd.h' (Unix98):  *note File Size::.

`float truncf (float X)'
     `math.h' (ISO):  *note Rounding Functions::.

`long double truncl (long double X)'
     `math.h' (ISO):  *note Rounding Functions::.

`TRY_AGAIN'
     `netdb.h' (BSD):  *note Host Names::.

`void * tsearch (const void *KEY, void **ROOTP, comparison_fn_t COMPAR)'
     `search.h' (SVID):  *note Tree Search Function::.

`char * ttyname (int FILEDES)'
     `unistd.h' (POSIX.1):  *note Is It a Terminal::.

`int ttyname_r (int FILEDES, char *BUF, size_t LEN)'
     `unistd.h' (POSIX.1):  *note Is It a Terminal::.

`void twalk (const void *ROOT, __action_fn_t ACTION)'
     `search.h' (SVID):  *note Tree Search Function::.

`char * tzname [2]'
     `time.h' (POSIX.1):  *note Time Zone Functions::.

`int TZNAME_MAX'
     `limits.h' (POSIX.1):  *note General Limits::.

`void tzset (void)'
     `time.h' (POSIX.1):  *note Time Zone Functions::.

`UCHAR_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`ucontext_t'
     `ucontext.h' (SVID):  *note System V contexts::.

`uid_t'
     `sys/types.h' (POSIX.1):  *note Reading Persona::.

`UINT_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`long int ulimit (int CMD, ...)'
     `ulimit.h' (BSD):  *note Limits on Resources::.

`ULLONG_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`ULONG_LONG_MAX'
     `limits.h' (GNU):  *note Range of Type::.

`ULONG_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`mode_t umask (mode_t MASK)'
     `sys/stat.h' (POSIX.1):  *note Setting Permissions::.

`int umount (const char *FILE)'
     `sys/mount.h' (SVID, GNU):  *note Mount-Unmount-Remount::.

`int umount2 (const char *FILE, int FLAGS)'
     `sys/mount.h' (GNU):  *note Mount-Unmount-Remount::.

`int uname (struct utsname *INFO)'
     `sys/utsname.h' (POSIX.1):  *note Platform Type::.

`int ungetc (int C, FILE *STREAM)'
     `stdio.h' (ISO):  *note How Unread::.

`wint_t ungetwc (wint_t WC, FILE *STREAM)'
     `wchar.h' (ISO):  *note How Unread::.

`union wait'
     `sys/wait.h' (BSD):  *note BSD Wait Functions::.

`int unlink (const char *FILENAME)'
     `unistd.h' (POSIX.1):  *note Deleting Files::.

`int unlockpt (int FILEDES)'
     `stdlib.h' (SVID, XPG4.2):  *note Allocation::.

`int unsetenv (const char *NAME)'
     `stdlib.h' (BSD):  *note Environment Access::.

`void updwtmp (const char *WTMP_FILE, const struct utmp *UTMP)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`USER_PROCESS'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`USER_PROCESS'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`USHRT_MAX'
     `limits.h' (ISO):  *note Range of Type::.

`int utime (const char *FILENAME, const struct utimbuf *TIMES)'
     `utime.h' (POSIX.1):  *note File Times::.

`int utimes (const char *FILENAME, const struct timeval TVP[2])'
     `sys/time.h' (BSD):  *note File Times::.

`int utmpname (const char *FILE)'
     `utmp.h' (SVID):  *note Manipulating the Database::.

`int utmpxname (const char *FILE)'
     `utmpx.h' (XPG4.2):  *note XPG Functions::.

`TYPE va_arg (va_list AP, TYPE)'
     `stdarg.h' (ISO):  *note Argument Macros::.

`void va_copy (va_list DEST, va_list SRC)'
     `stdarg.h' (ISO):  *note Argument Macros::.

`void va_end (va_list AP)'
     `stdarg.h' (ISO):  *note Argument Macros::.

`va_list'
     `stdarg.h' (ISO):  *note Argument Macros::.

`void * valloc (size_t SIZE)'
     `malloc.h', `stdlib.h' (BSD):  *note Aligned Memory Blocks::.

`int vasprintf (char **PTR, const char *TEMPLATE, va_list AP)'
     `stdio.h' (GNU):  *note Variable Arguments Output::.

`void va_start (va_list AP, LAST-REQUIRED)'
     `stdarg.h' (ISO):  *note Argument Macros::.

`int VDISCARD'
     `termios.h' (BSD):  *note Other Special::.

`int VDSUSP'
     `termios.h' (BSD):  *note Signal Characters::.

`int VEOF'
     `termios.h' (POSIX.1):  *note Editing Characters::.

`int VEOL'
     `termios.h' (POSIX.1):  *note Editing Characters::.

`int VEOL2'
     `termios.h' (BSD):  *note Editing Characters::.

`int VERASE'
     `termios.h' (POSIX.1):  *note Editing Characters::.

`void verr (int STATUS, const char *FORMAT, va_list AP)'
     `err.h' (BSD):  *note Error Messages::.

`void verrx (int STATUS, const char *FORMAT, va_list AP)'
     `err.h' (BSD):  *note Error Messages::.

`int versionsort (const void *A, const void *B)'
     `dirent.h' (GNU):  *note Scanning Directory Content::.

`int versionsort64 (const void *A, const void *B)'
     `dirent.h' (GNU):  *note Scanning Directory Content::.

`pid_t vfork (void)'
     `unistd.h' (BSD):  *note Creating a Process::.

`int vfprintf (FILE *STREAM, const char *TEMPLATE, va_list AP)'
     `stdio.h' (ISO):  *note Variable Arguments Output::.

`int vfscanf (FILE *STREAM, const char *TEMPLATE, va_list AP)'
     `stdio.h' (ISO):  *note Variable Arguments Input::.

`int vfwprintf (FILE *STREAM, const wchar_t *TEMPLATE, va_list AP)'
     `wchar.h' (ISO):  *note Variable Arguments Output::.

`int vfwscanf (FILE *STREAM, const wchar_t *TEMPLATE, va_list AP)'
     `wchar.h' (ISO):  *note Variable Arguments Input::.

`int VINTR'
     `termios.h' (POSIX.1):  *note Signal Characters::.

`int VKILL'
     `termios.h' (POSIX.1):  *note Editing Characters::.

`int vlimit (int RESOURCE, int LIMIT)'
     `sys/vlimit.h' (BSD):  *note Limits on Resources::.

`int VLNEXT'
     `termios.h' (BSD):  *note Other Special::.

`int VMIN'
     `termios.h' (POSIX.1):  *note Noncanonical Input::.

`void (*error_print_progname) (void)'
     `error.h' (GNU):  *note Error Messages::.

`int vprintf (const char *TEMPLATE, va_list AP)'
     `stdio.h' (ISO):  *note Variable Arguments Output::.

`int VQUIT'
     `termios.h' (POSIX.1):  *note Signal Characters::.

`int VREPRINT'
     `termios.h' (BSD):  *note Editing Characters::.

`int vscanf (const char *TEMPLATE, va_list AP)'
     `stdio.h' (ISO):  *note Variable Arguments Input::.

`int vsnprintf (char *S, size_t SIZE, const char *TEMPLATE, va_list AP)'
     `stdio.h' (GNU):  *note Variable Arguments Output::.

`int vsprintf (char *S, const char *TEMPLATE, va_list AP)'
     `stdio.h' (ISO):  *note Variable Arguments Output::.

`int vsscanf (const char *S, const char *TEMPLATE, va_list AP)'
     `stdio.h' (ISO):  *note Variable Arguments Input::.

`int VSTART'
     `termios.h' (POSIX.1):  *note Start/Stop Characters::.

`int VSTATUS'
     `termios.h' (BSD):  *note Other Special::.

`int VSTOP'
     `termios.h' (POSIX.1):  *note Start/Stop Characters::.

`int VSUSP'
     `termios.h' (POSIX.1):  *note Signal Characters::.

`int vswprintf (wchar_t *S, size_t SIZE, const wchar_t *TEMPLATE, va_list AP)'
     `wchar.h' (GNU):  *note Variable Arguments Output::.

`int vswscanf (const wchar_t *S, const wchar_t *TEMPLATE, va_list AP)'
     `wchar.h' (ISO):  *note Variable Arguments Input::.

`void vsyslog (int FACILITY_PRIORITY, const char *FORMAT, va_list ARGLIST)'
     `syslog.h' (BSD):  *note syslog; vsyslog::.

`int VTIME'
     `termios.h' (POSIX.1):  *note Noncanonical Input::.

`int vtimes (struct vtimes *CURRENT, struct vtimes *CHILD)'
     `sys/vtimes.h' (sys/vtimes.h):  *note Resource Usage::.

`void vwarn (const char *FORMAT, va_list AP)'
     `err.h' (BSD):  *note Error Messages::.

`void vwarnx (const char *FORMAT, va_list AP)'
     `err.h' (BSD):  *note Error Messages::.

`int VWERASE'
     `termios.h' (BSD):  *note Editing Characters::.

`int vwprintf (const wchar_t *TEMPLATE, va_list AP)'
     `wchar.h' (ISO):  *note Variable Arguments Output::.

`int vwscanf (const wchar_t *TEMPLATE, va_list AP)'
     `wchar.h' (ISO):  *note Variable Arguments Input::.

`pid_t wait (int *STATUS-PTR)'
     `sys/wait.h' (POSIX.1):  *note Process Completion::.

`pid_t wait3 (union wait *STATUS-PTR, int OPTIONS, struct rusage *USAGE)'
     `sys/wait.h' (BSD):  *note BSD Wait Functions::.

`pid_t wait4 (pid_t PID, int *STATUS-PTR, int OPTIONS, struct rusage *USAGE)'
     `sys/wait.h' (BSD):  *note Process Completion::.

`pid_t waitpid (pid_t PID, int *STATUS-PTR, int OPTIONS)'
     `sys/wait.h' (POSIX.1):  *note Process Completion::.

`void warn (const char *FORMAT, ...)'
     `err.h' (BSD):  *note Error Messages::.

`void warnx (const char *FORMAT, ...)'
     `err.h' (BSD):  *note Error Messages::.

`WCHAR_MAX'
     `limits.h' (GNU):  *note Range of Type::.

`wint_t WCHAR_MAX'
     `wchar.h' (ISO):  *note Extended Char Intro::.

`wint_t WCHAR_MIN'
     `wchar.h' (ISO):  *note Extended Char Intro::.

`wchar_t'
     `stddef.h' (ISO):  *note Extended Char Intro::.

`int WCOREDUMP (int STATUS)'
     `sys/wait.h' (BSD):  *note Process Completion Status::.

`wchar_t * wcpcpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM)'
     `wchar.h' (GNU):  *note Copying and Concatenation::.

`wchar_t * wcpncpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
     `wchar.h' (GNU):  *note Copying and Concatenation::.

`size_t wcrtomb (char *restrict S, wchar_t WC, mbstate_t *restrict PS)'
     `wchar.h' (ISO):  *note Converting a Character::.

`int wcscasecmp (const wchar_t *WS1, const wchar_t *WS2)'
     `wchar.h' (GNU):  *note String/Array Comparison::.

`wchar_t * wcscat (wchar_t *restrict WTO, const wchar_t *restrict WFROM)'
     `wchar.h' (ISO):  *note Copying and Concatenation::.

`wchar_t * wcschr (const wchar_t *WSTRING, int WC)'
     `wchar.h' (ISO):  *note Search Functions::.

`wchar_t * wcschrnul (const wchar_t *WSTRING, wchar_t WC)'
     `wchar.h' (GNU):  *note Search Functions::.

`int wcscmp (const wchar_t *WS1, const wchar_t *WS2)'
     `wchar.h' (ISO):  *note String/Array Comparison::.

`int wcscoll (const wchar_t *WS1, const wchar_t *WS2)'
     `wchar.h' (ISO):  *note Collation Functions::.

`wchar_t * wcscpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM)'
     `wchar.h' (ISO):  *note Copying and Concatenation::.

`size_t wcscspn (const wchar_t *WSTRING, const wchar_t *STOPSET)'
     `wchar.h' (ISO):  *note Search Functions::.

`wchar_t * wcsdup (const wchar_t *WS)'
     `wchar.h' (GNU):  *note Copying and Concatenation::.

`size_t wcsftime (wchar_t *S, size_t SIZE, const wchar_t *TEMPLATE, const struct tm *BROKENTIME)'
     `time.h' (ISO/Amend1):  *note Formatting Calendar Time::.

`size_t wcslen (const wchar_t *WS)'
     `wchar.h' (ISO):  *note String Length::.

`int wcsncasecmp (const wchar_t *WS1, const wchar_t *S2, size_t N)'
     `wchar.h' (GNU):  *note String/Array Comparison::.

`wchar_t * wcsncat (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
     `wchar.h' (ISO):  *note Copying and Concatenation::.

`int wcsncmp (const wchar_t *WS1, const wchar_t *WS2, size_t SIZE)'
     `wchar.h' (ISO):  *note String/Array Comparison::.

`wchar_t * wcsncpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
     `wchar.h' (ISO):  *note Copying and Concatenation::.

`size_t wcsnlen (const wchar_t *WS, size_t MAXLEN)'
     `wchar.h' (GNU):  *note String Length::.

`size_t wcsnrtombs (char *restrict DST, const wchar_t **restrict SRC, size_t NWC, size_t LEN, mbstate_t *restrict PS)'
     `wchar.h' (GNU):  *note Converting Strings::.

`wchar_t * wcspbrk (const wchar_t *WSTRING, const wchar_t *STOPSET)'
     `wchar.h' (ISO):  *note Search Functions::.

`wchar_t * wcsrchr (const wchar_t *WSTRING, wchar_t C)'
     `wchar.h' (ISO):  *note Search Functions::.

`size_t wcsrtombs (char *restrict DST, const wchar_t **restrict SRC, size_t LEN, mbstate_t *restrict PS)'
     `wchar.h' (ISO):  *note Converting Strings::.

`size_t wcsspn (const wchar_t *WSTRING, const wchar_t *SKIPSET)'
     `wchar.h' (ISO):  *note Search Functions::.

`wchar_t * wcsstr (const wchar_t *HAYSTACK, const wchar_t *NEEDLE)'
     `wchar.h' (ISO):  *note Search Functions::.

`double wcstod (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR)'
     `wchar.h' (ISO):  *note Parsing of Floats::.

`float wcstof (const wchar_t *STRING, wchar_t **TAILPTR)'
     `stdlib.h' (ISO):  *note Parsing of Floats::.

`intmax_t wcstoimax (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (ISO):  *note Parsing of Integers::.

`wchar_t * wcstok (wchar_t *NEWSTRING, const wchar_t *DELIMITERS, wchar_t **SAVE_PTR)'
     `wchar.h' (ISO):  *note Finding Tokens in a String::.

`long int wcstol (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (ISO):  *note Parsing of Integers::.

`long double wcstold (const wchar_t *STRING, wchar_t **TAILPTR)'
     `stdlib.h' (ISO):  *note Parsing of Floats::.

`long long int wcstoll (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (ISO):  *note Parsing of Integers::.

`size_t wcstombs (char *STRING, const wchar_t *WSTRING, size_t SIZE)'
     `stdlib.h' (ISO):  *note Non-reentrant String Conversion::.

`long long int wcstoq (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (GNU):  *note Parsing of Integers::.

`unsigned long int wcstoul (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (ISO):  *note Parsing of Integers::.

`unsigned long long int wcstoull (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (ISO):  *note Parsing of Integers::.

`uintmax_t wcstoumax (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (ISO):  *note Parsing of Integers::.

`unsigned long long int wcstouq (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
     `wchar.h' (GNU):  *note Parsing of Integers::.

`wchar_t * wcswcs (const wchar_t *HAYSTACK, const wchar_t *NEEDLE)'
     `wchar.h' (XPG):  *note Search Functions::.

`size_t wcsxfrm (wchar_t *restrict WTO, const wchar_t *WFROM, size_t SIZE)'
     `wchar.h' (ISO):  *note Collation Functions::.

`int wctob (wint_t C)'
     `wchar.h' (ISO):  *note Converting a Character::.

`int wctomb (char *STRING, wchar_t WCHAR)'
     `stdlib.h' (ISO):  *note Non-reentrant Character Conversion::.

`wctrans_t wctrans (const char *PROPERTY)'
     `wctype.h' (ISO):  *note Wide Character Case Conversion::.

`wctrans_t'
     `wctype.h' (ISO):  *note Wide Character Case Conversion::.

`wctype_t wctype (const char *PROPERTY)'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`wctype_t'
     `wctype.h' (ISO):  *note Classification of Wide Characters::.

`int WEOF'
     `wchar.h' (ISO):  *note EOF and Errors::.

`wint_t WEOF'
     `wchar.h' (ISO):  *note Extended Char Intro::.

`int WEXITSTATUS (int STATUS)'
     `sys/wait.h' (POSIX.1):  *note Process Completion Status::.

`int WIFEXITED (int STATUS)'
     `sys/wait.h' (POSIX.1):  *note Process Completion Status::.

`int WIFSIGNALED (int STATUS)'
     `sys/wait.h' (POSIX.1):  *note Process Completion Status::.

`int WIFSTOPPED (int STATUS)'
     `sys/wait.h' (POSIX.1):  *note Process Completion Status::.

`wint_t'
     `wchar.h' (ISO):  *note Extended Char Intro::.

`wchar_t * wmemchr (const wchar_t *BLOCK, wchar_t WC, size_t SIZE)'
     `wchar.h' (ISO):  *note Search Functions::.

`int wmemcmp (const wchar_t *A1, const wchar_t *A2, size_t SIZE)'
     `wchar.h' (ISO):  *note String/Array Comparison::.

`wchar_t * wmemcpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
     `wchar.h' (ISO):  *note Copying and Concatenation::.

`wchar_t * wmemmove (wchar_t *WTO, const wchar_t *WFROM, size_t SIZE)'
     `wchar.h' (ISO):  *note Copying and Concatenation::.

`wchar_t * wmempcpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
     `wchar.h' (GNU):  *note Copying and Concatenation::.

`wchar_t * wmemset (wchar_t *BLOCK, wchar_t WC, size_t SIZE)'
     `wchar.h' (ISO):  *note Copying and Concatenation::.

`int W_OK'
     `unistd.h' (POSIX.1):  *note Testing File Access::.

`int wordexp (const char *WORDS, wordexp_t *WORD-VECTOR-PTR, int FLAGS)'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`wordexp_t'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`void wordfree (wordexp_t *WORD-VECTOR-PTR)'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`int wprintf (const wchar_t *TEMPLATE, ...)'
     `wchar.h' (ISO):  *note Formatted Output Functions::.

`WRDE_APPEND'
     `wordexp.h' (POSIX.2):  *note Flags for Wordexp::.

`WRDE_BADCHAR'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`WRDE_BADVAL'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`WRDE_CMDSUB'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`WRDE_DOOFFS'
     `wordexp.h' (POSIX.2):  *note Flags for Wordexp::.

`WRDE_NOCMD'
     `wordexp.h' (POSIX.2):  *note Flags for Wordexp::.

`WRDE_NOSPACE'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`WRDE_REUSE'
     `wordexp.h' (POSIX.2):  *note Flags for Wordexp::.

`WRDE_SHOWERR'
     `wordexp.h' (POSIX.2):  *note Flags for Wordexp::.

`WRDE_SYNTAX'
     `wordexp.h' (POSIX.2):  *note Calling Wordexp::.

`WRDE_UNDEF'
     `wordexp.h' (POSIX.2):  *note Flags for Wordexp::.

`ssize_t write (int FILEDES, const void *BUFFER, size_t SIZE)'
     `unistd.h' (POSIX.1):  *note I/O Primitives::.

`ssize_t writev (int FILEDES, const struct iovec *VECTOR, int COUNT)'
     `sys/uio.h' (BSD):  *note Scatter-Gather::.

`int wscanf (const wchar_t *TEMPLATE, ...)'
     `wchar.h' (ISO):  *note Formatted Input Functions::.

`int WSTOPSIG (int STATUS)'
     `sys/wait.h' (POSIX.1):  *note Process Completion Status::.

`int WTERMSIG (int STATUS)'
     `sys/wait.h' (POSIX.1):  *note Process Completion Status::.

`int X_OK'
     `unistd.h' (POSIX.1):  *note Testing File Access::.

`_XOPEN_SOURCE'
     (X/Open):  *note Feature Test Macros::.

`_XOPEN_SOURCE_EXTENDED'
     (X/Open):  *note Feature Test Macros::.

`double y0 (double X)'
     `math.h' (SVID):  *note Special Functions::.

`float y0f (float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double y0l (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`double y1 (double X)'
     `math.h' (SVID):  *note Special Functions::.

`float y1f (float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double y1l (long double X)'
     `math.h' (SVID):  *note Special Functions::.

`double yn (int N, double X)'
     `math.h' (SVID):  *note Special Functions::.

`float ynf (int N, float X)'
     `math.h' (SVID):  *note Special Functions::.

`long double ynl (int N, long double X)'
     `math.h' (SVID):  *note Special Functions::.



File: libc.info,  Node: Installation,  Next: Maintenance,  Prev: Library Summary,  Up: Top

Appendix C Installing the GNU C Library
***************************************

Before you do anything else, you should read the FAQ at
`http://sourceware.org/glibc/wiki/FAQ'.  It answers common questions
and describes problems you may experience with compilation and
installation.

   Features can be added to the GNU C Library via "add-on" bundles.
These are separate tar files, which you unpack into the top level of
the source tree.  Then you give `configure' the `--enable-add-ons'
option to activate them, and they will be compiled into the library.

   You will need recent versions of several GNU tools: definitely GCC
and GNU Make, and possibly others.  *Note Tools for Compilation::,
below.

* Menu:

* Configuring and compiling::   How to compile and test GNU libc.
* Running make install::        How to install it once you've got it
 compiled.
* Tools for Compilation::       You'll need these first.
* Linux::                       Specific advice for GNU/Linux systems.
* Reporting Bugs::              So they'll get fixed.


File: libc.info,  Node: Configuring and compiling,  Next: Running make install,  Up: Installation

C.1 Configuring and compiling the GNU C Library
===============================================

The GNU C Library cannot be compiled in the source directory.  You must
build it in a separate build directory.  For example, if you have
unpacked the GNU C Library sources in `/src/gnu/glibc-VERSION', create
a directory `/src/gnu/glibc-build' to put the object files in.  This
allows removing the whole build directory in case an error occurs,
which is the safest way to get a fresh start and should always be done.

   From your object directory, run the shell script `configure' located
at the top level of the source tree.  In the scenario above, you'd type

     $ ../glibc-VERSION/configure ARGS...

   Please note that even though you're building in a separate build
directory, the compilation may need to create or modify files and
directories in the source directory.

`configure' takes many options, but the only one that is usually
mandatory is `--prefix'.  This option tells `configure' where you want
the GNU C Library installed.  This defaults to `/usr/local', but the
normal setting to install as the standard system library is
`--prefix=/usr' for GNU/Linux systems and `--prefix=' (an empty prefix)
for GNU/Hurd systems.

   It may also be useful to set the CC and CFLAGS variables in the
environment when running `configure'.  CC selects the C compiler that
will be used, and CFLAGS sets optimization options for the compiler.

   The following list describes all of the available options for
`configure':

`--prefix=DIRECTORY'
     Install machine-independent data files in subdirectories of
     `DIRECTORY'.  The default is to install in `/usr/local'.

`--exec-prefix=DIRECTORY'
     Install the library and other machine-dependent files in
     subdirectories of `DIRECTORY'.  The default is to the `--prefix'
     directory if that option is specified, or `/usr/local' otherwise.

`--with-headers=DIRECTORY'
     Look for kernel header files in DIRECTORY, not `/usr/include'.
     The GNU C Library needs information from the kernel's header files
     describing the interface to the kernel.  The GNU C Library will
     normally look in `/usr/include' for them, but if you specify this
     option, it will look in DIRECTORY instead.

     This option is primarily of use on a system where the headers in
     `/usr/include' come from an older version of the GNU C Library.
     Conflicts can occasionally happen in this case.  You can also use
     this option if you want to compile the GNU C Library with a newer
     set of kernel headers than the ones found in `/usr/include'.

`--enable-add-ons[=LIST]'
     Specify add-on packages to include in the build.  If this option is
     specified with no list, it enables all the add-on packages it
     finds in the main source directory; this is the default behavior.
     You may specify an explicit list of add-ons to use in LIST,
     separated by spaces or commas (if you use spaces, remember to
     quote them from the shell).  Each add-on in LIST can be an
     absolute directory name or can be a directory name relative to the
     main source directory, or relative to the build directory (that
     is, the current working directory).  For example,
     `--enable-add-ons=nptl,../glibc-libidn-VERSION'.

`--enable-kernel=VERSION'
     This option is currently only useful on GNU/Linux systems.  The
     VERSION parameter should have the form X.Y.Z and describes the
     smallest version of the Linux kernel the generated library is
     expected to support.  The higher the VERSION number is, the less
     compatibility code is added, and the faster the code gets.

`--with-binutils=DIRECTORY'
     Use the binutils (assembler and linker) in `DIRECTORY', not the
     ones the C compiler would default to.  You can use this option if
     the default binutils on your system cannot deal with all the
     constructs in the GNU C Library.  In that case, `configure' will
     detect the problem and suppress these constructs, so that the
     library will still be usable, but functionality may be lost--for
     example, you can't build a shared libc with old binutils.

`--without-fp'
     Use this option if your computer lacks hardware floating-point
     support and your operating system does not emulate an FPU.

`--disable-shared'
     Don't build shared libraries even if it is possible.  Not all
     systems support shared libraries; you need ELF support and
     (currently) the GNU linker.

`--disable-profile'
     Don't build libraries with profiling information.  You may want to
     use this option if you don't plan to do profiling.

`--enable-static-nss'
     Compile static versions of the NSS (Name Service Switch) libraries.
     This is not recommended because it defeats the purpose of NSS; a
     program linked statically with the NSS libraries cannot be
     dynamically reconfigured to use a different name database.

`--without-tls'
     By default the C library is built with support for thread-local
     storage if the used tools support it.  By using `--without-tls'
     this can be prevented though there generally is no reason since it
     creates compatibility problems.

`--enable-hardcoded-path-in-tests'
     By default, dynamic tests are linked to run with the installed C
     library.  This option hardcodes the newly built C library path in
     dynamic tests so that they can be invoked directly.

`--enable-lock-elision=yes'
     Enable lock elision for pthread mutexes by default.

`--enable-pt_chown'
     The file `pt_chown' is a helper binary for `grantpt' (*note
     Pseudo-Terminals: Allocation.) that is installed setuid root to
     fix up pseudo-terminal ownership.  It is not built by default
     because systems using the Linux kernel are commonly built with the
     `devpts' filesystem enabled and mounted at `/dev/pts', which
     manages pseudo-terminal ownership automatically.  By using
     `--enable-pt_chown', you may build `pt_chown' and install it
     setuid and owned by `root'.  The use of `pt_chown' introduces
     additional security risks to the system and you should enable it
     only if you understand and accept those risks.

`--build=BUILD-SYSTEM'
`--host=HOST-SYSTEM'
     These options are for cross-compiling.  If you specify both
     options and BUILD-SYSTEM is different from HOST-SYSTEM, `configure'
     will prepare to cross-compile the GNU C Library from BUILD-SYSTEM
     to be used on HOST-SYSTEM.  You'll probably need the
     `--with-headers' option too, and you may have to override
     CONFIGURE's selection of the compiler and/or binutils.

     If you only specify `--host', `configure' will prepare for a
     native compile but use what you specify instead of guessing what
     your system is. This is most useful to change the CPU submodel.
     For example, if `configure' guesses your machine as
     `i686-pc-linux-gnu' but you want to compile a library for 586es,
     give `--host=i586-pc-linux-gnu' or just `--host=i586-linux' and add
     the appropriate compiler flags (`-mcpu=i586' will do the trick) to
     CFLAGS.

     If you specify just `--build', `configure' will get confused.

`--with-pkgversion=VERSION'
     Specify a description, possibly including a build number or build
     date, of the binaries being built, to be included in `--version'
     output from programs installed with the GNU C Library.  For
     example, `--with-pkgversion='FooBar GNU/Linux glibc build 123''.
     The default value is `GNU libc'.

`--with-bugurl=URL'
     Specify the URL that users should visit if they wish to report a
     bug, to be included in `--help' output from programs installed with
     the GNU C Library.  The default value refers to the main
     bug-reporting information for the GNU C Library.

   To build the library and related programs, type `make'.  This will
produce a lot of output, some of which may look like errors from `make'
but isn't.  Look for error messages from `make' containing `***'.
Those indicate that something is seriously wrong.

   The compilation process can take a long time, depending on the
configuration and the speed of your machine.  Some complex modules may
take a very long time to compile, as much as several minutes on slower
machines.  Do not panic if the compiler appears to hang.

   If you want to run a parallel make, simply pass the `-j' option with
an appropriate numeric parameter to `make'.  You need a recent GNU
`make' version, though.

   To build and run test programs which exercise some of the library
facilities, type `make check'.  If it does not complete successfully,
do not use the built library, and report a bug after verifying that the
problem is not already known.  *Note Reporting Bugs::, for instructions
on reporting bugs.  Note that some of the tests assume they are not
being run by `root'.  We recommend you compile and test the GNU C
Library as an unprivileged user.

   Before reporting bugs make sure there is no problem with your system.
The tests (and later installation) use some pre-existing files of the
system such as `/etc/passwd', `/etc/nsswitch.conf' and others.  These
files must all contain correct and sensible content.

   To format the `GNU C Library Reference Manual' for printing, type
`make dvi'.  You need a working TeX installation to do this.  The
distribution builds the on-line formatted version of the manual, as
Info files, as part of the build process.  You can build them manually
with `make info'.

   The library has a number of special-purpose configuration parameters
which you can find in `Makeconfig'.  These can be overwritten with the
file `configparms'.  To change them, create a `configparms' in your
build directory and add values as appropriate for your system.  The
file is included and parsed by `make' and has to follow the conventions
for makefiles.

   It is easy to configure the GNU C Library for cross-compilation by
setting a few variables in `configparms'.  Set `CC' to the
cross-compiler for the target you configured the library for; it is
important to use this same `CC' value when running `configure', like
this: `CC=TARGET-gcc configure TARGET'.  Set `BUILD_CC' to the compiler
to use for programs run on the build system as part of compiling the
library.  You may need to set `AR' to cross-compiling versions of `ar'
if the native tools are not configured to work with object files for
the target you configured for.  When cross-compiling the GNU C Library,
it may be tested using `make check
test-wrapper="SRCDIR/scripts/cross-test-ssh.sh HOSTNAME"', where SRCDIR
is the absolute directory name for the main source directory and
HOSTNAME is the host name of a system that can run the newly built
binaries of the GNU C Library.  The source and build directories must
be visible at the same locations on both the build system and HOSTNAME.

   In general, when testing the GNU C Library, `test-wrapper' may be set
to the name and arguments of any program to run newly built binaries.
This program must preserve the arguments to the binary being run, its
working directory, all environment variables set as part of testing and
the standard input, output and error file descriptors.  If
`TEST-WRAPPER env' will not work to run a program with environment
variables set, then `test-wrapper-env' must be set to a program that
runs a newly built program with environment variable assignments in
effect, those assignments being specified as `VAR=VALUE' before the
name of the program to be run.


File: libc.info,  Node: Running make install,  Next: Tools for Compilation,  Prev: Configuring and compiling,  Up: Installation

C.2 Installing the C Library
============================

To install the library and its header files, and the Info files of the
manual, type `env LANGUAGE=C LC_ALL=C make install'.  This will build
things, if necessary, before installing them; however, you should still
compile everything first.  If you are installing the GNU C Library as
your primary C library, we recommend that you shut the system down to
single-user mode first, and reboot afterward.  This minimizes the risk
of breaking things when the library changes out from underneath.

   `make install' will do the entire job of upgrading from a previous
installation of the GNU C Library version 2.x.  There may sometimes be
headers left behind from the previous installation, but those are
generally harmless.  If you want to avoid leaving headers behind you
can do things in the following order.

   You must first build the library (`make'), optionally check it
(`make check'), switch the include directories and then install (`make
install').  The steps must be done in this order.  Not moving the
directory before install will result in an unusable mixture of header
files from both libraries, but configuring, building, and checking the
library requires the ability to compile and run programs against the old
library.  The new `/usr/include', after switching the include
directories and before installing the library should contain the Linux
headers, but nothing else.  If you do this, you will need to restore
any headers from libraries other than the GNU C Library yourself after
installing the library.

   You can install the GNU C Library somewhere other than where you
configured it to go by setting the `install_root' variable on the
command line for `make install'.  The value of this variable is
prepended to all the paths for installation.  This is useful when
setting up a chroot environment or preparing a binary distribution.
The directory should be specified with an absolute file name.

   The GNU C Library includes a daemon called `nscd', which you may or
may not want to run.  `nscd' caches name service lookups; it can
dramatically improve performance with NIS+, and may help with DNS as
well.

   One auxiliary program, `/usr/libexec/pt_chown', is installed setuid
`root' if the `--enable-pt_chown' configuration option is used.  This
program is invoked by the `grantpt' function; it sets the permissions
on a pseudoterminal so it can be used by the calling process.  If you
are using a Linux kernel with the `devpts' filesystem enabled and
mounted at `/dev/pts', you don't need this program.

   After installation you might want to configure the timezone and
locale installation of your system.  The GNU C Library comes with a
locale database which gets configured with `localedef'.  For example, to
set up a German locale with name `de_DE', simply issue the command
`localedef -i de_DE -f ISO-8859-1 de_DE'.  To configure all locales
that are supported by the GNU C Library, you can issue from your build
directory the command `make localedata/install-locales'.

   To configure the locally used timezone, set the `TZ' environment
variable.  The script `tzselect' helps you to select the right value.
As an example, for Germany, `tzselect' would tell you to use
`TZ='Europe/Berlin''.  For a system wide installation (the given paths
are for an installation with `--prefix=/usr'), link the timezone file
which is in `/usr/share/zoneinfo' to the file `/etc/localtime'.  For
Germany, you might execute `ln -s /usr/share/zoneinfo/Europe/Berlin
/etc/localtime'.


File: libc.info,  Node: Tools for Compilation,  Next: Linux,  Prev: Running make install,  Up: Installation

C.3 Recommended Tools for Compilation
=====================================

We recommend installing the following GNU tools before attempting to
build the GNU C Library:

   * GNU `make' 3.79 or newer

     You need the latest version of GNU `make'.  Modifying the GNU C
     Library to work with other `make' programs would be so difficult
     that we recommend you port GNU `make' instead.  *Really.*  We
     recommend GNU `make' version 3.79.  All earlier versions have
     severe bugs or lack features.

   * GCC 4.4 or newer, GCC 4.6 recommended

     GCC 4.4 or higher is required; as of this writing, GCC 4.6 is the
     compiler we advise to use to build the GNU C Library.

     You can use whatever compiler you like to compile programs that use
     the GNU C Library.

     Check the FAQ for any special compiler issues on particular
     platforms.

   * GNU `binutils' 2.20 or later

     You must use GNU `binutils' (as and ld) to build the GNU C Library.
     No other assembler or linker has the necessary functionality at the
     moment.

   * GNU `texinfo' 4.5 or later

     To correctly translate and install the Texinfo documentation you
     need this version of the `texinfo' package.  Earlier versions do
     not understand all the tags used in the document, and the
     installation mechanism for the info files is not present or works
     differently.

   * GNU `awk' 3.1.2, or higher

     `awk' is used in several places to generate files.  Some `gawk'
     extensions are used, including the `asorti' function, which was
     introduced in version 3.1.2 of `gawk'.

   * Perl 5

     Perl is not required, but it is used if present to test the
     installation.  We may decide to use it elsewhere in the future.

   * GNU `sed' 3.02 or newer

     `Sed' is used in several places to generate files.  Most scripts
     work with any version of `sed'.  The known exception is the script
     `po2test.sed' in the `intl' subdirectory which is used to generate
     `msgs.h' for the test suite.  This script works correctly only
     with GNU `sed' 3.02.  If you like to run the test suite, you
     should definitely upgrade `sed'.


If you change any of the `configure.ac' files you will also need

   * GNU `autoconf' 2.53 or higher

and if you change any of the message translation files you will need

   * GNU `gettext' 0.10.36 or later

You may also need these packages if you upgrade your source tree using
patches, although we try to avoid this.


File: libc.info,  Node: Linux,  Next: Reporting Bugs,  Prev: Tools for Compilation,  Up: Installation

C.4 Specific advice for GNU/Linux systems
=========================================

If you are installing the GNU C Library on GNU/Linux systems, you need
to have the header files from a 2.6.19.1 or newer kernel around for
reference.  These headers must be installed using `make
headers_install'; the headers present in the kernel source directory
are not suitable for direct use by the GNU C Library.  You do not need
to use that kernel, just have its headers installed where the GNU C
Library can access them, referred to here as INSTALL-DIRECTORY.  The
easiest way to do this is to unpack it in a directory such as
`/usr/src/linux-VERSION'.  In that directory, run `make headers_install
INSTALL_HDR_PATH=INSTALL-DIRECTORY'.  Finally, configure the GNU C
Library with the option `--with-headers=INSTALL-DIRECTORY/include'.
Use the most recent kernel you can get your hands on.  (If you are
cross-compiling the GNU C Library, you need to specify
`ARCH=ARCHITECTURE' in the `make headers_install' command, where
ARCHITECTURE is the architecture name used by the Linux kernel, such as
`x86' or `powerpc'.)

   After installing the GNU C Library, you may need to remove or rename
directories such as `/usr/include/linux' and `/usr/include/asm', and
replace them with copies of directories such as `linux' and `asm' from
`INSTALL-DIRECTORY/include'.  All directories present in
`INSTALL-DIRECTORY/include' should be copied, except that the GNU C
Library provides its own version of `/usr/include/scsi'; the files
provided by the kernel should be copied without replacing those
provided by the GNU C Library.  The `linux', `asm' and `asm-generic'
directories are required to compile programs using the GNU C Library;
the other directories describe interfaces to the kernel but are not
required if not compiling programs using those interfaces.  You do not
need to copy kernel headers if you did not specify an alternate kernel
header source using `--with-headers'.

   The Filesystem Hierarchy Standard for GNU/Linux systems expects some
components of the GNU C Library installation to be in `/lib' and some
in `/usr/lib'.  This is handled automatically if you configure the GNU
C Library with `--prefix=/usr'.  If you set some other prefix or allow
it to default to `/usr/local', then all the components are installed
there.


File: libc.info,  Node: Reporting Bugs,  Prev: Linux,  Up: Installation

C.5 Reporting Bugs
==================

There are probably bugs in the GNU C Library.  There are certainly
errors and omissions in this manual.  If you report them, they will get
fixed.  If you don't, no one will ever know about them and they will
remain unfixed for all eternity, if not longer.

   It is a good idea to verify that the problem has not already been
reported.  Bugs are documented in two places: The file `BUGS' describes
a number of well known bugs and the central GNU C Library bug tracking
system has a WWW interface at `http://sourceware.org/bugzilla/'.  The
WWW interface gives you access to open and closed reports.  A closed
report normally includes a patch or a hint on solving the problem.

   To report a bug, first you must find it.  With any luck, this will
be the hard part.  Once you've found a bug, make sure it's really a
bug.  A good way to do this is to see if the GNU C Library behaves the
same way some other C library does.  If so, probably you are wrong and
the libraries are right (but not necessarily).  If not, one of the
libraries is probably wrong.  It might not be the GNU C Library.  Many
historical Unix C libraries permit things that we don't, such as
closing a file twice.

   If you think you have found some way in which the GNU C Library does
not conform to the ISO and POSIX standards (*note Standards and
Portability::), that is definitely a bug.  Report it!

   Once you're sure you've found a bug, try to narrow it down to the
smallest test case that reproduces the problem.  In the case of a C
library, you really only need to narrow it down to one library function
call, if possible.  This should not be too difficult.

   The final step when you have a simple test case is to report the bug.
Do this at `http://www.gnu.org/software/libc/bugs.html'.

   If you are not sure how a function should behave, and this manual
doesn't tell you, that's a bug in the manual.  Report that too!  If the
function's behavior disagrees with the manual, then either the library
or the manual has a bug, so report the disagreement.  If you find any
errors or omissions in this manual, please report them to the bug
database.  If you refer to specific sections of the manual, please
include the section names for easier identification.


File: libc.info,  Node: Maintenance,  Next: Platform,  Prev: Installation,  Up: Top

Appendix D Library Maintenance
******************************

* Menu:

* Source Layout::         How to add new functions or header files
                             to the GNU C Library.
* Porting::               How to port the GNU C Library to
                             a new machine or operating system.


File: libc.info,  Node: Source Layout,  Next: Porting,  Up: Maintenance

D.1 Adding New Functions
========================

The process of building the library is driven by the makefiles, which
make heavy use of special features of GNU `make'.  The makefiles are
very complex, and you probably don't want to try to understand them.
But what they do is fairly straightforward, and only requires that you
define a few variables in the right places.

   The library sources are divided into subdirectories, grouped by
topic.

   The `string' subdirectory has all the string-manipulation functions,
`math' has all the mathematical functions, etc.

   Each subdirectory contains a simple makefile, called `Makefile',
which defines a few `make' variables and then includes the global
makefile `Rules' with a line like:

     include ../Rules

The basic variables that a subdirectory makefile defines are:

`subdir'
     The name of the subdirectory, for example `stdio'.  This variable
     *must* be defined.

`headers'
     The names of the header files in this section of the library, such
     as `stdio.h'.

`routines'
`aux'
     The names of the modules (source files) in this section of the
     library.  These should be simple names, such as `strlen' (rather
     than complete file names, such as `strlen.c').  Use `routines' for
     modules that define functions in the library, and `aux' for
     auxiliary modules containing things like data definitions.  But the
     values of `routines' and `aux' are just concatenated, so there
     really is no practical difference.

`tests'
     The names of test programs for this section of the library.  These
     should be simple names, such as `tester' (rather than complete file
     names, such as `tester.c').  `make tests' will build and run all
     the test programs.  If a test program needs input, put the test
     data in a file called `TEST-PROGRAM.input'; it will be given to
     the test program on its standard input.  If a test program wants
     to be run with arguments, put the arguments (all on a single line)
     in a file called `TEST-PROGRAM.args'.  Test programs should exit
     with zero status when the test passes, and nonzero status when the
     test indicates a bug in the library or error in building.

`others'
     The names of "other" programs associated with this section of the
     library.  These are programs which are not tests per se, but are
     other small programs included with the library.  They are built by
     `make others'.

`install-lib'
`install-data'
`install'
     Files to be installed by `make install'.  Files listed in
     `install-lib' are installed in the directory specified by `libdir'
     in `configparms' or `Makeconfig' (*note Installation::).  Files
     listed in `install-data' are installed in the directory specified
     by `datadir' in `configparms' or `Makeconfig'.  Files listed in
     `install' are installed in the directory specified by `bindir' in
     `configparms' or `Makeconfig'.

`distribute'
     Other files from this subdirectory which should be put into a
     distribution tar file.  You need not list here the makefile itself
     or the source and header files listed in the other standard
     variables.  Only define `distribute' if there are files used in an
     unusual way that should go into the distribution.

`generated'
     Files which are generated by `Makefile' in this subdirectory.
     These files will be removed by `make clean', and they will never
     go into a distribution.

`extra-objs'
     Extra object files which are built by `Makefile' in this
     subdirectory.  This should be a list of file names like `foo.o';
     the files will actually be found in whatever directory object
     files are being built in.  These files will be removed by
     `make clean'.  This variable is used for secondary object files
     needed to build `others' or `tests'.

* Menu:

* Platform: Adding Platform-specific.             Adding platform-specific
                                         features.


File: libc.info,  Node: Adding Platform-specific,  Up: Source Layout

D.1.1 Platform-specific types, macros and functions
---------------------------------------------------

It's sometimes necessary to provide nonstandard, platform-specific
features to developers.  The C library is traditionally the lowest
library layer, so it makes sense for it to provide these low-level
features.  However, including these features in the C library may be a
disadvantage if another package provides them as well as there will be
two conflicting versions of them.  Also, the features won't be
available to projects that do not use the GNU C Library but use other
GNU tools, like GCC.

   The current guidelines are:
   * If the header file provides features that only make sense on a
     particular machine architecture and have nothing to do with an
     operating system, then the features should ultimately be provided
     as GCC built-in functions.  Until then, the GNU C Library may
     provide them in the header file.  When the GCC built-in functions
     become available, those provided in the header file should be made
     conditionally available prior to the GCC version in which the
     built-in function was made available.

   * If the header file provides features that are specific to an
     operating system, both GCC and the GNU C Library could provide it,
     but the GNU C Library is preferred as it already has a lot of
     information about the operating system.

   * If the header file provides features that are specific to an
     operating system but used by the GNU C Library, then the GNU C
     Library should provide them.

   The general solution for providing low-level features is to export
them as follows:

   * A nonstandard, low-level header file that defines macros and inline
     functions should be called `sys/platform/NAME.h'.

   * Each header file's name should include the platform name, to avoid
     users thinking there is anything in common between different the
     header files for different platforms.  For example, a
     `sys/platform/ARCH.h' name such as `sys/platform/ppc.h' is better
     than `sys/platform.h'.

   * A platform-specific header file provided by the GNU C Library
     should coordinate with GCC such that compiler built-in versions of
     the functions and macros are preferred if available.  This means
     that user programs will only ever need to include
     `sys/platform/ARCH.h', keeping the same names of types, macros,
     and functions for convenience and portability.

   * Each included symbol must have the prefix `__ARCH_', such as
     `__ppc_get_timebase'.

   The easiest way to provide a header file is to add it to the
`sysdep_headers' variable.  For example, the combination of
Linux-specific header files on PowerPC could be provided like this:

     sysdep_headers += sys/platform/ppc.h

   Then ensure that you have added a `sys/platform/ppc.h' header file
in the machine-specific directory, e.g.,
`sysdeps/powerpc/sys/platform/ppc.h'.


File: libc.info,  Node: Porting,  Prev: Source Layout,  Up: Maintenance

D.2 Porting the GNU C Library
=============================

The GNU C Library is written to be easily portable to a variety of
machines and operating systems.  Machine- and operating system-dependent
functions are well separated to make it easy to add implementations for
new machines or operating systems.  This section describes the layout of
the library source tree and explains the mechanisms used to select
machine-dependent code to use.

   All the machine-dependent and operating system-dependent files in the
library are in the subdirectory `sysdeps' under the top-level library
source directory.  This directory contains a hierarchy of
subdirectories (*note Hierarchy Conventions::).

   Each subdirectory of `sysdeps' contains source files for a
particular machine or operating system, or for a class of machine or
operating system (for example, systems by a particular vendor, or all
machines that use IEEE 754 floating-point format).  A configuration
specifies an ordered list of these subdirectories.  Each subdirectory
implicitly appends its parent directory to the list.  For example,
specifying the list `unix/bsd/vax' is equivalent to specifying the list
`unix/bsd/vax unix/bsd unix'.  A subdirectory can also specify that it
implies other subdirectories which are not directly above it in the
directory hierarchy.  If the file `Implies' exists in a subdirectory,
it lists other subdirectories of `sysdeps' which are appended to the
list, appearing after the subdirectory containing the `Implies' file.
Lines in an `Implies' file that begin with a `#' character are ignored
as comments.  For example, `unix/bsd/Implies' contains:
     # BSD has Internet-related things.
     unix/inet
   and `unix/Implies' contains:
     posix

So the final list is `unix/bsd/vax unix/bsd unix/inet unix posix'.

   `sysdeps' has a "special" subdirectory called `generic'.  It is
always implicitly appended to the list of subdirectories, so you
needn't put it in an `Implies' file, and you should not create any
subdirectories under it intended to be new specific categories.
`generic' serves two purposes.  First, the makefiles do not bother to
look for a system-dependent version of a file that's not in `generic'.
This means that any system-dependent source file must have an analogue
in `generic', even if the routines defined by that file are not
implemented on other platforms.  Second, the `generic' version of a
system-dependent file is used if the makefiles do not find a version
specific to the system you're compiling for.

   If it is possible to implement the routines in a `generic' file in
machine-independent C, using only other machine-independent functions in
the C library, then you should do so.  Otherwise, make them stubs.  A
"stub" function is a function which cannot be implemented on a
particular machine or operating system.  Stub functions always return an
error, and set `errno' to `ENOSYS' (Function not implemented).  *Note
Error Reporting::.  If you define a stub function, you must place the
statement `stub_warning(FUNCTION)', where FUNCTION is the name of your
function, after its definition.  This causes the function to be listed
in the installed `<gnu/stubs.h>', and makes GNU ld warn when the
function is used.

   Some rare functions are only useful on specific systems and aren't
defined at all on others; these do not appear anywhere in the
system-independent source code or makefiles (including the `generic'
directory), only in the system-dependent `Makefile' in the specific
system's subdirectory.

   If you come across a file that is in one of the main source
directories (`string', `stdio', etc.), and you want to write a machine-
or operating system-dependent version of it, move the file into
`sysdeps/generic' and write your new implementation in the appropriate
system-specific subdirectory.  Note that if a file is to be
system-dependent, it *must not* appear in one of the main source
directories.

   There are a few special files that may exist in each subdirectory of
`sysdeps':

`Makefile'
     A makefile for this machine or operating system, or class of
     machine or operating system.  This file is included by the library
     makefile `Makerules', which is used by the top-level makefile and
     the subdirectory makefiles.  It can change the variables set in the
     including makefile or add new rules.  It can use GNU `make'
     conditional directives based on the variable `subdir' (see above)
     to select different sets of variables and rules for different
     sections of the library.  It can also set the `make' variable
     `sysdep-routines', to specify extra modules to be included in the
     library.  You should use `sysdep-routines' rather than adding
     modules to `routines' because the latter is used in determining
     what to distribute for each subdirectory of the main source tree.

     Each makefile in a subdirectory in the ordered list of
     subdirectories to be searched is included in order.  Since several
     system-dependent makefiles may be included, each should append to
     `sysdep-routines' rather than simply setting it:

          sysdep-routines := $(sysdep-routines) foo bar

`Subdirs'
     This file contains the names of new whole subdirectories under the
     top-level library source tree that should be included for this
     system.  These subdirectories are treated just like the
     system-independent subdirectories in the library source tree, such
     as `stdio' and `math'.

     Use this when there are completely new sets of functions and header
     files that should go into the library for the system this
     subdirectory of `sysdeps' implements.  For example,
     `sysdeps/unix/inet/Subdirs' contains `inet'; the `inet' directory
     contains various network-oriented operations which only make sense
     to put in the library on systems that support the Internet.

`configure'
     This file is a shell script fragment to be run at configuration
     time.  The top-level `configure' script uses the shell `.' command
     to read the `configure' file in each system-dependent directory
     chosen, in order.  The `configure' files are often generated from
     `configure.ac' files using Autoconf.

     A system-dependent `configure' script will usually add things to
     the shell variables `DEFS' and `config_vars'; see the top-level
     `configure' script for details.  The script can check for
     `--with-PACKAGE' options that were passed to the top-level
     `configure'.  For an option `--with-PACKAGE=VALUE' `configure'
     sets the shell variable `with_PACKAGE' (with any dashes in PACKAGE
     converted to underscores) to VALUE; if the option is just
     `--with-PACKAGE' (no argument), then it sets `with_PACKAGE' to
     `yes'.

`configure.ac'
     This file is an Autoconf input fragment to be processed into the
     file `configure' in this subdirectory.  *Note Introduction:
     (autoconf.info)Introduction, for a description of Autoconf.  You
     should write either `configure' or `configure.ac', but not both.
     The first line of `configure.ac' should invoke the `m4' macro
     `GLIBC_PROVIDES'.  This macro does several `AC_PROVIDE' calls for
     Autoconf macros which are used by the top-level `configure'
     script; without this, those macros might be invoked again
     unnecessarily by Autoconf.

   That is the general system for how system-dependencies are isolated.

* Menu:

* Hierarchy Conventions::       The layout of the `sysdeps' hierarchy.
* Porting to Unix::             Porting the library to an average
                                   Unix-like system.


File: libc.info,  Node: Hierarchy Conventions,  Next: Porting to Unix,  Up: Porting

D.2.1 Layout of the `sysdeps' Directory Hierarchy
-------------------------------------------------

A GNU configuration name has three parts: the CPU type, the
manufacturer's name, and the operating system.  `configure' uses these
to pick the list of system-dependent directories to look for.  If the
`--nfp' option is _not_ passed to `configure', the directory
`MACHINE/fpu' is also used.  The operating system often has a "base
operating system"; for example, if the operating system is `Linux', the
base operating system is `unix/sysv'.  The algorithm used to pick the
list of directories is simple: `configure' makes a list of the base
operating system, manufacturer, CPU type, and operating system, in that
order.  It then concatenates all these together with slashes in
between, to produce a directory name; for example, the configuration
`i686-linux-gnu' results in `unix/sysv/linux/i386/i686'.  `configure'
then tries removing each element of the list in turn, so
`unix/sysv/linux' and `unix/sysv' are also tried, among others.  Since
the precise version number of the operating system is often not
important, and it would be very inconvenient, for example, to have
identical `irix6.2' and `irix6.3' directories, `configure' tries
successively less specific operating system names by removing trailing
suffixes starting with a period.

   As an example, here is the complete list of directories that would be
tried for the configuration `i686-linux-gnu' (with the `crypt' and
`linuxthreads' add-on):

     sysdeps/i386/elf
     crypt/sysdeps/unix
     linuxthreads/sysdeps/unix/sysv/linux
     linuxthreads/sysdeps/pthread
     linuxthreads/sysdeps/unix/sysv
     linuxthreads/sysdeps/unix
     linuxthreads/sysdeps/i386/i686
     linuxthreads/sysdeps/i386
     linuxthreads/sysdeps/pthread/no-cmpxchg
     sysdeps/unix/sysv/linux/i386
     sysdeps/unix/sysv/linux
     sysdeps/gnu
     sysdeps/unix/common
     sysdeps/unix/mman
     sysdeps/unix/inet
     sysdeps/unix/sysv/i386/i686
     sysdeps/unix/sysv/i386
     sysdeps/unix/sysv
     sysdeps/unix/i386
     sysdeps/unix
     sysdeps/posix
     sysdeps/i386/i686
     sysdeps/i386/i486
     sysdeps/libm-i387/i686
     sysdeps/i386/fpu
     sysdeps/libm-i387
     sysdeps/i386
     sysdeps/wordsize-32
     sysdeps/ieee754
     sysdeps/libm-ieee754
     sysdeps/generic

   Different machine architectures are conventionally subdirectories at
the top level of the `sysdeps' directory tree.  For example,
`sysdeps/sparc' and `sysdeps/m68k'.  These contain files specific to
those machine architectures, but not specific to any particular
operating system.  There might be subdirectories for specializations of
those architectures, such as `sysdeps/m68k/68020'. Code which is
specific to the floating-point coprocessor used with a particular
machine should go in `sysdeps/MACHINE/fpu'.

   There are a few directories at the top level of the `sysdeps'
hierarchy that are not for particular machine architectures.

`generic'
     As described above (*note Porting::), this is the subdirectory
     that every configuration implicitly uses after all others.

`ieee754'
     This directory is for code using the IEEE 754 floating-point
     format, where the C type `float' is IEEE 754 single-precision
     format, and `double' is IEEE 754 double-precision format.  Usually
     this directory is referred to in the `Implies' file in a machine
     architecture-specific directory, such as `m68k/Implies'.

`libm-ieee754'
     This directory contains an implementation of a mathematical library
     usable on platforms which use IEEE 754 conformant floating-point
     arithmetic.

`libm-i387'
     This is a special case.  Ideally the code should be in
     `sysdeps/i386/fpu' but for various reasons it is kept aside.

`posix'
     This directory contains implementations of things in the library in
     terms of POSIX.1 functions.  This includes some of the POSIX.1
     functions themselves.  Of course, POSIX.1 cannot be completely
     implemented in terms of itself, so a configuration using just
     `posix' cannot be complete.

`unix'
     This is the directory for Unix-like things.  *Note Porting to
     Unix::.  `unix' implies `posix'.  There are some special-purpose
     subdirectories of `unix':

    `unix/common'
          This directory is for things common to both BSD and System V
          release 4.  Both `unix/bsd' and `unix/sysv/sysv4' imply
          `unix/common'.

    `unix/inet'
          This directory is for `socket' and related functions on Unix
          systems.  `unix/inet/Subdirs' enables the `inet' top-level
          subdirectory.  `unix/common' implies `unix/inet'.

`mach'
     This is the directory for things based on the Mach microkernel
     from CMU (including GNU/Hurd systems).  Other basic operating
     systems (VMS, for example) would have their own directories at the
     top level of the `sysdeps' hierarchy, parallel to `unix' and
     `mach'.


File: libc.info,  Node: Porting to Unix,  Prev: Hierarchy Conventions,  Up: Porting

D.2.2 Porting the GNU C Library to Unix Systems
-----------------------------------------------

Most Unix systems are fundamentally very similar.  There are variations
between different machines, and variations in what facilities are
provided by the kernel.  But the interface to the operating system
facilities is, for the most part, pretty uniform and simple.

   The code for Unix systems is in the directory `unix', at the top
level of the `sysdeps' hierarchy.  This directory contains
subdirectories (and subdirectory trees) for various Unix variants.

   The functions which are system calls in most Unix systems are
implemented in assembly code, which is generated automatically from
specifications in files named `syscalls.list'.  There are several such
files, one in `sysdeps/unix' and others in its subdirectories.  Some
special system calls are implemented in files that are named with a
suffix of `.S'; for example, `_exit.S'.  Files ending in `.S' are run
through the C preprocessor before being fed to the assembler.

   These files all use a set of macros that should be defined in
`sysdep.h'.  The `sysdep.h' file in `sysdeps/unix' partially defines
them; a `sysdep.h' file in another directory must finish defining them
for the particular machine and operating system variant.  See
`sysdeps/unix/sysdep.h' and the machine-specific `sysdep.h'
implementations to see what these macros are and what they should do.

   The system-specific makefile for the `unix' directory
(`sysdeps/unix/Makefile') gives rules to generate several files from
the Unix system you are building the library on (which is assumed to be
the target system you are building the library _for_).  All the
generated files are put in the directory where the object files are
kept; they should not affect the source tree itself.  The files
generated are `ioctls.h', `errnos.h', `sys/param.h', and `errlist.c'
(for the `stdio' section of the library).


File: libc.info,  Node: Platform,  Next: Contributors,  Prev: Maintenance,  Up: Top

Appendix E Platform-specific facilities
***************************************

The GNU C Library can provide machine-specific functionality.

* Menu:

* PowerPC::           Facilities Specific to the PowerPC Architecture


File: libc.info,  Node: PowerPC,  Up: Platform

E.1 PowerPC-specific Facilities
===============================

Facilities specific to PowerPC that are not specific to a particular
operating system are declared in `sys/platform/ppc.h'.

 -- Function: uint64_t __ppc_get_timebase (void)
     Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
     Concepts::.

     Read the current value of the Time Base Register.

     The "Time Base Register" is a 64-bit register that stores a
     monotonically incremented value updated at a system-dependent
     frequency that may be different from the processor frequency.
     More information is available in `Power ISA 2.06b - Book II -
     Section 5.2'.

     `__ppc_get_timebase' uses the processor's time base facility
     directly without requiring assistance from the operating system,
     so it is very efficient.

 -- Function: uint64_t __ppc_get_timebase_freq (void)
     Preliminary: | MT-Unsafe init | AS-Unsafe corrupt:init | AC-Unsafe
     corrupt:init | *Note POSIX Safety Concepts::.

     Read the current frequency at which the Time Base Register is
     updated.

     This frequency is not related to the processor clock or the bus
     clock.  It is also possible that this frequency is not constant.
     More information is available in `Power ISA 2.06b - Book II -
     Section 5.2'.

   The following functions provide hints about the usage of resources
that are shared with other processors.  They can be used, for example,
if a program waiting on a lock intends to divert the shared resources
to be used by other processors.  More information is available in
`Power ISA 2.06b - Book II - Section 3.2'.

 -- Function: void __ppc_yield (void)
     Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
     Concepts::.

     Provide a hint that performance will probably be improved if
     shared resources dedicated to the executing processor are released
     for use by other processors.

 -- Function: void __ppc_mdoio (void)
     Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
     Concepts::.

     Provide a hint that performance will probably be improved if
     shared resources dedicated to the executing processor are released
     until all outstanding storage accesses to caching-inhibited
     storage have been completed.

 -- Function: void __ppc_mdoom (void)
     Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
     Concepts::.

     Provide a hint that performance will probably be improved if
     shared resources dedicated to the executing processor are released
     until all outstanding storage accesses to cacheable storage for
     which the data is not in the cache have been completed.

 -- Function: void __ppc_set_ppr_med (void)
     Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
     Concepts::.

     Set the Program Priority Register to medium value (default).

     The "Program Priority Register" (PPR) is a 64-bit register that
     controls the program's priority.  By adjusting the PPR value the
     programmer may improve system throughput by causing the system
     resources to be used more efficiently, especially in contention
     situations.  The three unprivileged states available are covered
     by the functions `__ppc_set_ppr_med' (medium - default),
     `__ppc_set_ppc_low' (low) and `__ppc_set_ppc_med_low' (medium
     low).  More information available in `Power ISA 2.06b - Book II -
     Section 3.1'.

 -- Function: void __ppc_set_ppr_low (void)
     Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
     Concepts::.

     Set the Program Priority Register to low value.

 -- Function: void __ppc_set_ppr_med_low (void)
     Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
     Concepts::.

     Set the Program Priority Register to medium low value.


File: libc.info,  Node: Contributors,  Next: Free Manuals,  Prev: Platform,  Up: Top

Appendix F Contributors to the GNU C Library
********************************************

The GNU C Library project would like to thank its many contributors.
Without them the project would not have been nearly as successful as it
has been.  Any omissions in this list are accidental.  Feel free to
file a bug in bugzilla if you have been left out or some of your
contributions are not listed.  Please keep this list in alphabetical
order.

   * Ryan S. Arnold for his improvements for Linux on PowerPC and his
     direction as FSF Project Steward for the GNU C Library.

   * Miles Bader for writing the `argp' argument-parsing package, and
     the `argz'/`envz' interfaces.

   * Jeff Bailey for his maintainership of the HPPA architecture.

   * Petr Baudis for bug fixes and testing.

   * Stephen R. van den Berg for contributing a highly-optimized
     `strstr' function.

   * Ondrej Bilka for contributing optimized string routines for x64
     and various fixes.

   * Eric Blake for adding O(n) implementations of `memmem', `strstr'
     and `strcasestr'.

   * Philip Blundell for the ports to Linux/ARM
     (`arm-ANYTHING-linuxaout') and ARM standalone
     (`arm-ANYTHING-none'), as well as for parts of the IPv6 support
     code.

   * Per Bothner for the implementation of the `libio' library which is
     used to implement `stdio' functions.

   * Mark Brown for his direction as part of the GNU C Library steering
     committee.

   * Thomas Bushnell for his contributions to Hurd.

   * Liubov Dmitrieva for optimzed string and math functions on x86-64
     and x86.

   * Ulrich Drepper for his many contributions in almost all parts of
     the GNU C Library, including:
        * internationalization support, including the `locale' and
          `localedef' utilities.

        * Linux i386/ELF support

        * the `hsearch' and `drand48' families of functions, reentrant
          `...`_r'' versions of the `random' family; System V shared
          memory and IPC support code

        * several highly-optimized string functions for iX86 processors

        * many math functions

        * the character conversion functions (`iconv')

        * the `ftw' and `nftw' functions

        * the floating-point printing function used by `printf' and
          friends and the floating-point reading function used by
          `scanf', `strtod' and friends

        * the `catgets' support and the entire suite of multi-byte and
          wide-character support functions (`wctype.h', `wchar.h',
          etc.).

        * versioning of objects on the symbol level

   * Paul Eggert for the `mktime' function and for his direction as
     part of the GNU C Library steering committee.

   * Steve Ellcey for various fixes.

   * Tulio Magno Quites Machado Filho for adding a new class of
     installed headers for low-level platform-specific functionality
     and one such for PowerPC.

   * Mike Frysinger for his maintaining of the IA64 architecture and for
     testing and bug fixing.

   * Michael Glad for the DES encryption function `crypt' and related
     functions.

   * Wolfram Gloger for contributing the memory allocation functions
     functions `malloc', `realloc' and `free' and related code.

   * Torbjo"rn Granlund for fast implementations of many of the string
     functions (`memcpy', `strlen', etc.).

   * Michael J. Haertel for writing the merge sort function `qsort' and
     malloc checking functions like `mcheck'.

   * Bruno Haible for his improvements to the `iconv' and locale
     implementations.

   * Richard Henderson for the port to Linux on Alpha
     (`alpha-ANYTHING-linux').

   * David Holsgrove for the port to Linux on MicroBlaze.

   * Daniel Jacobowitz for various fixes and enhancements.

   * Andreas Jaeger for the port to Linux on x86-64
     (`x86_64-ANYTHING-linux' and his work on Linux for MIPS
     (`mips-ANYTHING-linux'), implementing the `ldconfig' program,
     providing a test suite for the math library and for his direction
     as part of the GNU C Library steering committee.

   * Aurelien Jarno for various fixes.

   * Jakub Jelinek for implementing a number of checking functions and
     for his direction as part of the GNU C Library steering committee.

   * Geoffrey Keating for the port to Linux on PowerPC
     (`powerpc-ANYTHING-linux').

   * Brendan Kehoe for contributing the port to the MIPS DECStation
     running Ultrix 4 (`mips-dec-ultrix4') and the port to the DEC Alpha
     running OSF/1 (`alpha-dec-osf1').

   * Mark Kettenis for implementing the `utmpx' interface and an utmp
     daemon, and for a Hesiod NSS module.

   * Andi Kleen for implementing pthreads lock elision with TSX.

   * Kazumoto Kojima for the port of the Mach and Hurd code to the MIPS
     architecture (`mips-ANYTHING-gnu') and for his work on the SH
     architecture.

   * Andreas Krebbel for his work on Linux for s390 and s390x.

   * Thorsten Kukuk for providing an implementation for NIS (YP) and
     NIS+, securelevel 0, 1 and 2 and for the implementation for a
     caching daemon for NSS (`nscd').

   * Jeff Law for various fixes.

   * Doug Lea for contributing the memory allocation functions
     functions `malloc', `realloc' and `free' and related code.

   * Chris Leonard for various fixes and enhancements to localedata.

   * Hongjiu Lu for providing the support for a Linux 32-bit runtime
     environment under x86-64 (x32), for porting to Linux on IA64, for
     improved string functions, a framework for testing IFUNC
     implementations, and many bug fixes.

   * Luis Machado for optimized functions on PowerPC.

   * David J. MacKenzie for his contribution to the `getopt' function
     and writing the `tar.h' header.

   * Greg McGary for adding runtime support for bounds checking.

   * Roland McGrath for writing most of the GNU C Library originally,
     for his work on the Hurd port, his direction as part of the GNU C
     Library steering committee and as FSF Project Steward for the GNU
     C Library, and for many bug fixes and reviewing of contributions.

   * Allan McRae for various fixes.

   * Jason Merrill for the port to the Sequent Symmetry running Dynix
     version 3 (`i386-sequent-bsd').

   * Chris Metcalf for the port to Linux/Tile (`tilegx-ANYTHING-linux'
     and `tilepro-ANYTHING-linux').

   * David Miller for contributing the port to Linux/Sparc
     (`sparc*-ANYTHING-linux').

   * Alan Modra for his improvements for Linux on PowerPC.

   * David Mosberger-Tang for contributing the port to Linux/Alpha
     (`alpha-ANYTHING-linux').

   * Stephen Moshier for implementing some 128-bit long double format
     math functions.

   * Stephen Munroe for his port to Linux on PowerPC64
     (`powerpc64-ANYTHING-linux') and for adding optimized
     implementations for PowerPC.

   * Joseph S. Myers for numerous bug fixes for the libm functions, for
     his maintainership of the ARM and MIPS architectures, improving
     cross-compilation and cross-testing of the GNU C Library, expanded
     coverage of conformtest, merging the ports/ subdirectory into the
     GNU C Library main repository and his direction as FSF Project
     Steward for the GNU C Library.

   * Will Newton for contributing some optimized string functions and
     pointer encryption support for ARM and various fixes.

   * Carlos O'Donell for his maintainership of the HPPA architecture,
     for maintaining the GNU C Library web pages and wiki, for his
     direction as FSF Project Steward for the GNU C Library and various
     bug fixes.

   * Alexandre Oliva for adding TLS descriptors for LD and GD on x86 and
     x86-64, for the am33 port, for completing the MIPS n64/n32/o32
     multilib port, for thread-safety, async-signal safety and
     async-cancellation safety documentation in the manual, for his
     direction as FSF Project Maintainer and for various fixes.

   * Paul Pluzhnikov for various fixes.

   * Marek Polacek for various fixes.

   * Siddhesh Poyarekar for various fixes and an implementation of a
     framework for performance benchmarking of functions.

   * Tom Quinn for contributing the startup code to support SunOS shared
     libraries and the port to SGI machines running Irix 4
     (`mips-sgi-irix4').

   * Pravin Satpute for writing sorting rules for some Indian languages.

   * Douglas C. Schmidt for writing the quick sort function used as a
     fallback by `qsort'.

   * Will Schmidt for optimized string functions on PowerPC.

   * Andreas Schwab for the port to Linux/m68k (`m68k-ANYTHING-linux')
     and for his direction as part of the GNU C Library steering
     committee.

   * Martin Schwidefsky for porting to Linux on s390
     (`s390-ANYTHING-linux') and s390x (`s390x-ANYTHING-linux').

   * Thomas Schwinge for his contribution to Hurd and the SH
     architecture.

   * Carlos Eduardo Seo for optimized functions on PowerPC.

   * Marcus Shawcroft for contributing the AArch64 port.

   * Franz Sirl for various fixes.

   * Jes Sorensen for porting to Linux on IA64 (`ia64-ANYTHING-linux').

   * Richard Stallman for his contribution to the `getopt' function.

   * Alfred M. Szmidt for various fixes.

   * Ian Lance Taylor for contributing the port to the MIPS DECStation
     running Ultrix 4 (`mips-dec-ultrix4').

   * Samuel Thibault for improving the Hurd port.

   * Tim Waugh for the implementation of the POSIX.2 `wordexp' function
     family.

   * Eric Youngdale for implementing versioning of objects on the
     symbol level.

   * Adhemerval Zanella for optimized functions on PowerPC.


   Some code in the GNU C Library comes from other projects and might
be under a different license:

   * The timezone support code is derived from the public-domain
     timezone package by Arthur David Olson and his many contributors.

   * Some of the support code for Mach is taken from Mach 3.0 by CMU;
     the file if_ppp.h is also copyright by CMU, but under a different
     license; see the file `LICENSES' for the text of the licenses.

   * The random number generation functions `random', `srandom',
     `setstate' and `initstate', which are also the basis for the
     `rand' and `srand' functions, were written by Earl T. Cohen for
     the University of California at Berkeley and are copyrighted by the
     Regents of the University of California.  They have undergone minor
     changes to fit into the GNU C Library and to fit the ISO C
     standard, but the functional code is Berkeley's.

   * The Internet-related code (most of the `inet' subdirectory) and
     several other miscellaneous functions and header files have been
     included from 4.4 BSD with little or no modification.  The copying
     permission notice for this code can be found in the file `LICENSES'
     in the source distribution.

   * The `getaddrinfo' and `getnameinfo' functions and supporting code
     were written by Craig Metz; see the file `LICENSES' for details on
     their licensing.

   * The DNS resolver code is taken directly from BIND 4.9.5, which
     includes copyrighted code from UC Berkeley and from Digital
     Equipment Corporation.  See the file `LICENSES' for the text of
     the DEC license.

   * The code to support Sun RPC is taken verbatim from Sun's
     RPCSRC-4.0 distribution; see the file `LICENSES' for the text of
     the license.

   * The math functions are taken from `fdlibm-5.1' by Sun
     Microsystems, as modified by J.T. Conklin, Ian Lance Taylor,
     Ulrich Drepper, Andreas Schwab, and Roland McGrath.

   * Many of the IEEE 64-bit double precision math functions (in the
     `sysdeps/ieee754/dbl-64' subdirectory) come from the IBM Accurate
     Mathematical Library, contributed by IBM.

   * Many of the IA64 math functions are taken from a collection of
     "Highly Optimized Mathematical Functions for Itanium" that Intel
     makes available under a free license; see the file `LICENSES' for
     details.



File: libc.info,  Node: Free Manuals,  Next: Copying,  Prev: Contributors,  Up: Top

Appendix G Free Software Needs Free Documentation
*************************************************

The biggest deficiency in the free software community today is not in
the software--it is the lack of good free documentation that we can
include with the free software.  Many of our most important programs do
not come with free reference manuals and free introductory texts.
Documentation is an essential part of any software package; when an
important free software package does not come with a free manual and a
free tutorial, that is a major gap.  We have many such gaps today.

   Consider Perl, for instance.  The tutorial manuals that people
normally use are non-free.  How did this come about?  Because the
authors of those manuals published them with restrictive terms--no
copying, no modification, source files not available--which exclude
them from the free software world.

   That wasn't the first time this sort of thing happened, and it was
far from the last.  Many times we have heard a GNU user eagerly
describe a manual that he is writing, his intended contribution to the
community, only to learn that he had ruined everything by signing a
publication contract to make it non-free.

   Free documentation, like free software, is a matter of freedom, not
price.  The problem with the non-free manual is not that publishers
charge a price for printed copies--that in itself is fine.  (The Free
Software Foundation sells printed copies of manuals, too.)  The problem
is the restrictions on the use of the manual.  Free manuals are
available in source code form, and give you permission to copy and
modify.  Non-free manuals do not allow this.

   The criteria of freedom for a free manual are roughly the same as for
free software.  Redistribution (including the normal kinds of
commercial redistribution) must be permitted, so that the manual can
accompany every copy of the program, both on-line and on paper.

   Permission for modification of the technical content is crucial too.
When people modify the software, adding or changing features, if they
are conscientious they will change the manual too--so they can provide
accurate and clear documentation for the modified program.  A manual
that leaves you no choice but to write a new manual to document a
changed version of the program is not really available to our community.

   Some kinds of limits on the way modification is handled are
acceptable.  For example, requirements to preserve the original
author's copyright notice, the distribution terms, or the list of
authors, are ok.  It is also no problem to require modified versions to
include notice that they were modified.  Even entire sections that may
not be deleted or changed are acceptable, as long as they deal with
nontechnical topics (like this one).  These kinds of restrictions are
acceptable because they don't obstruct the community's normal use of
the manual.

   However, it must be possible to modify all the _technical_ content
of the manual, and then distribute the result in all the usual media,
through all the usual channels.  Otherwise, the restrictions obstruct
the use of the manual, it is not free, and we need another manual to
replace it.

   Please spread the word about this issue.  Our community continues to
lose manuals to proprietary publishing.  If we spread the word that
free software needs free reference manuals and free tutorials, perhaps
the next person who wants to contribute by writing documentation will
realize, before it is too late, that only free manuals contribute to
the free software community.

   If you are writing documentation, please insist on publishing it
under the GNU Free Documentation License or another free documentation
license.  Remember that this decision requires your approval--you don't
have to let the publisher decide.  Some commercial publishers will use
a free license if you insist, but they will not propose the option; it
is up to you to raise the issue and say firmly that this is what you
want.  If the publisher you are dealing with refuses, please try other
publishers.  If you're not sure whether a proposed license is free,
write to <licensing@gnu.org>.

   You can encourage commercial publishers to sell more free, copylefted
manuals and tutorials by buying them, and particularly by buying copies
from the publishers that paid for their writing or for major
improvements.  Meanwhile, try to avoid buying non-free documentation at
all.  Check the distribution terms of a manual before you buy it, and
insist that whoever seeks your business must respect your freedom.
Check the history of the book, and try reward the publishers that have
paid or pay the authors to work on it.

   The Free Software Foundation maintains a list of free documentation
published by other publishers, at
`http://www.fsf.org/doc/other-free-books.html'.

