gettimeofday: port recent C++ fix to Emacs
[gnulib.git] / doc / gnulib.texi
index 0e2ed96..1ff7720 100644 (file)
@@ -1,10 +1,15 @@
 \input texinfo   @c -*-texinfo-*-
-@comment $Id: gnulib.texi,v 1.44 2007-09-09 13:20:45 haible Exp $
 @comment %**start of header
 @setfilename gnulib.info
 @settitle GNU Gnulib
+@c Define a new index for the magic constants in regex.texi.
+@defcodeindex cn
 @syncodeindex fn cp
+@syncodeindex ky cp
 @syncodeindex pg cp
+@syncodeindex tp cp
+@syncodeindex vr cp
+@syncodeindex cn cp
 @ifclear texi2html
 @firstparagraphindent insert
 @end ifclear
@@ -18,15 +23,14 @@ This manual is for GNU Gnulib (updated @value{UPDATED}),
 which is a library of common routines intended to be shared at the
 source level.
 
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008 Free Software
-Foundation, Inc.
+Copyright @copyright{} 2004--2013 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.1 or
+under the terms of the GNU Free Documentation License, Version 1.3 or
 any later version published by the Free Software Foundation; with no
-Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts.  A copy of the license is included in the section entitled
-``GNU Free Documentation License.''
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
 @end copying
 
 @dircategory Software development
@@ -53,15 +57,20 @@ Texts.  A copy of the license is included in the section entitled
 @end ifnottex
 
 @menu
-* Introduction::
+* Brief Overview::
+* Philosophy::
 * Invoking gnulib-tool::
+* Writing modules::
+* Extending Gnulib::
 * Miscellaneous Notes::
 * POSIX Substitutes Library::       Building as a separate substitutes library.
 * Header File Substitutes::         Overriding system headers.
 * Function Substitutes::            Replacing system functions.
+* Legacy Function Substitutes::     Replacing system functions.
 * Glibc Header File Substitutes::   Overriding system headers.
 * Glibc Function Substitutes::      Replacing system functions.
 * Particular Modules::              Documentation of individual modules.
+* Regular expressions::             The regex module.
 * GNU Free Documentation License::  Copying and sharing this manual.
 * Index::
 @end menu
@@ -78,26 +87,38 @@ If you need this particular \thing\, you may write to
 @w{@code{<bug-gnulib at gnu dot org>}}.
 @end macro
 
-@node Introduction
-@chapter Introduction
 
-Gnulib is a source code library. It provides basic functionalities to
-programs and libraries.  Currently (as of October 2006) more than 30
-packages make use of Gnulib.
+@node Brief Overview
+@chapter Brief Overview
+
+Gnulib is a source code library that provides basic functionality to
+programs and libraries.  Many software packages make use of Gnulib
+to avoid reinventing the portability wheel.
 
 Resources:
 
 @itemize
 @item Gnulib is hosted at Savannah:
       @url{http://savannah.gnu.org/projects/gnulib}.  Get the sources
-      through Git or CVS from there.
+      through Git from there.
 @item The Gnulib home page:
       @url{http://www.gnu.org/software/gnulib/}.
 @end itemize
 
+@include gnulib-readme.texi
+
+@node Philosophy
+@chapter Philosophy
+
+Gnulib's design and development philosophy is organized around steady,
+collaborative, and open development of reusable modules that are
+suitable for a reasonably wide variety of platforms.
+
 @menu
+* Benefits::
 * Library vs Reusable Code::
 * Portability and Application Code::
+* Target Platforms::
 * Modules::
 * Various Kinds of Modules::
 * Collaborative Development::
@@ -112,37 +133,53 @@ Resources:
 @include gnulib-tool.texi
 
 
-@node Miscellaneous Notes
-@chapter Miscellaneous Notes
+@node Writing modules
+@chapter Writing modules
+
+This chapter explains how to write modules of your own, either to
+extend Gnulib for your own package (@pxref{Extending Gnulib}), or for
+inclusion in gnulib proper.
+
+The guidelines in this chapter do not necessarily need to be followed for
+using @code{gnulib-tool}.  They merely represent a set of good practices.
+Following them will result in a good structure of your modules and in
+consistency with gnulib.
 
 @menu
-* Comments::
+* Source code files::
 * Header files::
-* Out of memory handling::
-* Library version handling::
-* Windows sockets::
-* Libtool and Windows::
-* License Texinfo sources::
-* Build robot for gnulib::
+* Implementation files::
+* Specification::
+* Module description::
+* Autoconf macros::
+* Unit test modules::
+* Incompatible changes::
 @end menu
 
 
-@node Comments
-@section Comments
+@node Source code files
+@section Source code files
 
-@cindex comments describing functions
-@cindex describing functions, locating
-Where to put comments describing functions: Because of risk of
-divergence, we prefer to keep most function describing comments in
-only one place: just above the actual function definition.  Some
-people prefer to put that documentation in the .h file.  In any case,
-it should appear in just one place unless you can ensure that the
-multiple copies will always remain identical.
+Every API (C functions or variables) provided should be declared in a header
+file (.h file) and implemented in one or more implementation files (.c files).
+The separation has the effect that users of your module need to read only
+the contents of the .h file and the module description in order to understand
+what the module is about and how to use it---not the entire implementation.
+Furthermore, users of your module don't need to repeat the declarations of
+the functions in their code, and are likely to receive notification through
+compiler errors if you make incompatible changes to the API (like, adding a
+parameter or changing the return type of a function).
 
 
 @node Header files
 @section Header files
 
+The .h file should declare the C functions and variables that the module
+provides.
+
+The .h file should be stand-alone.  That is, it does not require other .h files
+to be included before.  Rather, it includes all necessary .h files by itself.
+
 @cindex double inclusion of header files
 @cindex header file include protection
 It is a tradition to use CPP tricks to avoid parsing the same header
@@ -199,59 +236,704 @@ preference might depend on whether you consider the API exported by
 your header file as something available for C programs only, or for C
 and C++ programs alike.
 
+Note that putting a @code{#include} in an @code{extern "C" @{ ... @}}
+block yields a syntax error in C++ mode on some platforms (e.g., glibc
+systems with g++ v3.3 to v4.2, AIX, OSF/1, IRIX).  For this reason, it
+is recommended to place the @code{#include} before the @code{extern
+"C"} block.
+
+@node Implementation files
+@section Implementation files
+
+The .c file or files implement the functions and variables declared in the
+.h file.
+
 @subheading Include ordering
 
-When writing a gnulib module, or even in general, a good way to order
-the @samp{#include} directives is the following.
+Every implementation file must start with @samp{#include <config.h>}.
+This is necessary for activating the preprocessor macros that are defined
+on behalf of the Autoconf macros.  Some of these preprocessor macros,
+such as @code{_GNU_SOURCE}, would have no effect if defined after a system
+header file has already been included.
+
+Then comes the @samp{#include "..."} specifying the header file that is
+being implemented.  Putting this right after @samp{#include <config.h>}
+has the effect that it verifies that the header file is self-contained.
+
+Then come the system and application headers. It is customary to put all the
+system headers before all application headers, so as to minimize the risk
+that a preprocessor macro defined in an application header confuses the system
+headers on some platforms.
+
+In summary:
 
 @itemize
-@item First comes the #include "..." specifying the module being implemented.
-@item Then come all the #include <...> of system or system-replacement headers,
+@item
+First comes #include <config.h>.
+@item
+Second comes the #include "..." specifying the module being implemented.
+@item
+Then come all the #include <...> of system or system-replacement headers,
 in arbitrary order.
-@item Then come all the #include "..." of gnulib and private headers, in
+@item
+Then come all the #include "..." of gnulib and application headers, in
 arbitrary order.
 @end itemize
 
 
+@node Specification
+@section Specification
+
+The specification of a function should answer at least the following
+questions:
+@itemize
+@item
+What is the purpose of the function?
+@item
+What are the arguments?
+@item
+What is the return value?
+@item
+What happens in case of failure? (Exit? A specific return value? Errno set?)
+@item
+Memory allocation policy: If pointers to memory are returned, are they freshly
+allocated and supposed to be freed by the caller?
+@end itemize
+
+@cindex specification
+@cindex comments describing functions
+@cindex describing functions, locating
+Where to put the specification describing exported functions? Three practices
+are used in gnulib:
+
+@itemize
+@item
+The specification can be as comments in the header file, just above the
+function declaration.
+@item
+The specification can be as comments in the implementation file, just above
+the function definition.
+@item
+The specification can be in texinfo format, so that it gets included in the
+gnulib manual.
+@end itemize
+
+In any case, the specification should appear in just one place, unless you can
+ensure that the multiple copies will always remain identical.
+
+The advantage of putting it in the header file is that the user only has to
+read the include file normally never needs to peek into the implementation
+file(s).
+
+The advantage of putting it in the implementation file is that when reviewing
+or changing the implementation, you have both elements side by side.
+
+The advantage of texinfo formatted documentation is that it is easily
+published in HTML or Info format.
+
+Currently (as of 2010), half of gnulib uses the first practice, nearly half
+of gnulib uses the second practice, and a small minority uses the texinfo
+practice.
+
+
+@node Module description
+@section Module description
+
+For the module description, you can start from an existing module's
+description, or from a blank one: @file{module/TEMPLATE} for a normal module,
+or @file{module/TEMPLATE-TESTS} for a unit test module.  Some more fields
+are possible but rarely used.  Use @file{module/TEMPLATE-EXTENDED} if you
+want to use one of them.
+
+Module descriptions have the following fields.  Absent fields are equivalent
+to fields with empty contents.
+
+@table @asis
+@item Description
+This field should contain a concise description of the module's functionality.
+One sentence is enough.  For example, if it defines a single function
+@samp{frob}, the description can be @samp{frob() function: frobnication.}
+Gnulib's documentation generator will automatically convert the first part
+to a hyperlink when it has this form.
+
+@item Status
+This field is either empty/absent, or contains the word @samp{obsolete}.  In
+the latter case, @command{gnulib-tool} will, unless the option
+@code{--with-obsolete} is given, omit it when it used as a dependency.  It is
+good practice to also notify the user about an obsolete module.  This is done
+by putting into the @samp{Notice} section (see below) text like
+@samp{This module is obsolete.}
+
+@item Notice
+This field contains text that @command{gnulib-tool} will show to the user
+when the module is used.  This can be a status indicator like
+@samp{This module is obsolete.} or additional advice.  Do not abuse this
+field.
+
+@item Applicability
+This field is either empty/absent, or contains the word @samp{all}.  It
+describes to which @code{Makefile.am} the module is applied.  By default,
+a normal module is applied to @code{@var{source_base}/Makefile.am}
+(normally @code{lib/Makefile.am}), whereas a module ending in @code{-tests}
+is applied to @code{@var{tests_base}/Makefile.am} (normally
+@code{tests/Makefile.am}).  If this field is @samp{all}, it is applied to
+both @code{Makefile.am}s.  This is useful for modules which provide
+Makefile.am macros rather than compiled source code.
+
+@item Files
+This field contains a newline separated list of the files that are part of
+the module.  @code{gnulib-tool} copies these files into the package that
+uses the module.
+
+This list is typically ordered by importance: First comes the header file,
+then the implementation files, then other files.
+
+It is possible to have the same file mentioned in multiple modules.  That is,
+if the maintainers of that module agree on the purpose and future of said
+file.
+
+@item Depends-on
+This field contains a newline separated list of the modules that are required
+for the proper working of this module.  @code{gnulib-tool} includes each
+required module automatically, unless it is specified with option
+@code{--avoid} or it is marked as obsolete and the option
+@code{--with-obsolete} is not given.
+
+A test modules @code{foo-tests} implicitly depends on the corresponding non-test
+module @code{foo}.  @code{foo} implicitly depends on @code{foo-tests} if the
+latter exists and if the option @code{--with-tests} has been given.
+
+Tests modules can depend on non-tests modules.  Non-tests modules should not
+depend on tests modules. (Recall that tests modules are built in a separate
+directory.)
+
+Each listed required module may be declared a conditional dependency.  This
+is indicated by placing the condition for the dependency on the same line,
+enclosed in brackets, after the name of the required module.  The condition
+is a shell expression that is run after the module's @code{configure.ac}
+statements.  For example:
+@smallexample
+strtoull   [test $ac_cv_func_strtoumax = no]
+@end smallexample
+
+Lines starting with @code{#} are recognized as comments and are ignored.
+
+@item configure.ac-early
+This field contains @file{configure.ac} stuff (Autoconf macro invocations and
+shell statements) that are logically placed early in the @file{configure.ac}
+file: right after the @code{AC_PROG_CC} invocation.  This section is adequate
+for statements that modify @code{CPPFLAGS}, as these can affect the results of
+other Autoconf macros.
+
+@item configure.ac
+This field contains @file{configure.ac} stuff (Autoconf macro invocations and
+shell statements).
+
+It is forbidden to add items to the @code{CPPFLAGS} variable here, other than
+temporarily, as these could affect the results of other Autoconf macros.
+
+We avoid adding items to the @code{LIBS} variable, other than temporarily.
+Instead, the module can export an Autoconf-substituted variable that contains
+link options.  The user of the module can then decide to which executables
+to apply which link options.  Recall that a package can build executables of
+different kinds and purposes; having all executables link against all
+libraries is inappropriate.
+
+If the statements in this section grow larger than a couple of lines, we
+recommend moving them to a @code{.m4} file of their own.
+
+@item Makefile.am
+This field contains @code{Makefile.am} statements.  Variables like
+@code{lib_SOURCES} are transformed to match the name of the library
+being built in that directory.  For example, @code{lib_SOURCES} may become
+@code{libgnu_a_SOURCES} (for a plain library) or @code{libgnu_la_SOURCES}
+(for a libtool library).  Therefore, the normal way of having an
+implementation file @code{lib/foo.c} compiled unconditionally is to write
+@smallexample
+lib_SOURCES += foo.c
+@end smallexample
+
+@item Include
+This field contains the preprocessor statements that users of the module
+need to add to their source code files.  Typically it's a single include
+statement.  A shorthand is allowed: You don't need to write the word
+``#include'', just the name of the include file in the way it will appear
+in an include statement.  Example:
+@smallexample
+"foo.h"
+@end smallexample
+
+@item Link
+This field contains the set of libraries that are needed when linking
+libraries or executables that use this module.  Often this will be
+written as a reference to a Makefile variable.  Please write them
+one per line, so that @command{gnulib-tool} can remove duplicates
+when presenting a summary to the user.
+Example:
+@smallexample
+$(POW_LIBM)
+$(LTLIBICONV) when linking with libtool, $(LIBICONV) otherwise
+@end smallexample
+
+@item License
+This field specifies the license that governs the source code parts of
+this module.  See @ref{Copyright} for details.
+
+@item Maintainer
+This field specifies the persons who have a definitive say about proposed
+changes to this module.  You don't need to mention email addresses here:
+they can be inferred from the @code{ChangeLog} file.
+
+Please put at least one person here.  We don't like unmaintained modules.
+@end table
+
+
+@node Autoconf macros
+@section Autoconf macros
+
+For a module @code{foo}, an Autoconf macro file @file{m4/foo.m4} is typically
+created when the Autoconf macro invocations for the module are longer than
+one or two lines.
+
+The name of the main entry point into this Autoconf macro file is typically
+@code{gl_FOO}.  For modules outside Gnulib that are not likely to be moved
+into Gnulib, please use a prefix specific to your package: @code{gt_} for
+GNU gettext, @code{cu_} for GNU coreutils, etc.
+
+For modules that define a function @code{foo}, the entry point is called
+@code{gl_FUNC_FOO} instead of @code{gl_FOO}.  For modules that provide a
+header file with multiple functions, say @code{foo.h}, the entry point is
+called @code{gl_FOO_H} or @code{gl_HEADER_FOO_H}.  This convention is useful
+because sometimes a header and a function name coincide (for example,
+@code{fcntl} and @code{fcntl.h}).
+
+For modules that provide a replacement, it is useful to split the Autoconf
+macro into two macro definitions: one that detects whether the replacement
+is needed and requests the replacement using @code{AC_LIBOBJ} (this is the
+entry point, say @code{gl_FUNC_FOO}), and one that arranges for the macros
+needed by the replacement code @code{lib/foo.c} (typically called
+@code{gl_PREREQ_FOO}).  The reason of this separation is
+@enumerate
+@item
+to make it easy to update the Autoconf macros when you have modified the
+source code file: after changing @code{lib/foo.c}, all you have to review
+is the @code{Depends-on} section of the module description and the
+@code{gl_PREREQ_FOO} macro in the Autoconf macro file.
+@item
+The Autoconf macros are often large enough that splitting them eases
+maintenance.
+@end enumerate
+
+
+@node Unit test modules
+@section Unit test modules
+
+A unit test that is a simple C program usually has a module description as
+simple as this:
+
+@smallexample
+Files:
+tests/test-foo.c
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-foo
+check_PROGRAMS += test-foo
+@end smallexample
+
+The test program @file{tests/test-foo.c} often has the following structure:
+
+@itemize
+@item
+First comes the obligatory @samp{#include <config.h>}.
+
+@item
+Second comes the include of the header file that declares the API being tested.
+Including it here verifies that said header file is self-contained.
+
+@item
+Then come other includes.  In particular, the file @file{macros.h} is often
+used here.  It contains a convenient @code{ASSERT} macro.
+@end itemize
+
+The body of the test, then, contains many @code{ASSERT} invocations.  When
+a test fails, the @code{ASSERT} macro prints the line number of the failing
+statement, thus giving you, the developer, an idea of which part of the test
+failed, even when you don't have access to the machine where the test failed
+and the reporting user cannot run a debugger.
+
+Sometimes it is convenient to write part of the test as a shell script.
+(For example, in areas related to process control or interprocess
+communication, or when different locales should be tried.) In these cases,
+the typical module description is like this:
+
+@smallexample
+Files:
+tests/test-foo.sh
+tests/test-foo.c
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-foo.sh
+TESTS_ENVIRONMENT += FOO_BAR='@@FOO_BAR@@'
+check_PROGRAMS += test-foo
+@end smallexample
+
+Here, the @code{TESTS_ENVIRONMENT} variable can be used to pass values
+determined by @code{configure} or by the @code{Makefile} to the shell
+script, as environment variables.  The values of @code{EXEEXT} and of
+@code{srcdir}, from Autoconf and Automake, are already provided as
+environment variables, through an initial value of @code{TESTS_ENVIRONMENT}
+that @code{gnulib-tool} puts in place.
+
+Regardless of the specific form of the unit test, the following guidelines
+should be respected:
+
+@itemize
+@item
+A test indicates success by exiting with exit code 0.  It should normally
+not produce output in this case.  (Output to temporary files that are
+cleaned up at the end of the test are possible, of course.)
+@item
+A test indicates failure by exiting with an exit code different from 0 and 77,
+typically 1.  It is useful to print a message about the failure in this case.
+The @code{ASSERT} macro already does so.
+@item
+A test indicates "skip", that is, that most of its interesting functionality
+could not be performed, through a return code of 77.  A test should also
+print a message to stdout or stderr about the reason for skipping.
+For example:
+@smallexample
+  fputs ("Skipping test: multithreading not enabled\n", stderr);
+  return 77;
+@end smallexample
+Such a message helps detecting bugs in the autoconf macros: A simple message
+@samp{SKIP: test-foo} does not sufficiently catch the attention of the user.
+@end itemize
+
+
+@node Incompatible changes
+@section Incompatible changes
+
+Incompatible changes to Gnulib modules should be mentioned in Gnulib's
+@file{NEWS} file.  Incompatible changes here mean that existing source code
+may not compile or work any more.
+
+We don't mean changes in the binary interface (ABI), since
+@enumerate
+@item
+Gnulib code is used in source-code form.
+@item
+The user who distributes libraries that contain Gnulib code is supposed to
+bump the version number in the way described in the Libtool documentation
+before every release.
+@end enumerate
+
+
+@node Extending Gnulib
+@chapter Extending Gnulib
+
+Gnulib modules are intended to be suitable for widespread use.  Most
+problems with Gnulib can and should be fixed in a generic way, so that
+all of Gnulib's users can benefit from the change.  But occasionally a
+problem arises that is difficult or undesirable to fix generically, or
+a project that uses Gnulib may need to work around an issue before the
+Gnulib maintainers commit a final fix.  Maintainers may also want to
+add their own pools of modules to projects as Gnulib ``staging
+areas.''
+
+The obvious way to make local changes to Gnulib modules is to use
+@command{gnulib-tool} to check out pristine modules, then to modify
+the results in-place.  This works well enough for short-lived
+experiments.  It is harder to keep modified versions of Gnulib modules
+for a long time, even though Git (or another distributed version
+control systems) can help out a lot with this during the development
+process.
+
+Git, however, doesn't address the distribution issue.  When a package
+``foobar'' needs a modified version of, say, @file{stdint.in.h}, it
+either has to put a comment into @file{foobar/autogen.sh} saying
+``Attention! This doesn't work with a pristine Gnulib, you need this
+and that patch after checking out Gnulib,'' or it has to use the
+@samp{--avoid=stdint} option and provide the modified @code{stdint}
+module in a different directory.
+
+The @option{--local-dir} option to @command{gnulib-tool} solves this
+problem.  It allows the package to override or augment Gnulib.  This
+means:
+
+@itemize @bullet
+@item
+You can store files that are to override Gnulib files or modules.
+
+@item
+You can store context diffs to be applied to Gnulib files.
+
+@item
+You can add modules of your own, that are not (yet) in Gnulib.
+
+@item
+You can also add unstructured amounts of code to the library, by
+grouping the non-Gnulib files of the library in a single kitchen-sink
+``module.''  (This kind of kitchen-sink module is not needed when you
+use the @command{gnulib-tool} option @samp{--makefile-name}.)
+@end itemize
+
+In a release tarball, you can distribute the contents of this
+@option{--local-dir} directory that will be combinable with newer
+versions of Gnulib, barring incompatible changes to Gnulib.
+
+If the @samp{--local-dir=@var{directory}} option is specified, then
+@command{gnulib-tool} looks in @file{@var{directory}} whenever it
+reads a file from the Gnulib directory.  Suppose @command{gnulib-tool}
+is looking for @var{file}.  Then:
+
+@itemize @bullet
+@item
+If @file{@var{directory}/@var{file}} exists, then @samp{gnulib-tool} uses
+it instead of the file included in Gnulib.
+
+@item
+Otherwise, if @file{@var{directory}/@var{file}.diff} exists, then
+@command{gnulib-tool} uses the file from Gnulib after applying the diff
+using the @command{patch} program.
+
+@item
+Otherwise, @command{gnulib-tool} uses the file included in Gnulib.
+@end itemize
+
+Please make wise use of this option.  It also allows you to easily
+hold back modifications you make to Gnulib macros in cases it may be
+better to share them.
+
+
+
+@node Miscellaneous Notes
+@chapter Miscellaneous Notes
+
+@menu
+* Out of memory handling::
+* Obsolete modules::
+* Extra tests modules::
+* A C++ namespace for gnulib::      A different way of using Gnulib in C++
+* Library version handling::
+* Windows sockets::
+* Libtool and Windows::
+* License Texinfo sources::
+* Build robot for gnulib::
+@end menu
+
+
 @node Out of memory handling
 @section Out of memory handling
 
 @cindex Out of Memory handling
 @cindex Memory allocation failure
-The GSS API does not have a standard error code for the out of memory
-error condition.  Instead of adding a non-standard error code, this
-library has chosen to adopt a different strategy.  Out of memory
-handling happens in rare situations, but performing the out of memory
-error handling after almost all API function invocations pollute your
-source code and might make it harder to spot more serious problems.
-The strategy chosen improves code readability and robustness.
+The gnulib API does not have a standard error code for the out of memory
+error condition.  Instead of adding a non-standard error code, gnulib
+has chosen to adopt a different strategy.  Out of memory handling
+happens in rare situations, but performing the out of memory error
+handling after almost all API function invocations pollute your source
+code and might make it harder to spot more serious problems.  The
+strategy chosen improves code readability and robustness.
 
 @cindex Aborting execution
 For most applications, aborting the application with an error message
 when the out of memory situation occurs is the best that can be wished
-for.  This is how the library behaves by default.
-
-@vindex xalloc_fail_func
-However, we realize that some applications may not want to have the
-GSS library abort execution in any situation.  The GSS library supports
-a hook to let the application regain control and perform its own
-cleanups when an out of memory situation has occurred.  The application
-can define a function (having a @code{void} prototype, i.e., no return
-value and no parameters) and set the library variable
-@code{xalloc_fail_func} to that function.  The variable should be
+for.  This is how the library behaves by default (using
+the @samp{xalloc-die} module).
+
+@vindex xalloc_die
+However, we realize that some applications may not want to abort
+execution in any situation.  Gnulib supports a hook to let the
+application regain control and perform its own cleanups when an out of
+memory situation has occurred.  The application can define a function
+(having a @code{void} prototype, i.e., no return value and no
+parameters) and set the library variable
+@code{xalloc_die} to that function.  The variable should be
 declared as follows.
 
 @example
-extern void (*xalloc_fail_func) (void);
+extern void (*xalloc_die) (void);
 @end example
 
-The GSS library will invoke this function if an out of memory error
-occurs.  Note that after this the GSS library is in an undefined
-state, so you must unload or restart the application to continue call
-GSS library functions.  The hook is only intended to allow the
-application to log the situation in a special way.  Of course, care
-must be taken to not allocate more memory, as that will likely also
-fail.
+Gnulib will invoke this function if an out of memory error occurs.  Note
+that the function should not return.  Of course, care must be taken to
+not allocate more memory, as that will likely also fail.
+
+
+@node Obsolete modules
+@section Obsolete modules
+
+@cindex Obsolete modules
+Modules can be marked obsolete.  This means that the problems they fix
+don't occur any more on the platforms that are reasonable porting targets
+now.  @code{gnulib-tool} warns when obsolete modules are mentioned on the
+command line, and by default ignores dependencies from modules to obsolete
+modules.  When you pass the option @code{--with-obsolete} to
+@code{gnulib-tool}, dependencies to obsolete modules will be included,
+however, unless blocked through an @code{--avoid} option.  This option
+is useful if your package should be portable even to very old platforms.
+
+In order to mark a module obsolete, you need to add this to the module
+description:
+
+@example
+Status:
+obsolete
+
+Notice:
+This module is obsolete.
+@end example
+
+
+@node Extra tests modules
+@section Extra tests modules
+
+@cindex Extra tests modules
+@cindex C++ tests modules
+@cindex tests modules, C++
+@cindex long-running tests modules
+@cindex tests modules, long-running
+@cindex privileged tests modules
+@cindex tests modules, privileged
+@cindex unportable tests modules
+@cindex tests modules, unportable
+Test modules can be marked with some special status attributes.  When a
+test module has such an attribute, @code{gnulib-tool --import} will not
+include it by default.
+
+The supported status attributes are:
+
+@table @code
+@item c++-test
+Indicates that the test is testing C++ interoperability.  Such a test is
+useful in a C++ or mixed C/C++ package, but is useless in a C package.
+
+@item longrunning-test
+Indicates that the test takes a long time to compile or execute (more
+than five minutes or so).  Such a test is better avoided in a release
+that is made for the general public.
+
+@item privileged-test
+Indicates that the test will request special privileges, for example,
+ask for the superuser password.  Such a test may hang when run
+non-interactively and is therefore better avoided in a release that is
+made for the general public.
+
+@item unportable-test
+Indicates that the test is known to fail on some systems, and that
+there is no workaround about it.  Such a test is better avoided in a
+release that is made for the general public.
+@end table
+
+@code{gnulib-tool --import --with-tests} will not include tests marked with
+these attributes by default.  When @code{gnulib-tool} is invoked with one
+of the options @code{--with-c++-tests}, @code{--with-longrunning-tests},
+@code{--with-privileged-tests}, @code{--with-unportable-tests}, it
+will include tests despite the corresponding special status attribute.
+When @code{gnulib-tool} receives the option @code{--with-all-tests},
+it will include all tests regardless of their status attributes.
+
+@code{gnulib-tool --create-testdir --with-tests} and
+@code{gnulib-tool --create-megatestdir --with-tests} by default include all
+tests of modules specified on the command line, regardless of their status
+attributes.  Tests of modules occurring as dependencies are not included
+by default if they have one of these status attributes.  The options
+@code{--with-c++-tests}, @code{--with-longrunning-tests},
+@code{--with-privileged-tests}, @code{--with-unportable-tests} are
+recognized here as well.  Additionally, @code{gnulib-tool} also
+understands the options @code{--without-c++-tests},
+@code{--without-longrunning-tests}, @code{--without-privileged-tests},
+@code{--without-unportable-tests}.
+
+In order to mark a module with a status attribute, you need to add it
+to the module description, like this:
+
+@example
+Status:
+longrunning-test
+@end example
+
+If only a part of a test deserves a particular status attribute, you
+can split the module into a primary and a secondary test module,
+say @code{foo-tests} and @code{foo-extra-tests}.  Then add a dependency
+from @code{foo-tests} to @code{foo-extra-tests}, and mark the
+@code{foo-extra-tests} with the particular status attribute.
+
+
+@node A C++ namespace for gnulib
+@section A C++ namespace for gnulib
+
+The function definitions provided by Gnulib (@code{.c} code) are meant
+to be compiled by a C compiler.  The header files (@code{.h} files),
+on the other hand, can be used in either C or C++.
+
+By default, when used in a C++ compilation unit, the @code{.h} files
+declare the same symbols and overrides as in C mode, except that functions
+defined by Gnulib or by the system are declared as @samp{extern "C"}.
+
+It is also possible to indicate to Gnulib to provide many of its symbols
+in a dedicated C++ namespace.  If you define the macro
+@code{GNULIB_NAMESPACE} to an identifier, many functions will be defined
+in the namespace specified by the identifier instead of the global
+namespace.  For example, after you have defined
+@smallexample
+#define GNULIB_NAMESPACE gnulib
+@end smallexample
+@noindent
+at the beginning of a compilation unit, Gnulib's @code{<fcntl.h>} header
+file will make available the @code{open} function as @code{gnulib::open}.
+The symbol @code{open} will still refer to the system's @code{open} function,
+with its platform specific bugs and limitations.
+
+The symbols provided in the Gnulib namespace are those for which the
+corresponding header file contains a @code{_GL_CXXALIAS_RPL} or
+@code{_GL_CXXALIAS_SYS} macro invocation.
+
+The benefits of this namespace mode are:
+@itemize
+@item
+Gnulib defines fewer symbols as preprocessor macros.  For example, on a
+platform where @code{open} has to be overridden, Gnulib normally does
+@code{#define open rpl_open}.  If your package has a class with a member
+@code{open}, for example a class @code{foo} with a method @code{foo::open},
+then if you define this member in a compilation unit that includes
+@code{<fcntl.h>} and use it in a compilation unit that does not include
+@code{<fcntl.h>}, or vice versa, you will get a link error.  Worse: You
+will not notice this problem on the platform where the system's @code{open}
+function works fine.  This problem goes away in namespace mode.
+
+@item
+It provides a safety check whether the set of modules your package requests
+from Gnulib is sufficient.  For example, if you use the function
+@code{gnulib::open} in your code, and you forgot to request the module
+@samp{open} from Gnulib, you will get a compilation error (regardless of
+the platform).
+@end itemize
+
+The drawback of this namespace mode is that the system provided symbols in
+the global namespace are still present, even when they contain bugs that
+Gnulib fixes.  For example, if you call @code{open (...)} in your code,
+it will invoke the possibly buggy system function, even if you have
+requested the module @samp{open} from gnulib-tool.
+
+You can turn on the namespace mode in some compilation units and keep it
+turned off in others.  This can be useful if your package consists of
+an application layer that does not need to invoke POSIX functions and
+an operating system interface layer that contains all the OS function
+calls.  In such a situation, you will want to turn on the namespace mode
+for the application layer---to avoid many preprocessor macro
+definitions---and turn it off for the OS interface layer---to avoid
+the drawback of the namespace mode, mentioned above.
 
 
 @node Library version handling
@@ -326,21 +1008,16 @@ other functions too.
 
 The getaddrinfo function exists in ws2tcpip.h and -lws2_32 on Windows
 XP.  The function declaration is present if @code{WINVER >= 0x0501}.
-Windows 2000 does not have getaddrinfo in its @file{WS2_32.dll}.
+Windows 2000 does not have getaddrinfo in its @file{WS2_32.DLL}.
 
 Thus, if you want to assume Windows XP or later, you can add
-AC_DEFINE(WINVER, 0x0501) to avoid compiling to (partial) getaddrinfo
+AC_DEFINE(WINVER, 0x0501) to avoid compiling the (partial) getaddrinfo
 implementation.
 
-If you want to support Windows 2000, don't do anything, but be aware
-that gnulib will use its own (partial) getaddrinfo implementation even
-on Windows XP.  Currently the code does not attempt to determine if
-the getaddrinfo function is available during runtime.
-
-Todo: Make getaddrinfo.c open the WS2_32.DLL and check for the
-getaddrinfo symbol and use it if present, otherwise fall back to our
-own implementation.
-
+If you want to support Windows 2000, don't do anything.  The
+replacement function will open @file{WS2_32.DLL} during run-time to
+see if there is a getaddrinfo function available, and use it when
+available.
 
 @node Libtool and Windows
 @section Libtool and Windows
@@ -396,7 +1073,7 @@ your favorite platform, you may perform these steps:
 @item Create gnulib directory
 
 On a machine with recent automake, autoconf, m4 installed and with a
-gnulib git or cvs checkout (typically a Linux machine), use
+gnulib git checkout (typically a Linux machine), use
 
 @example
 gnulib-tool --create-megatestdir --with-tests --dir=...
@@ -420,7 +1097,7 @@ And then transferring the @file{dummy-0.tar.gz} file.
 @item Build modules
 
 On the build machine, run ./do-autobuild (or "nohup ./do-autobuild").
-It creates a directory 'logs/' with a log file for each module.
+It creates a directory @file{logs/} with a log file for each module.
 
 @item Submit build logs
 
@@ -520,12 +1197,14 @@ which (known) portability problems are not worked around by Gnulib.
 * setjmp.h::
 * signal.h::
 * spawn.h::
+* stdalign.h::
 * stdarg.h::
 * stdbool.h::
 * stddef.h::
 * stdint.h::
 * stdio.h::
 * stdlib.h::
+* stdnoreturn.h::
 * string.h::
 * strings.h::
 * stropts.h::
@@ -553,6 +1232,7 @@ which (known) portability problems are not worked around by Gnulib.
 * tgmath.h::
 * time.h::
 * trace.h::
+* uchar.h::
 * ucontext.h::
 * ulimit.h::
 * unistd.h::
@@ -606,12 +1286,14 @@ which (known) portability problems are not worked around by Gnulib.
 @include posix-headers/setjmp.texi
 @include posix-headers/signal.texi
 @include posix-headers/spawn.texi
+@include posix-headers/stdalign.texi
 @include posix-headers/stdarg.texi
 @include posix-headers/stdbool.texi
 @include posix-headers/stddef.texi
 @include posix-headers/stdint.texi
 @include posix-headers/stdio.texi
 @include posix-headers/stdlib.texi
+@include posix-headers/stdnoreturn.texi
 @include posix-headers/string.texi
 @include posix-headers/strings.texi
 @include posix-headers/stropts.texi
@@ -639,6 +1321,7 @@ which (known) portability problems are not worked around by Gnulib.
 @include posix-headers/tgmath.texi
 @include posix-headers/time.texi
 @include posix-headers/trace.texi
+@include posix-headers/uchar.texi
 @include posix-headers/ucontext.texi
 @include posix-headers/ulimit.texi
 @include posix-headers/unistd.texi
@@ -688,6 +1371,8 @@ by Gnulib.
 * aio_suspend::
 * aio_write::
 * alarm::
+* aligned_alloc::
+* alphasort::
 * asctime::
 * asctime_r::
 * asin::
@@ -712,13 +1397,11 @@ by Gnulib.
 * atol::
 * atoll::
 * basename::
-* bcmp::
-* bcopy::
 * bind::
-* bsd_signal::
 * bsearch::
 * btowc::
-* bzero::
+* c16rtomb::
+* c32rtomb::
 * cabs::
 * cabsf::
 * cabsl::
@@ -839,16 +1522,18 @@ by Gnulib.
 * dbm_open::
 * dbm_store::
 * difftime::
+* dirfd::
 * dirname::
 * div::
 * dlclose::
 * dlerror::
 * dlopen::
 * dlsym::
+* dprintf::
 * drand48::
 * dup::
 * dup2::
-* ecvt::
+* duplocale::
 * encrypt::
 * endgrent::
 * endhostent::
@@ -885,19 +1570,22 @@ by Gnulib.
 * fabs::
 * fabsf::
 * fabsl::
+* faccessat::
 * fattach::
 * fchdir::
 * fchmod::
+* fchmodat::
 * fchown::
+* fchownat::
 * fclose::
 * fcntl::
-* fcvt::
 * fdatasync::
 * fdetach::
 * fdim::
 * fdimf::
 * fdiml::
 * fdopen::
+* fdopendir::
 * feclearexcept::
 * fegetenv::
 * fegetexceptflag::
@@ -911,6 +1599,7 @@ by Gnulib.
 * fesetround::
 * fetestexcept::
 * feupdateenv::
+* fexecve::
 * fflush::
 * ffs::
 * fgetc::
@@ -929,6 +1618,7 @@ by Gnulib.
 * fmax::
 * fmaxf::
 * fmaxl::
+* fmemopen::
 * fmin::
 * fminf::
 * fminl::
@@ -949,6 +1639,7 @@ by Gnulib.
 * fread::
 * free::
 * freeaddrinfo::
+* freelocale::
 * freopen::
 * frexp::
 * frexpf::
@@ -958,30 +1649,30 @@ by Gnulib.
 * fseeko::
 * fsetpos::
 * fstat::
+* fstatat::
 * fstatvfs::
 * fsync::
 * ftell::
 * ftello::
-* ftime::
 * ftok::
 * ftruncate::
 * ftrylockfile::
 * ftw::
 * funlockfile::
+* futimens::
 * fwide::
 * fwprintf::
 * fwrite::
 * fwscanf::
 * gai_strerror::
-* gcvt::
 * getaddrinfo::
 * getc::
 * getc_unlocked::
 * getchar::
 * getchar_unlocked::
-* getcontext::
 * getcwd::
 * getdate::
+* getdate_err::
 * getdelim::
 * getegid::
 * getenv::
@@ -993,8 +1684,6 @@ by Gnulib.
 * getgrnam::
 * getgrnam_r::
 * getgroups::
-* gethostbyaddr::
-* gethostbyname::
 * gethostent::
 * gethostid::
 * gethostname::
@@ -1040,13 +1729,11 @@ by Gnulib.
 * getutxline::
 * getwc::
 * getwchar::
-* getwd::
 * glob::
 * globfree::
 * gmtime::
 * gmtime_r::
 * grantpt::
-* h_errno::
 * hcreate::
 * hdestroy::
 * hsearch::
@@ -1067,7 +1754,6 @@ by Gnulib.
 * ilogbl::
 * imaxabs::
 * imaxdiv::
-* index::
 * inet_addr::
 * inet_ntoa::
 * inet_ntop::
@@ -1076,15 +1762,21 @@ by Gnulib.
 * insque::
 * ioctl::
 * isalnum::
+* isalnum_l::
 * isalpha::
+* isalpha_l::
 * isascii::
 * isastream::
 * isatty::
 * isblank::
+* isblank_l::
 * iscntrl::
+* iscntrl_l::
 * isdigit::
+* isdigit_l::
 * isfinite::
 * isgraph::
+* isgraph_l::
 * isgreater::
 * isgreaterequal::
 * isinf::
@@ -1092,27 +1784,46 @@ by Gnulib.
 * islessequal::
 * islessgreater::
 * islower::
+* islower_l::
 * isnan::
 * isnormal::
 * isprint::
+* isprint_l::
 * ispunct::
+* ispunct_l::
 * isspace::
+* isspace_l::
 * isunordered::
 * isupper::
+* isupper_l::
 * iswalnum::
+* iswalnum_l::
 * iswalpha::
+* iswalpha_l::
 * iswblank::
+* iswblank_l::
 * iswcntrl::
+* iswcntrl_l::
 * iswctype::
+* iswctype_l::
 * iswdigit::
+* iswdigit_l::
 * iswgraph::
+* iswgraph_l::
 * iswlower::
+* iswlower_l::
 * iswprint::
+* iswprint_l::
 * iswpunct::
+* iswpunct_l::
 * iswspace::
+* iswspace_l::
 * iswupper::
+* iswupper_l::
 * iswxdigit::
+* iswxdigit_l::
 * isxdigit::
+* isxdigit_l::
 * j0::
 * j1::
 * jn::
@@ -1132,6 +1843,7 @@ by Gnulib.
 * lgammaf::
 * lgammal::
 * link::
+* linkat::
 * lio_listio::
 * listen::
 * llabs::
@@ -1172,12 +1884,14 @@ by Gnulib.
 * lsearch::
 * lseek::
 * lstat::
-* makecontext::
 * malloc::
 * mblen::
 * mbrlen::
+* mbrtoc16::
+* mbrtoc32::
 * mbrtowc::
 * mbsinit::
+* mbsnrtowcs::
 * mbsrtowcs::
 * mbstowcs::
 * mbtowc::
@@ -1188,10 +1902,13 @@ by Gnulib.
 * memmove::
 * memset::
 * mkdir::
+* mkdirat::
+* mkdtemp::
 * mkfifo::
+* mkfifoat::
 * mknod::
+* mknodat::
 * mkstemp::
-* mktemp::
 * mktime::
 * mlock::
 * mlockall::
@@ -1226,6 +1943,7 @@ by Gnulib.
 * nearbyint::
 * nearbyintf::
 * nearbyintl::
+* newlocale::
 * nextafter::
 * nextafterf::
 * nextafterl::
@@ -1235,13 +1953,20 @@ by Gnulib.
 * nftw::
 * nice::
 * nl_langinfo::
+* nl_langinfo_l::
 * nrand48::
 * ntohl::
 * ntohs::
 * open::
+* openat::
 * opendir::
 * openlog::
+* open_memstream::
+* open_wmemstream::
 * optarg::
+* opterr::
+* optind::
+* optopt::
 * pathconf::
 * pause::
 * pclose::
@@ -1334,6 +2059,8 @@ by Gnulib.
 * pread::
 * printf::
 * pselect::
+* psiginfo::
+* psignal::
 * pthread_atfork::
 * pthread_attr_destroy::
 * pthread_attr_getdetachstate::
@@ -1343,7 +2070,6 @@ by Gnulib.
 * pthread_attr_getschedpolicy::
 * pthread_attr_getscope::
 * pthread_attr_getstack::
-* pthread_attr_getstackaddr::
 * pthread_attr_getstacksize::
 * pthread_attr_init::
 * pthread_attr_setdetachstate::
@@ -1353,7 +2079,6 @@ by Gnulib.
 * pthread_attr_setschedpolicy::
 * pthread_attr_setscope::
 * pthread_attr_setstack::
-* pthread_attr_setstackaddr::
 * pthread_attr_setstacksize::
 * pthread_barrier_destroy::
 * pthread_barrier_init::
@@ -1389,6 +2114,7 @@ by Gnulib.
 * pthread_key_create::
 * pthread_key_delete::
 * pthread_kill::
+* pthread_mutex_consistent::
 * pthread_mutex_destroy::
 * pthread_mutex_getprioceiling::
 * pthread_mutex_init::
@@ -1401,11 +2127,13 @@ by Gnulib.
 * pthread_mutexattr_getprioceiling::
 * pthread_mutexattr_getprotocol::
 * pthread_mutexattr_getpshared::
+* pthread_mutexattr_getrobust::
 * pthread_mutexattr_gettype::
 * pthread_mutexattr_init::
 * pthread_mutexattr_setprioceiling::
 * pthread_mutexattr_setprotocol::
 * pthread_mutexattr_setpshared::
+* pthread_mutexattr_setrobust::
 * pthread_mutexattr_settype::
 * pthread_once::
 * pthread_rwlock_destroy::
@@ -1449,6 +2177,7 @@ by Gnulib.
 * putwchar::
 * pwrite::
 * qsort::
+* quick_exit::
 * raise::
 * rand::
 * rand_r::
@@ -1457,6 +2186,7 @@ by Gnulib.
 * readdir::
 * readdir_r::
 * readlink::
+* readlinkat::
 * readv::
 * realloc::
 * realpath::
@@ -1476,9 +2206,9 @@ by Gnulib.
 * remquof::
 * remquol::
 * rename::
+* renameat::
 * rewind::
 * rewinddir::
-* rindex::
 * rint::
 * rintf::
 * rintl::
@@ -1486,15 +2216,16 @@ by Gnulib.
 * round::
 * roundf::
 * roundl::
-* scalb::
 * scalbln::
 * scalblnf::
 * scalblnl::
 * scalbn::
 * scalbnf::
 * scalbnl::
+* scandir::
 * scanf::
 * sched_get_priority_max::
+* sched_get_priority_min::
 * sched_getparam::
 * sched_getscheduler::
 * sched_rr_get_interval::
@@ -1521,7 +2252,6 @@ by Gnulib.
 * sendmsg::
 * sendto::
 * setbuf::
-* setcontext::
 * setegid::
 * setenv::
 * seteuid::
@@ -1569,6 +2299,7 @@ by Gnulib.
 * siglongjmp::
 * signal::
 * signbit::
+* signgam::
 * sigpause::
 * sigpending::
 * sigprocmask::
@@ -1604,26 +2335,37 @@ by Gnulib.
 * stderr::
 * stdin::
 * stdout::
+* stpcpy::
+* stpncpy::
 * strcasecmp::
+* strcasecmp_l::
 * strcat::
 * strchr::
 * strcmp::
 * strcoll::
+* strcoll_l::
 * strcpy::
 * strcspn::
 * strdup::
 * strerror::
+* strerror_l::
 * strerror_r::
 * strfmon::
+* strfmon_l::
 * strftime::
+* strftime_l::
 * strlen::
 * strncasecmp::
+* strncasecmp_l::
 * strncat::
 * strncmp::
 * strncpy::
+* strndup::
+* strnlen::
 * strpbrk::
 * strptime::
 * strrchr::
+* strsignal::
 * strspn::
 * strstr::
 * strtod::
@@ -1638,11 +2380,12 @@ by Gnulib.
 * strtoull::
 * strtoumax::
 * strxfrm::
+* strxfrm_l::
 * swab::
-* swapcontext::
 * swprintf::
 * swscanf::
 * symlink::
+* symlinkat::
 * sync::
 * sysconf::
 * syslog::
@@ -1673,6 +2416,7 @@ by Gnulib.
 * timer_create::
 * timer_delete::
 * timer_getoverrun::
+* timer_gettime::
 * timer_settime::
 * times::
 * timezone::
@@ -1680,10 +2424,15 @@ by Gnulib.
 * tmpnam::
 * toascii::
 * tolower::
+* tolower_l::
 * toupper::
+* toupper_l::
 * towctrans::
+* towctrans_l::
 * towlower::
+* towlower_l::
 * towupper::
+* towupper_l::
 * trunc::
 * truncate::
 * truncf::
@@ -1694,23 +2443,24 @@ by Gnulib.
 * twalk::
 * tzname::
 * tzset::
-* ualarm::
 * ulimit::
 * umask::
 * uname::
 * ungetc::
 * ungetwc::
 * unlink::
+* unlinkat::
 * unlockpt::
 * unsetenv::
-* usleep::
+* uselocale::
 * utime::
+* utimensat::
 * utimes::
 * va_arg::
 * va_copy::
 * va_end::
 * va_start::
-* vfork::
+* vdprintf::
 * vfprintf::
 * vfscanf::
 * vfwprintf::
@@ -1727,18 +2477,28 @@ by Gnulib.
 * wait::
 * waitid::
 * waitpid::
+* wcpcpy::
+* wcpncpy::
 * wcrtomb::
+* wcscasecmp::
+* wcscasecmp_l::
 * wcscat::
 * wcschr::
 * wcscmp::
 * wcscoll::
+* wcscoll_l::
 * wcscpy::
 * wcscspn::
+* wcsdup::
 * wcsftime::
 * wcslen::
+* wcsncasecmp::
+* wcsncasecmp_l::
 * wcsncat::
 * wcsncmp::
 * wcsncpy::
+* wcsnlen::
+* wcsnrtombs::
 * wcspbrk::
 * wcsrchr::
 * wcsrtombs::
@@ -1755,13 +2515,15 @@ by Gnulib.
 * wcstoul::
 * wcstoull::
 * wcstoumax::
-* wcswcs::
 * wcswidth::
 * wcsxfrm::
+* wcsxfrm_l::
 * wctob::
 * wctomb::
 * wctrans::
+* wctrans_l::
 * wctype::
+* wctype_l::
 * wcwidth::
 * wmemchr::
 * wmemcmp::
@@ -1808,6 +2570,8 @@ by Gnulib.
 @include posix-functions/aio_suspend.texi
 @include posix-functions/aio_write.texi
 @include posix-functions/alarm.texi
+@include posix-functions/aligned_alloc.texi
+@include posix-functions/alphasort.texi
 @include posix-functions/asctime.texi
 @include posix-functions/asctime_r.texi
 @include posix-functions/asin.texi
@@ -1832,13 +2596,11 @@ by Gnulib.
 @include posix-functions/atol.texi
 @include posix-functions/atoll.texi
 @include posix-functions/basename.texi
-@include posix-functions/bcmp.texi
-@include posix-functions/bcopy.texi
 @include posix-functions/bind.texi
-@include posix-functions/bsd_signal.texi
 @include posix-functions/bsearch.texi
 @include posix-functions/btowc.texi
-@include posix-functions/bzero.texi
+@include posix-functions/c16rtomb.texi
+@include posix-functions/c32rtomb.texi
 @include posix-functions/cabs.texi
 @include posix-functions/cabsf.texi
 @include posix-functions/cabsl.texi
@@ -1959,16 +2721,18 @@ by Gnulib.
 @include posix-functions/dbm_open.texi
 @include posix-functions/dbm_store.texi
 @include posix-functions/difftime.texi
+@include posix-functions/dirfd.texi
 @include posix-functions/dirname.texi
 @include posix-functions/div.texi
 @include posix-functions/dlclose.texi
 @include posix-functions/dlerror.texi
 @include posix-functions/dlopen.texi
 @include posix-functions/dlsym.texi
+@include posix-functions/dprintf.texi
 @include posix-functions/drand48.texi
 @include posix-functions/dup.texi
 @include posix-functions/dup2.texi
-@include posix-functions/ecvt.texi
+@include posix-functions/duplocale.texi
 @include posix-functions/encrypt.texi
 @include posix-functions/endgrent.texi
 @include posix-functions/endhostent.texi
@@ -2005,19 +2769,22 @@ by Gnulib.
 @include posix-functions/fabs.texi
 @include posix-functions/fabsf.texi
 @include posix-functions/fabsl.texi
+@include posix-functions/faccessat.texi
 @include posix-functions/fattach.texi
 @include posix-functions/fchdir.texi
 @include posix-functions/fchmod.texi
+@include posix-functions/fchmodat.texi
 @include posix-functions/fchown.texi
+@include posix-functions/fchownat.texi
 @include posix-functions/fclose.texi
 @include posix-functions/fcntl.texi
-@include posix-functions/fcvt.texi
 @include posix-functions/fdatasync.texi
 @include posix-functions/fdetach.texi
 @include posix-functions/fdim.texi
 @include posix-functions/fdimf.texi
 @include posix-functions/fdiml.texi
 @include posix-functions/fdopen.texi
+@include posix-functions/fdopendir.texi
 @include posix-functions/feclearexcept.texi
 @include posix-functions/fegetenv.texi
 @include posix-functions/fegetexceptflag.texi
@@ -2031,6 +2798,7 @@ by Gnulib.
 @include posix-functions/fesetround.texi
 @include posix-functions/fetestexcept.texi
 @include posix-functions/feupdateenv.texi
+@include posix-functions/fexecve.texi
 @include posix-functions/fflush.texi
 @include posix-functions/ffs.texi
 @include posix-functions/fgetc.texi
@@ -2049,6 +2817,7 @@ by Gnulib.
 @include posix-functions/fmax.texi
 @include posix-functions/fmaxf.texi
 @include posix-functions/fmaxl.texi
+@include posix-functions/fmemopen.texi
 @include posix-functions/fmin.texi
 @include posix-functions/fminf.texi
 @include posix-functions/fminl.texi
@@ -2069,6 +2838,7 @@ by Gnulib.
 @include posix-functions/fread.texi
 @include posix-functions/free.texi
 @include posix-functions/freeaddrinfo.texi
+@include posix-functions/freelocale.texi
 @include posix-functions/freopen.texi
 @include posix-functions/frexp.texi
 @include posix-functions/frexpf.texi
@@ -2078,30 +2848,30 @@ by Gnulib.
 @include posix-functions/fseeko.texi
 @include posix-functions/fsetpos.texi
 @include posix-functions/fstat.texi
+@include posix-functions/fstatat.texi
 @include posix-functions/fstatvfs.texi
 @include posix-functions/fsync.texi
 @include posix-functions/ftell.texi
 @include posix-functions/ftello.texi
-@include posix-functions/ftime.texi
 @include posix-functions/ftok.texi
 @include posix-functions/ftruncate.texi
 @include posix-functions/ftrylockfile.texi
 @include posix-functions/ftw.texi
 @include posix-functions/funlockfile.texi
+@include posix-functions/futimens.texi
 @include posix-functions/fwide.texi
 @include posix-functions/fwprintf.texi
 @include posix-functions/fwrite.texi
 @include posix-functions/fwscanf.texi
 @include posix-functions/gai_strerror.texi
-@include posix-functions/gcvt.texi
 @include posix-functions/getaddrinfo.texi
 @include posix-functions/getc.texi
 @include posix-functions/getc_unlocked.texi
 @include posix-functions/getchar.texi
 @include posix-functions/getchar_unlocked.texi
-@include posix-functions/getcontext.texi
 @include posix-functions/getcwd.texi
 @include posix-functions/getdate.texi
+@include posix-functions/getdate_err.texi
 @include posix-functions/getdelim.texi
 @include posix-functions/getegid.texi
 @include posix-functions/getenv.texi
@@ -2113,8 +2883,6 @@ by Gnulib.
 @include posix-functions/getgrnam.texi
 @include posix-functions/getgrnam_r.texi
 @include posix-functions/getgroups.texi
-@include posix-functions/gethostbyaddr.texi
-@include posix-functions/gethostbyname.texi
 @include posix-functions/gethostent.texi
 @include posix-functions/gethostid.texi
 @include posix-functions/gethostname.texi
@@ -2160,13 +2928,11 @@ by Gnulib.
 @include posix-functions/getutxline.texi
 @include posix-functions/getwc.texi
 @include posix-functions/getwchar.texi
-@include posix-functions/getwd.texi
 @include posix-functions/glob.texi
 @include posix-functions/globfree.texi
 @include posix-functions/gmtime.texi
 @include posix-functions/gmtime_r.texi
 @include posix-functions/grantpt.texi
-@include posix-functions/h_errno.texi
 @include posix-functions/hcreate.texi
 @include posix-functions/hdestroy.texi
 @include posix-functions/hsearch.texi
@@ -2187,7 +2953,6 @@ by Gnulib.
 @include posix-functions/ilogbl.texi
 @include posix-functions/imaxabs.texi
 @include posix-functions/imaxdiv.texi
-@include posix-functions/index.texi
 @include posix-functions/inet_addr.texi
 @include posix-functions/inet_ntoa.texi
 @include posix-functions/inet_ntop.texi
@@ -2196,15 +2961,21 @@ by Gnulib.
 @include posix-functions/insque.texi
 @include posix-functions/ioctl.texi
 @include posix-functions/isalnum.texi
+@include posix-functions/isalnum_l.texi
 @include posix-functions/isalpha.texi
+@include posix-functions/isalpha_l.texi
 @include posix-functions/isascii.texi
 @include posix-functions/isastream.texi
 @include posix-functions/isatty.texi
 @include posix-functions/isblank.texi
+@include posix-functions/isblank_l.texi
 @include posix-functions/iscntrl.texi
+@include posix-functions/iscntrl_l.texi
 @include posix-functions/isdigit.texi
+@include posix-functions/isdigit_l.texi
 @include posix-functions/isfinite.texi
 @include posix-functions/isgraph.texi
+@include posix-functions/isgraph_l.texi
 @include posix-functions/isgreater.texi
 @include posix-functions/isgreaterequal.texi
 @include posix-functions/isinf.texi
@@ -2212,27 +2983,46 @@ by Gnulib.
 @include posix-functions/islessequal.texi
 @include posix-functions/islessgreater.texi
 @include posix-functions/islower.texi
+@include posix-functions/islower_l.texi
 @include posix-functions/isnan.texi
 @include posix-functions/isnormal.texi
 @include posix-functions/isprint.texi
+@include posix-functions/isprint_l.texi
 @include posix-functions/ispunct.texi
+@include posix-functions/ispunct_l.texi
 @include posix-functions/isspace.texi
+@include posix-functions/isspace_l.texi
 @include posix-functions/isunordered.texi
 @include posix-functions/isupper.texi
+@include posix-functions/isupper_l.texi
 @include posix-functions/iswalnum.texi
+@include posix-functions/iswalnum_l.texi
 @include posix-functions/iswalpha.texi
+@include posix-functions/iswalpha_l.texi
 @include posix-functions/iswblank.texi
+@include posix-functions/iswblank_l.texi
 @include posix-functions/iswcntrl.texi
+@include posix-functions/iswcntrl_l.texi
 @include posix-functions/iswctype.texi
+@include posix-functions/iswctype_l.texi
 @include posix-functions/iswdigit.texi
+@include posix-functions/iswdigit_l.texi
 @include posix-functions/iswgraph.texi
+@include posix-functions/iswgraph_l.texi
 @include posix-functions/iswlower.texi
+@include posix-functions/iswlower_l.texi
 @include posix-functions/iswprint.texi
+@include posix-functions/iswprint_l.texi
 @include posix-functions/iswpunct.texi
+@include posix-functions/iswpunct_l.texi
 @include posix-functions/iswspace.texi
+@include posix-functions/iswspace_l.texi
 @include posix-functions/iswupper.texi
+@include posix-functions/iswupper_l.texi
 @include posix-functions/iswxdigit.texi
+@include posix-functions/iswxdigit_l.texi
 @include posix-functions/isxdigit.texi
+@include posix-functions/isxdigit_l.texi
 @include posix-functions/j0.texi
 @include posix-functions/j1.texi
 @include posix-functions/jn.texi
@@ -2252,6 +3042,7 @@ by Gnulib.
 @include posix-functions/lgammaf.texi
 @include posix-functions/lgammal.texi
 @include posix-functions/link.texi
+@include posix-functions/linkat.texi
 @include posix-functions/lio_listio.texi
 @include posix-functions/listen.texi
 @include posix-functions/llabs.texi
@@ -2292,12 +3083,14 @@ by Gnulib.
 @include posix-functions/lsearch.texi
 @include posix-functions/lseek.texi
 @include posix-functions/lstat.texi
-@include posix-functions/makecontext.texi
 @include posix-functions/malloc.texi
 @include posix-functions/mblen.texi
 @include posix-functions/mbrlen.texi
+@include posix-functions/mbrtoc16.texi
+@include posix-functions/mbrtoc32.texi
 @include posix-functions/mbrtowc.texi
 @include posix-functions/mbsinit.texi
+@include posix-functions/mbsnrtowcs.texi
 @include posix-functions/mbsrtowcs.texi
 @include posix-functions/mbstowcs.texi
 @include posix-functions/mbtowc.texi
@@ -2308,10 +3101,13 @@ by Gnulib.
 @include posix-functions/memmove.texi
 @include posix-functions/memset.texi
 @include posix-functions/mkdir.texi
+@include posix-functions/mkdirat.texi
+@include posix-functions/mkdtemp.texi
 @include posix-functions/mkfifo.texi
+@include posix-functions/mkfifoat.texi
 @include posix-functions/mknod.texi
+@include posix-functions/mknodat.texi
 @include posix-functions/mkstemp.texi
-@include posix-functions/mktemp.texi
 @include posix-functions/mktime.texi
 @include posix-functions/mlock.texi
 @include posix-functions/mlockall.texi
@@ -2346,6 +3142,7 @@ by Gnulib.
 @include posix-functions/nearbyint.texi
 @include posix-functions/nearbyintf.texi
 @include posix-functions/nearbyintl.texi
+@include posix-functions/newlocale.texi
 @include posix-functions/nextafter.texi
 @include posix-functions/nextafterf.texi
 @include posix-functions/nextafterl.texi
@@ -2355,13 +3152,20 @@ by Gnulib.
 @include posix-functions/nftw.texi
 @include posix-functions/nice.texi
 @include posix-functions/nl_langinfo.texi
+@include posix-functions/nl_langinfo_l.texi
 @include posix-functions/nrand48.texi
 @include posix-functions/ntohl.texi
 @include posix-functions/ntohs.texi
 @include posix-functions/open.texi
+@include posix-functions/openat.texi
 @include posix-functions/opendir.texi
 @include posix-functions/openlog.texi
+@include posix-functions/open_memstream.texi
+@include posix-functions/open_wmemstream.texi
 @include posix-functions/optarg.texi
+@include posix-functions/opterr.texi
+@include posix-functions/optind.texi
+@include posix-functions/optopt.texi
 @include posix-functions/pathconf.texi
 @include posix-functions/pause.texi
 @include posix-functions/pclose.texi
@@ -2454,6 +3258,8 @@ by Gnulib.
 @include posix-functions/pread.texi
 @include posix-functions/printf.texi
 @include posix-functions/pselect.texi
+@include posix-functions/psiginfo.texi
+@include posix-functions/psignal.texi
 @include posix-functions/pthread_atfork.texi
 @include posix-functions/pthread_attr_destroy.texi
 @include posix-functions/pthread_attr_getdetachstate.texi
@@ -2463,7 +3269,6 @@ by Gnulib.
 @include posix-functions/pthread_attr_getschedpolicy.texi
 @include posix-functions/pthread_attr_getscope.texi
 @include posix-functions/pthread_attr_getstack.texi
-@include posix-functions/pthread_attr_getstackaddr.texi
 @include posix-functions/pthread_attr_getstacksize.texi
 @include posix-functions/pthread_attr_init.texi
 @include posix-functions/pthread_attr_setdetachstate.texi
@@ -2473,7 +3278,6 @@ by Gnulib.
 @include posix-functions/pthread_attr_setschedpolicy.texi
 @include posix-functions/pthread_attr_setscope.texi
 @include posix-functions/pthread_attr_setstack.texi
-@include posix-functions/pthread_attr_setstackaddr.texi
 @include posix-functions/pthread_attr_setstacksize.texi
 @include posix-functions/pthread_barrier_destroy.texi
 @include posix-functions/pthread_barrier_init.texi
@@ -2509,6 +3313,7 @@ by Gnulib.
 @include posix-functions/pthread_key_create.texi
 @include posix-functions/pthread_key_delete.texi
 @include posix-functions/pthread_kill.texi
+@include posix-functions/pthread_mutex_consistent.texi
 @include posix-functions/pthread_mutex_destroy.texi
 @include posix-functions/pthread_mutex_getprioceiling.texi
 @include posix-functions/pthread_mutex_init.texi
@@ -2521,11 +3326,13 @@ by Gnulib.
 @include posix-functions/pthread_mutexattr_getprioceiling.texi
 @include posix-functions/pthread_mutexattr_getprotocol.texi
 @include posix-functions/pthread_mutexattr_getpshared.texi
+@include posix-functions/pthread_mutexattr_getrobust.texi
 @include posix-functions/pthread_mutexattr_gettype.texi
 @include posix-functions/pthread_mutexattr_init.texi
 @include posix-functions/pthread_mutexattr_setprioceiling.texi
 @include posix-functions/pthread_mutexattr_setprotocol.texi
 @include posix-functions/pthread_mutexattr_setpshared.texi
+@include posix-functions/pthread_mutexattr_setrobust.texi
 @include posix-functions/pthread_mutexattr_settype.texi
 @include posix-functions/pthread_once.texi
 @include posix-functions/pthread_rwlock_destroy.texi
@@ -2569,6 +3376,7 @@ by Gnulib.
 @include posix-functions/putwchar.texi
 @include posix-functions/pwrite.texi
 @include posix-functions/qsort.texi
+@include posix-functions/quick_exit.texi
 @include posix-functions/raise.texi
 @include posix-functions/rand.texi
 @include posix-functions/rand_r.texi
@@ -2577,6 +3385,7 @@ by Gnulib.
 @include posix-functions/readdir.texi
 @include posix-functions/readdir_r.texi
 @include posix-functions/readlink.texi
+@include posix-functions/readlinkat.texi
 @include posix-functions/readv.texi
 @include posix-functions/realloc.texi
 @include posix-functions/realpath.texi
@@ -2596,9 +3405,9 @@ by Gnulib.
 @include posix-functions/remquof.texi
 @include posix-functions/remquol.texi
 @include posix-functions/rename.texi
+@include posix-functions/renameat.texi
 @include posix-functions/rewind.texi
 @include posix-functions/rewinddir.texi
-@include posix-functions/rindex.texi
 @include posix-functions/rint.texi
 @include posix-functions/rintf.texi
 @include posix-functions/rintl.texi
@@ -2606,15 +3415,16 @@ by Gnulib.
 @include posix-functions/round.texi
 @include posix-functions/roundf.texi
 @include posix-functions/roundl.texi
-@include posix-functions/scalb.texi
 @include posix-functions/scalbln.texi
 @include posix-functions/scalblnf.texi
 @include posix-functions/scalblnl.texi
 @include posix-functions/scalbn.texi
 @include posix-functions/scalbnf.texi
 @include posix-functions/scalbnl.texi
+@include posix-functions/scandir.texi
 @include posix-functions/scanf.texi
 @include posix-functions/sched_get_priority_max.texi
+@include posix-functions/sched_get_priority_min.texi
 @include posix-functions/sched_getparam.texi
 @include posix-functions/sched_getscheduler.texi
 @include posix-functions/sched_rr_get_interval.texi
@@ -2641,7 +3451,6 @@ by Gnulib.
 @include posix-functions/sendmsg.texi
 @include posix-functions/sendto.texi
 @include posix-functions/setbuf.texi
-@include posix-functions/setcontext.texi
 @include posix-functions/setegid.texi
 @include posix-functions/setenv.texi
 @include posix-functions/seteuid.texi
@@ -2689,6 +3498,7 @@ by Gnulib.
 @include posix-functions/siglongjmp.texi
 @include posix-functions/signal.texi
 @include posix-functions/signbit.texi
+@include posix-functions/signgam.texi
 @include posix-functions/sigpause.texi
 @include posix-functions/sigpending.texi
 @include posix-functions/sigprocmask.texi
@@ -2724,26 +3534,37 @@ by Gnulib.
 @include posix-functions/stderr.texi
 @include posix-functions/stdin.texi
 @include posix-functions/stdout.texi
+@include posix-functions/stpcpy.texi
+@include posix-functions/stpncpy.texi
 @include posix-functions/strcasecmp.texi
+@include posix-functions/strcasecmp_l.texi
 @include posix-functions/strcat.texi
 @include posix-functions/strchr.texi
 @include posix-functions/strcmp.texi
 @include posix-functions/strcoll.texi
+@include posix-functions/strcoll_l.texi
 @include posix-functions/strcpy.texi
 @include posix-functions/strcspn.texi
 @include posix-functions/strdup.texi
 @include posix-functions/strerror.texi
+@include posix-functions/strerror_l.texi
 @include posix-functions/strerror_r.texi
 @include posix-functions/strfmon.texi
+@include posix-functions/strfmon_l.texi
 @include posix-functions/strftime.texi
+@include posix-functions/strftime_l.texi
 @include posix-functions/strlen.texi
 @include posix-functions/strncasecmp.texi
+@include posix-functions/strncasecmp_l.texi
 @include posix-functions/strncat.texi
 @include posix-functions/strncmp.texi
 @include posix-functions/strncpy.texi
+@include posix-functions/strndup.texi
+@include posix-functions/strnlen.texi
 @include posix-functions/strpbrk.texi
 @include posix-functions/strptime.texi
 @include posix-functions/strrchr.texi
+@include posix-functions/strsignal.texi
 @include posix-functions/strspn.texi
 @include posix-functions/strstr.texi
 @include posix-functions/strtod.texi
@@ -2758,11 +3579,12 @@ by Gnulib.
 @include posix-functions/strtoull.texi
 @include posix-functions/strtoumax.texi
 @include posix-functions/strxfrm.texi
+@include posix-functions/strxfrm_l.texi
 @include posix-functions/swab.texi
-@include posix-functions/swapcontext.texi
 @include posix-functions/swprintf.texi
 @include posix-functions/swscanf.texi
 @include posix-functions/symlink.texi
+@include posix-functions/symlinkat.texi
 @include posix-functions/sync.texi
 @include posix-functions/sysconf.texi
 @include posix-functions/syslog.texi
@@ -2793,6 +3615,7 @@ by Gnulib.
 @include posix-functions/timer_create.texi
 @include posix-functions/timer_delete.texi
 @include posix-functions/timer_getoverrun.texi
+@include posix-functions/timer_gettime.texi
 @include posix-functions/timer_settime.texi
 @include posix-functions/times.texi
 @include posix-functions/timezone.texi
@@ -2800,10 +3623,15 @@ by Gnulib.
 @include posix-functions/tmpnam.texi
 @include posix-functions/toascii.texi
 @include posix-functions/tolower.texi
+@include posix-functions/tolower_l.texi
 @include posix-functions/toupper.texi
+@include posix-functions/toupper_l.texi
 @include posix-functions/towctrans.texi
+@include posix-functions/towctrans_l.texi
 @include posix-functions/towlower.texi
+@include posix-functions/towlower_l.texi
 @include posix-functions/towupper.texi
+@include posix-functions/towupper_l.texi
 @include posix-functions/trunc.texi
 @include posix-functions/truncate.texi
 @include posix-functions/truncf.texi
@@ -2814,23 +3642,24 @@ by Gnulib.
 @include posix-functions/twalk.texi
 @include posix-functions/tzname.texi
 @include posix-functions/tzset.texi
-@include posix-functions/ualarm.texi
 @include posix-functions/ulimit.texi
 @include posix-functions/umask.texi
 @include posix-functions/uname.texi
 @include posix-functions/ungetc.texi
 @include posix-functions/ungetwc.texi
 @include posix-functions/unlink.texi
+@include posix-functions/unlinkat.texi
 @include posix-functions/unlockpt.texi
 @include posix-functions/unsetenv.texi
-@include posix-functions/usleep.texi
+@include posix-functions/uselocale.texi
 @include posix-functions/utime.texi
+@include posix-functions/utimensat.texi
 @include posix-functions/utimes.texi
 @include posix-functions/va_arg.texi
 @include posix-functions/va_copy.texi
 @include posix-functions/va_end.texi
 @include posix-functions/va_start.texi
-@include posix-functions/vfork.texi
+@include posix-functions/vdprintf.texi
 @include posix-functions/vfprintf.texi
 @include posix-functions/vfscanf.texi
 @include posix-functions/vfwprintf.texi
@@ -2847,18 +3676,28 @@ by Gnulib.
 @include posix-functions/wait.texi
 @include posix-functions/waitid.texi
 @include posix-functions/waitpid.texi
+@include posix-functions/wcpcpy.texi
+@include posix-functions/wcpncpy.texi
 @include posix-functions/wcrtomb.texi
+@include posix-functions/wcscasecmp.texi
+@include posix-functions/wcscasecmp_l.texi
 @include posix-functions/wcscat.texi
 @include posix-functions/wcschr.texi
 @include posix-functions/wcscmp.texi
 @include posix-functions/wcscoll.texi
+@include posix-functions/wcscoll_l.texi
 @include posix-functions/wcscpy.texi
 @include posix-functions/wcscspn.texi
+@include posix-functions/wcsdup.texi
 @include posix-functions/wcsftime.texi
 @include posix-functions/wcslen.texi
+@include posix-functions/wcsncasecmp.texi
+@include posix-functions/wcsncasecmp_l.texi
 @include posix-functions/wcsncat.texi
 @include posix-functions/wcsncmp.texi
 @include posix-functions/wcsncpy.texi
+@include posix-functions/wcsnlen.texi
+@include posix-functions/wcsnrtombs.texi
 @include posix-functions/wcspbrk.texi
 @include posix-functions/wcsrchr.texi
 @include posix-functions/wcsrtombs.texi
@@ -2875,13 +3714,15 @@ by Gnulib.
 @include posix-functions/wcstoul.texi
 @include posix-functions/wcstoull.texi
 @include posix-functions/wcstoumax.texi
-@include posix-functions/wcswcs.texi
 @include posix-functions/wcswidth.texi
 @include posix-functions/wcsxfrm.texi
+@include posix-functions/wcsxfrm_l.texi
 @include posix-functions/wctob.texi
 @include posix-functions/wctomb.texi
 @include posix-functions/wctrans.texi
+@include posix-functions/wctrans_l.texi
 @include posix-functions/wctype.texi
+@include posix-functions/wctype_l.texi
 @include posix-functions/wcwidth.texi
 @include posix-functions/wmemchr.texi
 @include posix-functions/wmemcmp.texi
@@ -2898,6 +3739,72 @@ by Gnulib.
 @include posix-functions/y1.texi
 @include posix-functions/yn.texi
 
+@node Legacy Function Substitutes
+@chapter Past POSIX Function Substitutes
+
+This chapter describes which functions and function-like macros specified by
+older versions of POSIX are substituted by Gnulib, which
+portability pitfalls are fixed by Gnulib, and which (known) portability
+problems are not worked around by Gnulib.
+
+@nosuchmodulenote function
+
+@menu
+* bcmp::
+* bcopy::
+* bsd_signal::
+* bzero::
+* ecvt::
+* fcvt::
+* ftime::
+* gcvt::
+* getcontext::
+* gethostbyaddr::
+* gethostbyname::
+* getwd::
+* h_errno::
+* index::
+* makecontext::
+* mktemp::
+* pthread_attr_getstackaddr::
+* pthread_attr_setstackaddr::
+* rindex::
+* scalb::
+* setcontext::
+* swapcontext::
+* ualarm::
+* usleep::
+* vfork::
+* wcswcs::
+@end menu
+
+@include pastposix-functions/bcmp.texi
+@include pastposix-functions/bcopy.texi
+@include pastposix-functions/bsd_signal.texi
+@include pastposix-functions/bzero.texi
+@include pastposix-functions/ecvt.texi
+@include pastposix-functions/fcvt.texi
+@include pastposix-functions/ftime.texi
+@include pastposix-functions/gcvt.texi
+@include pastposix-functions/getcontext.texi
+@include pastposix-functions/gethostbyaddr.texi
+@include pastposix-functions/gethostbyname.texi
+@include pastposix-functions/getwd.texi
+@include pastposix-functions/h_errno.texi
+@include pastposix-functions/index.texi
+@include pastposix-functions/makecontext.texi
+@include pastposix-functions/mktemp.texi
+@include pastposix-functions/pthread_attr_getstackaddr.texi
+@include pastposix-functions/pthread_attr_setstackaddr.texi
+@include pastposix-functions/rindex.texi
+@include pastposix-functions/scalb.texi
+@include pastposix-functions/setcontext.texi
+@include pastposix-functions/swapcontext.texi
+@include pastposix-functions/ualarm.texi
+@include pastposix-functions/usleep.texi
+@include pastposix-functions/vfork.texi
+@include pastposix-functions/wcswcs.texi
+
 @node Glibc Header File Substitutes
 @chapter Glibc Header File Substitutes
 
@@ -2926,6 +3833,7 @@ not worked around by Gnulib.
 * fstab.h::
 * fts.h::
 * getopt.h::
+* gshadow.h::
 * ieee754.h::
 * ifaddrs.h::
 * libintl.h::
@@ -2937,6 +3845,7 @@ not worked around by Gnulib.
 * pty.h::
 * resolv.h::
 * shadow.h::
+* sys/ioctl.h::
 * sysexits.h::
 * ttyent.h::
 @end menu
@@ -2958,6 +3867,7 @@ not worked around by Gnulib.
 @include glibc-headers/fstab.texi
 @include glibc-headers/fts.texi
 @include glibc-headers/getopt.texi
+@include glibc-headers/gshadow.texi
 @include glibc-headers/ieee754.texi
 @include glibc-headers/ifaddrs.texi
 @include glibc-headers/libintl.texi
@@ -2969,6 +3879,7 @@ not worked around by Gnulib.
 @include glibc-headers/pty.texi
 @include glibc-headers/resolv.texi
 @include glibc-headers/shadow.texi
+@include glibc-headers/sys_ioctl.texi
 @include glibc-headers/sysexits.texi
 @include glibc-headers/ttyent.texi
 
@@ -3010,15 +3921,13 @@ This list of functions is sorted according to the header that declares them.
 * Glibc glob.h::
 * Glibc gnu/libc-version.h::
 * Glibc grp.h::
+* Glibc gshadow.h::
 * Glibc ifaddrs.h::
-* Glibc langinfo.h::
 * Glibc libintl.h::
 * Glibc link.h::
-* Glibc locale.h::
 * Glibc malloc.h::
 * Glibc math.h::
 * Glibc mcheck.h::
-* Glibc monetary.h::
 * Glibc mntent.h::
 * Glibc netdb.h::
 * Glibc netinet/ether.h::
@@ -3026,6 +3935,7 @@ This list of functions is sorted according to the header that declares them.
 * Glibc obstack.h::
 * Glibc printf.h::
 * Glibc pthread.h::
+* Glibc pty.h::
 * Glibc pwd.h::
 * Glibc regex.h::
 * Glibc regexp.h::
@@ -3051,6 +3961,7 @@ This list of functions is sorted according to the header that declares them.
 * Glibc rpcsvc/ypupd.h::
 * Glibc sched.h::
 * Glibc search.h::
+* Glibc selinux/selinux.h::
 * Glibc shadow.h::
 * Glibc signal.h::
 * Glibc stdio.h::
@@ -3058,6 +3969,7 @@ This list of functions is sorted according to the header that declares them.
 * Glibc string.h::
 * Glibc sys/capability.h::
 * Glibc sys/epoll.h::
+* Glibc sys/fanotify.h::
 * Glibc sys/file.h::
 * Glibc sys/fsuid.h::
 * Glibc sys/gmon.h::
@@ -3072,6 +3984,7 @@ This list of functions is sorted according to the header that declares them.
 * Glibc sys/ptrace.h::
 * Glibc sys/quota.h::
 * Glibc sys/reboot.h::
+* Glibc sys/resource.h::
 * Glibc sys/sem.h::
 * Glibc sys/sendfile.h::
 * Glibc sys/socket.h::
@@ -3084,6 +3997,7 @@ This list of functions is sorted according to the header that declares them.
 * Glibc sys/sysmacros.h::
 * Glibc sys/time.h::
 * Glibc sys/timex.h::
+* Glibc sys/uio.h::
 * Glibc sys/ustat.h::
 * Glibc sys/vlimit.h::
 * Glibc sys/vm86.h::
@@ -3097,7 +4011,6 @@ This list of functions is sorted according to the header that declares them.
 * Glibc utmp.h::
 * Glibc utmpx.h::
 * Glibc wchar.h::
-* Glibc wctype.h::
 @end menu
 
 @c @node Glibc a.out.h
@@ -3271,54 +4184,22 @@ This list of functions is sorted according to the header that declares them.
 @section Glibc Extensions to @code{<ctype.h>}
 
 @menu
-* isalnum_l::
-* isalpha_l::
-* isblank_l::
-* iscntrl_l::
 * isctype::
-* isdigit_l::
-* isgraph_l::
-* islower_l::
-* isprint_l::
-* ispunct_l::
-* isspace_l::
-* isupper_l::
-* isxdigit_l::
-* tolower_l::
-* toupper_l::
 @end menu
 
-@include glibc-functions/isalnum_l.texi
-@include glibc-functions/isalpha_l.texi
-@include glibc-functions/isblank_l.texi
-@include glibc-functions/iscntrl_l.texi
 @include glibc-functions/isctype.texi
-@include glibc-functions/isdigit_l.texi
-@include glibc-functions/isgraph_l.texi
-@include glibc-functions/islower_l.texi
-@include glibc-functions/isprint_l.texi
-@include glibc-functions/ispunct_l.texi
-@include glibc-functions/isspace_l.texi
-@include glibc-functions/isupper_l.texi
-@include glibc-functions/isxdigit_l.texi
-@include glibc-functions/tolower_l.texi
-@include glibc-functions/toupper_l.texi
 
 @node Glibc dirent.h
 @section Glibc Extensions to @code{<dirent.h>}
 
 @menu
-* alphasort::
-* dirfd::
 * getdirentries::
-* scandir::
+* scandirat::
 * versionsort::
 @end menu
 
-@include glibc-functions/alphasort.texi
-@include glibc-functions/dirfd.texi
 @include glibc-functions/getdirentries.texi
-@include glibc-functions/scandir.texi
+@include glibc-functions/scandirat.texi
 @include glibc-functions/versionsort.texi
 
 @node Glibc dlfcn.h
@@ -3428,10 +4309,16 @@ This list of functions is sorted according to the header that declares them.
 @section Glibc Extensions to @code{<fcntl.h>}
 
 @menu
+* fallocate::
+* name_to_handle_at::
 * readahead::
+* open_by_handle_at::
 @end menu
 
+@include glibc-functions/fallocate.texi
+@include glibc-functions/name_to_handle_at.texi
 @include glibc-functions/readahead.texi
+@include glibc-functions/open_by_handle_at.texi
 
 @node Glibc fenv.h
 @section Glibc Extensions to @code{<fenv.h>}
@@ -3507,16 +4394,10 @@ This list of functions is sorted according to the header that declares them.
 @menu
 * getopt_long::
 * getopt_long_only::
-* opterr::
-* optind::
-* optopt::
 @end menu
 
 @include glibc-functions/getopt_long.texi
 @include glibc-functions/getopt_long_only.texi
-@include glibc-functions/opterr.texi
-@include glibc-functions/optind.texi
-@include glibc-functions/optopt.texi
 
 @node Glibc glob.h
 @section Glibc Extensions to @code{<glob.h>}
@@ -3559,6 +4440,35 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/putgrent.texi
 @include glibc-functions/setgroups.texi
 
+@node Glibc gshadow.h
+@section Glibc @code{<gshadow.h>}
+
+@menu
+* endsgent::
+* fgetsgent::
+* fgetsgent_r::
+* getsgent::
+* getsgent_r::
+* getsgnam::
+* getsgnam_r::
+* putsgent::
+* setsgent::
+* sgetsgent::
+* sgetsgent_r::
+@end menu
+
+@include glibc-functions/endsgent.texi
+@include glibc-functions/fgetsgent.texi
+@include glibc-functions/fgetsgent_r.texi
+@include glibc-functions/getsgent.texi
+@include glibc-functions/getsgent_r.texi
+@include glibc-functions/getsgnam.texi
+@include glibc-functions/getsgnam_r.texi
+@include glibc-functions/putsgent.texi
+@include glibc-functions/setsgent.texi
+@include glibc-functions/sgetsgent.texi
+@include glibc-functions/sgetsgent_r.texi
+
 @c @node Glibc iconv.h
 @c @section Glibc Extensions to @code{<iconv.h>}
 
@@ -3582,14 +4492,8 @@ This list of functions is sorted according to the header that declares them.
 @c @node Glibc iso646.h
 @c @section Glibc Extensions to @code{<iso646.h>}
 
-@node Glibc langinfo.h
-@section Glibc Extensions to @code{<langinfo.h>}
-
-@menu
-* nl_langinfo_l::
-@end menu
-
-@include glibc-functions/nl_langinfo_l.texi
+@c @node Glibc langinfo.h
+@c @section Glibc Extensions to @code{<langinfo.h>}
 
 @c @node Glibc libgen.h
 @c @section Glibc Extensions to @code{<libgen.h>}
@@ -3631,20 +4535,8 @@ This list of functions is sorted according to the header that declares them.
 
 @include glibc-functions/dl_iterate_phdr.texi
 
-@node Glibc locale.h
-@section Glibc Extensions to @code{<locale.h>}
-
-@menu
-* duplocale::
-* freelocale::
-* newlocale::
-* uselocale::
-@end menu
-
-@include glibc-functions/duplocale.texi
-@include glibc-functions/freelocale.texi
-@include glibc-functions/newlocale.texi
-@include glibc-functions/uselocale.texi
+@c @node Glibc locale.h
+@c @section Glibc Extensions to @code{<locale.h>}
 
 @node Glibc malloc.h
 @section Glibc @code{<malloc.h>}
@@ -3653,6 +4545,7 @@ This list of functions is sorted according to the header that declares them.
 * mallinfo::
 * malloc_get_state::
 * malloc_set_state::
+* malloc_info::
 * malloc_stats::
 * malloc_trim::
 * malloc_usable_size::
@@ -3664,6 +4557,7 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/mallinfo.texi
 @include glibc-functions/malloc_get_state.texi
 @include glibc-functions/malloc_set_state.texi
+@include glibc-functions/malloc_info.texi
 @include glibc-functions/malloc_stats.texi
 @include glibc-functions/malloc_trim.texi
 @include glibc-functions/malloc_usable_size.texi
@@ -3706,7 +4600,6 @@ This list of functions is sorted according to the header that declares them.
 * pow10l::
 * scalbf::
 * scalbl::
-* signgam::
 * significand::
 * significandf::
 * significandl::
@@ -3752,7 +4645,6 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/pow10l.texi
 @include glibc-functions/scalbf.texi
 @include glibc-functions/scalbl.texi
-@include glibc-functions/signgam.texi
 @include glibc-functions/significand.texi
 @include glibc-functions/significandf.texi
 @include glibc-functions/significandl.texi
@@ -3785,14 +4677,8 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/mtrace.texi
 @include glibc-functions/muntrace.texi
 
-@node Glibc monetary.h
-@section Glibc Extensions to @code{<monetary.h>}
-
-@menu
-* strfmon_l::
-@end menu
-
-@include glibc-functions/strfmon_l.texi
+@c @node Glibc monetary.h
+@c @section Glibc Extensions to @code{<monetary.h>}
 
 @node Glibc mntent.h
 @section Glibc @code{<mntent.h>}
@@ -3920,6 +4806,19 @@ This list of functions is sorted according to the header that declares them.
 * inet6_option_init::
 * inet6_option_next::
 * inet6_option_space::
+* inet6_opt_append::
+* inet6_opt_find::
+* inet6_opt_finish::
+* inet6_opt_get_val::
+* inet6_opt_init::
+* inet6_opt_next::
+* inet6_opt_set_val::
+* inet6_rth_add::
+* inet6_rth_getaddr::
+* inet6_rth_init::
+* inet6_rth_reverse::
+* inet6_rth_segments::
+* inet6_rth_space::
 * setipv4sourcefilter::
 * setsourcefilter::
 @end menu
@@ -3935,6 +4834,19 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/inet6_option_init.texi
 @include glibc-functions/inet6_option_next.texi
 @include glibc-functions/inet6_option_space.texi
+@include glibc-functions/inet6_opt_append.texi
+@include glibc-functions/inet6_opt_find.texi
+@include glibc-functions/inet6_opt_finish.texi
+@include glibc-functions/inet6_opt_get_val.texi
+@include glibc-functions/inet6_opt_init.texi
+@include glibc-functions/inet6_opt_next.texi
+@include glibc-functions/inet6_opt_set_val.texi
+@include glibc-functions/inet6_rth_add.texi
+@include glibc-functions/inet6_rth_getaddr.texi
+@include glibc-functions/inet6_rth_init.texi
+@include glibc-functions/inet6_rth_reverse.texi
+@include glibc-functions/inet6_rth_segments.texi
+@include glibc-functions/inet6_rth_space.texi
 @include glibc-functions/setipv4sourcefilter.texi
 @include glibc-functions/setsourcefilter.texi
 
@@ -3972,32 +4884,70 @@ This list of functions is sorted according to the header that declares them.
 * printf_size::
 * printf_size_info::
 * register_printf_function::
+* register_printf_modifier::
+* register_printf_specifier::
+* register_printf_type::
 @end menu
 
 @include glibc-functions/parse_printf_format.texi
 @include glibc-functions/printf_size.texi
 @include glibc-functions/printf_size_info.texi
 @include glibc-functions/register_printf_function.texi
+@include glibc-functions/register_printf_modifier.texi
+@include glibc-functions/register_printf_specifier.texi
+@include glibc-functions/register_printf_type.texi
 
 @node Glibc pthread.h
 @section Glibc Extensions to @code{<pthread.h>}
 
 @menu
+* pthread_attr_getaffinity_np::
+* pthread_attr_setaffinity_np::
+* pthread_getaffinity_np::
 * pthread_getattr_np::
+* pthread_getname_np::
 * pthread_kill_other_threads_np::
+* pthread_mutex_consistent_np::
+* pthread_mutexattr_getrobust_np::
+* pthread_mutexattr_setrobust_np::
 * pthread_rwlockattr_getkind_np::
 * pthread_rwlockattr_setkind_np::
+* pthread_setaffinity_np::
+* pthread_setname_np::
+* pthread_sigqueue::
+* pthread_timedjoin_np::
+* pthread_tryjoin_np::
 * pthread_yield::
 @end menu
 
+@include glibc-functions/pthread_attr_getaffinity_np.texi
+@include glibc-functions/pthread_attr_setaffinity_np.texi
+@include glibc-functions/pthread_getaffinity_np.texi
 @include glibc-functions/pthread_getattr_np.texi
+@include glibc-functions/pthread_getname_np.texi
 @include glibc-functions/pthread_kill_other_threads_np.texi
+@include glibc-functions/pthread_mutex_consistent_np.texi
+@include glibc-functions/pthread_mutexattr_getrobust_np.texi
+@include glibc-functions/pthread_mutexattr_setrobust_np.texi
 @include glibc-functions/pthread_rwlockattr_getkind_np.texi
 @include glibc-functions/pthread_rwlockattr_setkind_np.texi
+@include glibc-functions/pthread_setaffinity_np.texi
+@include glibc-functions/pthread_setname_np.texi
+@include glibc-functions/pthread_sigqueue.texi
+@include glibc-functions/pthread_timedjoin_np.texi
+@include glibc-functions/pthread_tryjoin_np.texi
 @include glibc-functions/pthread_yield.texi
 
-@c @node Glibc pty.h
-@c @section Glibc @code{<pty.h>}
+@node Glibc pty.h
+@section Glibc @code{<pty.h>}
+
+@menu
+* forkpty::
+* openpty::
+@end menu
+
+@include glibc-functions/forkpty.texi
+@include glibc-functions/openpty.texi
 
 @node Glibc pwd.h
 @section Glibc Extensions to @code{<pwd.h>}
@@ -4710,14 +5660,14 @@ This list of functions is sorted according to the header that declares them.
 @menu
 * clone::
 * sched_getaffinity::
-* sched_get_priority_min::
 * sched_setaffinity::
+* setns::
 @end menu
 
 @include glibc-functions/clone.texi
 @include glibc-functions/sched_getaffinity.texi
-@include glibc-functions/sched_get_priority_min.texi
 @include glibc-functions/sched_setaffinity.texi
+@include glibc-functions/setns.texi
 
 @node Glibc search.h
 @section Glibc Extensions to @code{<search.h>}
@@ -4734,6 +5684,20 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/hsearch_r.texi
 @include glibc-functions/tdestroy.texi
 
+@node Glibc selinux/selinux.h
+@section Glibc Extensions to @code{<selinux/selinux.h>}
+
+@menu
+* fgetfilecon::
+* getfilecon::
+* lgetfilecon::
+@end menu
+
+@include glibc-functions/getfilecon-desc.texi
+@include glibc-functions/fgetfilecon.texi
+@include glibc-functions/getfilecon.texi
+@include glibc-functions/lgetfilecon.texi
+
 @c @node Glibc semaphore.h
 @c @section Glibc Extensions to @code{<semaphore.h>}
 
@@ -4778,7 +5742,6 @@ This list of functions is sorted according to the header that declares them.
 
 @menu
 * gsignal::
-* psignal::
 * sigandset::
 * sigblock::
 * siggetmask::
@@ -4794,7 +5757,6 @@ This list of functions is sorted according to the header that declares them.
 @end menu
 
 @include glibc-functions/gsignal.texi
-@include glibc-functions/psignal.texi
 @include glibc-functions/sigandset.texi
 @include glibc-functions/sigblock.texi
 @include glibc-functions/siggetmask.texi
@@ -4829,7 +5791,6 @@ This list of functions is sorted according to the header that declares them.
 @menu
 * asprintf::
 * cuserid::
-* dprintf::
 * clearerr_unlocked::
 * fcloseall::
 * feof_unlocked::
@@ -4838,14 +5799,12 @@ This list of functions is sorted according to the header that declares them.
 * fgetc_unlocked::
 * fgets_unlocked::
 * fileno_unlocked::
-* fmemopen::
 * fopencookie::
 * fputc_unlocked::
 * fputs_unlocked::
 * fread_unlocked::
 * fwrite_unlocked::
 * getw::
-* open_memstream::
 * putw::
 * setbuffer::
 * setlinebuf::
@@ -4853,12 +5812,10 @@ This list of functions is sorted according to the header that declares them.
 * sys_nerr::
 * tmpnam_r::
 * vasprintf::
-* vdprintf::
 @end menu
 
 @include glibc-functions/asprintf.texi
 @include glibc-functions/cuserid.texi
-@include glibc-functions/dprintf.texi
 @include glibc-functions/clearerr_unlocked.texi
 @include glibc-functions/fcloseall.texi
 @include glibc-functions/feof_unlocked.texi
@@ -4867,14 +5824,12 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/fgetc_unlocked.texi
 @include glibc-functions/fgets_unlocked.texi
 @include glibc-functions/fileno_unlocked.texi
-@include glibc-functions/fmemopen.texi
 @include glibc-functions/fopencookie.texi
 @include glibc-functions/fputc_unlocked.texi
 @include glibc-functions/fputs_unlocked.texi
 @include glibc-functions/fread_unlocked.texi
 @include glibc-functions/fwrite_unlocked.texi
 @include glibc-functions/getw.texi
-@include glibc-functions/open_memstream.texi
 @include glibc-functions/putw.texi
 @include glibc-functions/setbuffer.texi
 @include glibc-functions/setlinebuf.texi
@@ -4882,7 +5837,6 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/sys_nerr.texi
 @include glibc-functions/tmpnam_r.texi
 @include glibc-functions/vasprintf.texi
-@include glibc-functions/vdprintf.texi
 
 @node Glibc stdlib.h
 @section Glibc Extensions to @code{<stdlib.h>}
@@ -4901,8 +5855,10 @@ This list of functions is sorted according to the header that declares them.
 * jrand48_r::
 * lcong48_r::
 * lrand48_r::
-* mkdtemp::
+* mkostemp::
+* mkostemps::
 * mrand48_r::
+* mkstemps::
 * nrand48_r::
 * on_exit::
 * ptsname_r::
@@ -4911,8 +5867,10 @@ This list of functions is sorted according to the header that declares them.
 * qfcvt::
 * qfcvt_r::
 * qgcvt::
+* qsort_r::
 * random_r::
 * rpmatch::
+* secure_getenv::
 * seed48_r::
 * setstate_r::
 * srand48_r::
@@ -4942,8 +5900,10 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/jrand48_r.texi
 @include glibc-functions/lcong48_r.texi
 @include glibc-functions/lrand48_r.texi
-@include glibc-functions/mkdtemp.texi
+@include glibc-functions/mkostemp.texi
+@include glibc-functions/mkostemps.texi
 @include glibc-functions/mrand48_r.texi
+@include glibc-functions/mkstemps.texi
 @include glibc-functions/nrand48_r.texi
 @include glibc-functions/on_exit.texi
 @include glibc-functions/ptsname_r.texi
@@ -4952,8 +5912,10 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/qfcvt.texi
 @include glibc-functions/qfcvt_r.texi
 @include glibc-functions/qgcvt.texi
+@include glibc-functions/qsort_r.texi
 @include glibc-functions/random_r.texi
 @include glibc-functions/rpmatch.texi
+@include glibc-functions/secure_getenv.texi
 @include glibc-functions/seed48_r.texi
 @include glibc-functions/setstate_r.texi
 @include glibc-functions/srand48_r.texi
@@ -4980,20 +5942,11 @@ This list of functions is sorted according to the header that declares them.
 * mempcpy::
 * memrchr::
 * rawmemchr::
-* stpcpy::
-* stpncpy::
-* strcasecmp_l::
 * strcasestr::
 * strchrnul::
-* strcoll_l::
 * strfry::
 * strsep::
-* strsignal::
-* strncasecmp_l::
-* strndup::
-* strnlen::
 * strverscmp::
-* strxfrm_l::
 @end menu
 
 @include glibc-functions/ffsl.texi
@@ -5003,20 +5956,11 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/mempcpy.texi
 @include glibc-functions/memrchr.texi
 @include glibc-functions/rawmemchr.texi
-@include glibc-functions/stpcpy.texi
-@include glibc-functions/stpncpy.texi
-@include glibc-functions/strcasecmp_l.texi
 @include glibc-functions/strcasestr.texi
 @include glibc-functions/strchrnul.texi
-@include glibc-functions/strcoll_l.texi
 @include glibc-functions/strfry.texi
 @include glibc-functions/strsep.texi
-@include glibc-functions/strsignal.texi
-@include glibc-functions/strncasecmp_l.texi
-@include glibc-functions/strndup.texi
-@include glibc-functions/strnlen.texi
 @include glibc-functions/strverscmp.texi
-@include glibc-functions/strxfrm_l.texi
 
 @c @node Glibc strings.h
 @c @section Glibc Extensions to @code{<strings.h>}
@@ -5048,6 +5992,17 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/epoll_ctl.texi
 @include glibc-functions/epoll_wait.texi
 
+@node Glibc sys/fanotify.h
+@section Glibc @code{<sys/fanotify.h>}
+
+@menu
+* fanotify_init::
+* fanotify_mark::
+@end menu
+
+@include glibc-functions/fanotify_init.texi
+@include glibc-functions/fanotify_mark.texi
+
 @node Glibc sys/file.h
 @section Glibc @code{<sys/file.h>}
 
@@ -5088,6 +6043,9 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/ioperm.texi
 @include glibc-functions/iopl.texi
 
+@c @node Glibc sys/ioctl.h
+@c @section Glibc @code{<sys/ioctl.h>}
+
 @c @node Glibc sys/ipc.h
 @c @section Glibc Extensions to @code{<sys/ipc.h>}
 
@@ -5194,8 +6152,14 @@ This list of functions is sorted according to the header that declares them.
 
 @include glibc-functions/reboot.texi
 
-@c @node Glibc sys/resource.h
-@c @section Glibc Extensions to @code{<sys/resource.h>}
+@node Glibc sys/resource.h
+@section Glibc Extensions to @code{<sys/resource.h>}
+
+@menu
+* prlimit::
+@end menu
+
+@include glibc-functions/prlimit.texi
 
 @c @node Glibc sys/select.h
 @c @section Glibc Extensions to @code{<sys/select.h>}
@@ -5225,10 +6189,16 @@ This list of functions is sorted according to the header that declares them.
 @section Glibc Extensions to @code{<sys/socket.h>}
 
 @menu
+* accept4::
 * isfdtype::
+* recvmmsg::
+* sendmmsg::
 @end menu
 
+@include glibc-functions/accept4.texi
 @include glibc-functions/isfdtype.texi
+@include glibc-functions/recvmmsg.texi
+@include glibc-functions/sendmmsg.texi
 
 @node Glibc sys/stat.h
 @section Glibc Extensions to @code{<sys/stat.h>}
@@ -5318,12 +6288,14 @@ This list of functions is sorted according to the header that declares them.
 @menu
 * adjtime::
 * futimes::
+* futimesat::
 * lutimes::
 * settimeofday::
 @end menu
 
 @include glibc-functions/adjtime.texi
 @include glibc-functions/futimes.texi
+@include glibc-functions/futimesat.texi
 @include glibc-functions/lutimes.texi
 @include glibc-functions/settimeofday.texi
 
@@ -5340,17 +6312,31 @@ This list of functions is sorted according to the header that declares them.
 * adjtimex::
 * ntp_adjtime::
 * ntp_gettime::
+* ntp_gettimex::
 @end menu
 
 @include glibc-functions/adjtimex.texi
 @include glibc-functions/ntp_adjtime.texi
 @include glibc-functions/ntp_gettime.texi
+@include glibc-functions/ntp_gettimex.texi
 
 @c @node Glibc sys/types.h
 @c @section Glibc Extensions to @code{<sys/types.h>}
 
-@c @node Glibc sys/uio.h
-@c @section Glibc Extensions to @code{<sys/uio.h>}
+@node Glibc sys/uio.h
+@section Glibc Extensions to @code{<sys/uio.h>}
+
+@menu
+* preadv::
+* process_vm_readv::
+* process_vm_writev::
+* pwritev::
+@end menu
+
+@include glibc-functions/preadv.texi
+@include glibc-functions/process_vm_readv.texi
+@include glibc-functions/process_vm_writev.texi
+@include glibc-functions/pwritev.texi
 
 @c @node Glibc sys/un.h
 @c @section Glibc Extensions to @code{<sys/un.h>}
@@ -5463,26 +6449,24 @@ This list of functions is sorted according to the header that declares them.
 @section Glibc Extensions to @code{<time.h>}
 
 @menu
+* clock_adjtime::
 * dysize::
-* getdate_err::
 * getdate_r::
 * stime::
-* strftime_l::
 * strptime_l::
 * timegm::
 * timelocal::
-* timer_gettime::
+* timespec_get::
 @end menu
 
+@include glibc-functions/clock_adjtime.texi
 @include glibc-functions/dysize.texi
-@include glibc-functions/getdate_err.texi
 @include glibc-functions/getdate_r.texi
 @include glibc-functions/stime.texi
-@include glibc-functions/strftime_l.texi
 @include glibc-functions/strptime_l.texi
 @include glibc-functions/timegm.texi
 @include glibc-functions/timelocal.texi
-@include glibc-functions/timer_gettime.texi
+@include glibc-functions/timespec_get.texi
 
 @c @node Glibc trace.h
 @c @section Glibc Extensions to @code{<trace.h>}
@@ -5502,6 +6486,9 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/getttynam.texi
 @include glibc-functions/setttyent.texi
 
+@c @node Glibc uchar.h
+@c @section Glibc Extensions to @code{<uchar.h>}
+
 @c @node Glibc ucontext.h
 @c @section Glibc Extensions to @code{<ucontext.h>}
 
@@ -5516,9 +6503,10 @@ This list of functions is sorted according to the header that declares them.
 * brk::
 * chroot::
 * daemon::
+* dup3::
 * endusershell::
 * euidaccess::
-* fexecve::
+* execvpe::
 * get_current_dir_name::
 * getdomainname::
 * getdtablesize::
@@ -5528,6 +6516,7 @@ This list of functions is sorted according to the header that declares them.
 * getresuid::
 * getusershell::
 * group_member::
+* pipe2::
 * profil::
 * revoke::
 * sbrk::
@@ -5538,6 +6527,7 @@ This list of functions is sorted according to the header that declares them.
 * setresgid::
 * setresuid::
 * setusershell::
+* syncfs::
 * syscall::
 * ttyslot::
 * vhangup::
@@ -5547,9 +6537,10 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/brk.texi
 @include glibc-functions/chroot.texi
 @include glibc-functions/daemon.texi
+@include glibc-functions/dup3.texi
 @include glibc-functions/endusershell.texi
 @include glibc-functions/euidaccess.texi
-@include glibc-functions/fexecve.texi
+@include glibc-functions/execvpe.texi
 @include glibc-functions/get_current_dir_name.texi
 @include glibc-functions/getdomainname.texi
 @include glibc-functions/getdtablesize.texi
@@ -5559,6 +6550,7 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/getresuid.texi
 @include glibc-functions/getusershell.texi
 @include glibc-functions/group_member.texi
+@include glibc-functions/pipe2.texi
 @include glibc-functions/profil.texi
 @include glibc-functions/revoke.texi
 @include glibc-functions/sbrk.texi
@@ -5569,6 +6561,7 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/setresgid.texi
 @include glibc-functions/setresuid.texi
 @include glibc-functions/setusershell.texi
+@include glibc-functions/syncfs.texi
 @include glibc-functions/syscall.texi
 @include glibc-functions/ttyslot.texi
 @include glibc-functions/vhangup.texi
@@ -5591,6 +6584,8 @@ This list of functions is sorted according to the header that declares them.
 * setutent::
 * updwtmp::
 * utmpname::
+* login::
+* login_tty::
 @end menu
 
 @include glibc-functions/endutent.texi
@@ -5604,6 +6599,8 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/setutent.texi
 @include glibc-functions/updwtmp.texi
 @include glibc-functions/utmpname.texi
+@include glibc-functions/login.texi
+@include glibc-functions/login_tty.texi
 
 @node Glibc utmpx.h
 @section Glibc Extensions to @code{<utmpx.h>}
@@ -5630,21 +6627,10 @@ This list of functions is sorted according to the header that declares them.
 * fputws_unlocked::
 * getwc_unlocked::
 * getwchar_unlocked::
-* mbsnrtowcs::
 * putwc_unlocked::
 * putwchar_unlocked::
-* wcpcpy::
-* wcpncpy::
-* wcscasecmp::
-* wcscasecmp_l::
 * wcschrnul::
-* wcscoll_l::
-* wcsdup::
 * wcsftime_l::
-* wcsncasecmp::
-* wcsncasecmp_l::
-* wcsnlen::
-* wcsnrtombs::
 * wcstod_l::
 * wcstof_l::
 * wcstol_l::
@@ -5654,7 +6640,6 @@ This list of functions is sorted according to the header that declares them.
 * wcstoul_l::
 * wcstoull_l::
 * wcstouq::
-* wcsxfrm_l::
 * wmempcpy::
 @end menu
 
@@ -5664,21 +6649,10 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/fputws_unlocked.texi
 @include glibc-functions/getwc_unlocked.texi
 @include glibc-functions/getwchar_unlocked.texi
-@include glibc-functions/mbsnrtowcs.texi
 @include glibc-functions/putwc_unlocked.texi
 @include glibc-functions/putwchar_unlocked.texi
-@include glibc-functions/wcpcpy.texi
-@include glibc-functions/wcpncpy.texi
-@include glibc-functions/wcscasecmp.texi
-@include glibc-functions/wcscasecmp_l.texi
 @include glibc-functions/wcschrnul.texi
-@include glibc-functions/wcscoll_l.texi
-@include glibc-functions/wcsdup.texi
 @include glibc-functions/wcsftime_l.texi
-@include glibc-functions/wcsncasecmp.texi
-@include glibc-functions/wcsncasecmp_l.texi
-@include glibc-functions/wcsnlen.texi
-@include glibc-functions/wcsnrtombs.texi
 @include glibc-functions/wcstod_l.texi
 @include glibc-functions/wcstof_l.texi
 @include glibc-functions/wcstol_l.texi
@@ -5688,51 +6662,10 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/wcstoul_l.texi
 @include glibc-functions/wcstoull_l.texi
 @include glibc-functions/wcstouq.texi
-@include glibc-functions/wcsxfrm_l.texi
 @include glibc-functions/wmempcpy.texi
 
-@node Glibc wctype.h
-@section Glibc Extensions to @code{<wctype.h>}
-
-@menu
-* iswalnum_l::
-* iswalpha_l::
-* iswblank_l::
-* iswcntrl_l::
-* iswctype_l::
-* iswdigit_l::
-* iswgraph_l::
-* iswlower_l::
-* iswprint_l::
-* iswpunct_l::
-* iswspace_l::
-* iswupper_l::
-* iswxdigit_l::
-* towctrans_l::
-* towlower_l::
-* towupper_l::
-* wctrans_l::
-* wctype_l::
-@end menu
-
-@include glibc-functions/iswalnum_l.texi
-@include glibc-functions/iswalpha_l.texi
-@include glibc-functions/iswblank_l.texi
-@include glibc-functions/iswcntrl_l.texi
-@include glibc-functions/iswctype_l.texi
-@include glibc-functions/iswdigit_l.texi
-@include glibc-functions/iswgraph_l.texi
-@include glibc-functions/iswlower_l.texi
-@include glibc-functions/iswprint_l.texi
-@include glibc-functions/iswpunct_l.texi
-@include glibc-functions/iswspace_l.texi
-@include glibc-functions/iswupper_l.texi
-@include glibc-functions/iswxdigit_l.texi
-@include glibc-functions/towctrans_l.texi
-@include glibc-functions/towlower_l.texi
-@include glibc-functions/towupper_l.texi
-@include glibc-functions/wctrans_l.texi
-@include glibc-functions/wctype_l.texi
+@c @node Glibc wctype.h
+@c @section Glibc Extensions to @code{<wctype.h>}
 
 @c @node Glibc wordexp.h
 @c @section Glibc Extensions to @code{<wordexp.h>}
@@ -5743,13 +6676,25 @@ This list of functions is sorted according to the header that declares them.
 @menu
 * alloca::
 * alloca-opt::
+* Safe Allocation Macros::
+* Compile-time Assertions::
+* Integer Properties::
+* extern inline::
 * String Functions in C Locale::
 * Quoting::
 * error and progname::
 * gcd::
-* Regular expressions::
+* Searching for Libraries::
+* Exported Symbols of Shared Libraries::
+* LD Version Scripts::
+* Visual Studio Compatibility::
 * Supporting Relocation::
 * func::
+* configmake::
+* warnings::
+* manywarnings::
+* Running self-tests under valgrind::
+* stat-size::
 @end menu
 
 @node alloca
@@ -5762,6 +6707,14 @@ This list of functions is sorted according to the header that declares them.
 @findex alloca
 @include alloca-opt.texi
 
+@include safe-alloc.texi
+
+@include verify.texi
+
+@include intprops.texi
+
+@include extern-inline.texi
+
 @node String Functions in C Locale
 @section Character and String Functions in C Locale
 
@@ -5815,12 +6768,54 @@ ASCII characters.
 @include c-strtold.texi
 
 @include quote.texi
+
 @include error.texi
+
 @include gcd.texi
+
+@include havelib.texi
+
+@include lib-symbol-visibility.texi
+
+@include ld-version-script.texi
+
+@include ld-output-def.texi
+
 @include relocatable-maint.texi
 
+@include func.texi
+
+@include configmake.texi
+
+@include warnings.texi
+
+@include manywarnings.texi
+
+@include valgrind-tests.texi
+
+@include stat-size.texi
+
+
 @node Regular expressions
-@section Regular expressions
+@chapter Regular expressions
+
+@menu
+* Overview::
+* Regular Expression Syntax::
+* Common Operators::
+* GNU Operators::
+* GNU Emacs Operators::
+* What Gets Matched?::
+* Programming with Regex::
+* Regular expression syntaxes::
+@end menu
+
+@lowersections
+@include regex.texi
+@raisesections
+
+@node Regular expression syntaxes
+@section Regular expression syntaxes
 
 Gnulib supports many different types of regular expressions; although
 the underlying features are the same or identical, the syntax used
@@ -5829,13 +6824,10 @@ generated automatically.
 
 @include regexprops-generic.texi
 
-@include func.texi
-
-
 @node GNU Free Documentation License
 @appendix GNU Free Documentation License
 
-@include fdl.texi
+@include fdl-1.3.texi
 
 
 @node Index