X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fgnulib.texi;h=a1f54461cf987c13216342262160dfa431864218;hb=df8bc51660941d7464dcd31170690519cb95c0c2;hp=e98f124c4869d4a9b83927cae91b84325331825e;hpb=aa087a665ac755fb932610ba6ade2e7af7aeff9d;p=gnulib.git diff --git a/doc/gnulib.texi b/doc/gnulib.texi index e98f124c4..a1f54461c 100644 --- a/doc/gnulib.texi +++ b/doc/gnulib.texi @@ -1,5 +1,4 @@ \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 @@ -18,15 +17,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-2010 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 @@ -55,10 +53,13 @@ Texts. A copy of the license is included in the section entitled @menu * Introduction:: * 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. @@ -78,6 +79,7 @@ If you need this particular \thing\, you may write to @w{@code{}}. @end macro + @node Introduction @chapter Introduction @@ -96,6 +98,7 @@ Resources: @end itemize @menu +* Benefits:: * Library vs Reusable Code:: * Portability and Application Code:: * Modules:: @@ -112,37 +115,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 @@ -200,24 +219,490 @@ 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. For this -reason, it is recommended to place the @code{#include} before the -@code{extern "C"} block. +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 }. +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 } +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 . +@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} implicity 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.) + +@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 }. + +@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 as a developer a idea 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 @@ -259,6 +744,172 @@ 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} 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} and +@code{gnulib-tool --create-megatestdir} 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{} 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{} and use it in a compilation unit that does not include +@code{}, 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 @section Library version handling @@ -688,6 +1339,7 @@ by Gnulib. * aio_suspend:: * aio_write:: * alarm:: +* alphasort:: * asctime:: * asctime_r:: * asin:: @@ -712,13 +1364,9 @@ by Gnulib. * atol:: * atoll:: * basename:: -* bcmp:: -* bcopy:: * bind:: -* bsd_signal:: * bsearch:: * btowc:: -* bzero:: * cabs:: * cabsf:: * cabsl:: @@ -839,16 +1487,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 +1535,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 +1564,7 @@ by Gnulib. * fesetround:: * fetestexcept:: * feupdateenv:: +* fexecve:: * fflush:: * ffs:: * fgetc:: @@ -929,6 +1583,7 @@ by Gnulib. * fmax:: * fmaxf:: * fmaxl:: +* fmemopen:: * fmin:: * fminf:: * fminl:: @@ -949,6 +1604,7 @@ by Gnulib. * fread:: * free:: * freeaddrinfo:: +* freelocale:: * freopen:: * frexp:: * frexpf:: @@ -958,30 +1614,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 +1649,6 @@ by Gnulib. * getgrnam:: * getgrnam_r:: * getgroups:: -* gethostbyaddr:: -* gethostbyname:: * gethostent:: * gethostid:: * gethostname:: @@ -1040,13 +1694,11 @@ by Gnulib. * getutxline:: * getwc:: * getwchar:: -* getwd:: * glob:: * globfree:: * gmtime:: * gmtime_r:: * grantpt:: -* h_errno:: * hcreate:: * hdestroy:: * hsearch:: @@ -1067,7 +1719,6 @@ by Gnulib. * ilogbl:: * imaxabs:: * imaxdiv:: -* index:: * inet_addr:: * inet_ntoa:: * inet_ntop:: @@ -1076,15 +1727,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 +1749,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 +1808,7 @@ by Gnulib. * lgammaf:: * lgammal:: * link:: +* linkat:: * lio_listio:: * listen:: * llabs:: @@ -1172,12 +1849,12 @@ by Gnulib. * lsearch:: * lseek:: * lstat:: -* makecontext:: * malloc:: * mblen:: * mbrlen:: * mbrtowc:: * mbsinit:: +* mbsnrtowcs:: * mbsrtowcs:: * mbstowcs:: * mbtowc:: @@ -1188,10 +1865,13 @@ by Gnulib. * memmove:: * memset:: * mkdir:: +* mkdirat:: +* mkdtemp:: * mkfifo:: +* mkfifoat:: * mknod:: +* mknodat:: * mkstemp:: -* mktemp:: * mktime:: * mlock:: * mlockall:: @@ -1226,6 +1906,7 @@ by Gnulib. * nearbyint:: * nearbyintf:: * nearbyintl:: +* newlocale:: * nextafter:: * nextafterf:: * nextafterl:: @@ -1235,13 +1916,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 +2022,8 @@ by Gnulib. * pread:: * printf:: * pselect:: +* psiginfo:: +* psignal:: * pthread_atfork:: * pthread_attr_destroy:: * pthread_attr_getdetachstate:: @@ -1343,7 +2033,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 +2042,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 +2077,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 +2090,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:: @@ -1457,6 +2148,7 @@ by Gnulib. * readdir:: * readdir_r:: * readlink:: +* readlinkat:: * readv:: * realloc:: * realpath:: @@ -1476,9 +2168,9 @@ by Gnulib. * remquof:: * remquol:: * rename:: +* renameat:: * rewind:: * rewinddir:: -* rindex:: * rint:: * rintf:: * rintl:: @@ -1486,15 +2178,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 +2214,6 @@ by Gnulib. * sendmsg:: * sendto:: * setbuf:: -* setcontext:: * setegid:: * setenv:: * seteuid:: @@ -1569,6 +2261,7 @@ by Gnulib. * siglongjmp:: * signal:: * signbit:: +* signgam:: * sigpause:: * sigpending:: * sigprocmask:: @@ -1604,26 +2297,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 +2342,12 @@ by Gnulib. * strtoull:: * strtoumax:: * strxfrm:: +* strxfrm_l:: * swab:: -* swapcontext:: * swprintf:: * swscanf:: * symlink:: +* symlinkat:: * sync:: * sysconf:: * syslog:: @@ -1673,6 +2378,7 @@ by Gnulib. * timer_create:: * timer_delete:: * timer_getoverrun:: +* timer_gettime:: * timer_settime:: * times:: * timezone:: @@ -1680,10 +2386,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 +2405,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 +2439,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 +2477,15 @@ by Gnulib. * wcstoul:: * wcstoull:: * wcstoumax:: -* wcswcs:: * wcswidth:: * wcsxfrm:: +* wcsxfrm_l:: * wctob:: * wctomb:: * wctrans:: +* wctrans_l:: * wctype:: +* wctype_l:: * wcwidth:: * wmemchr:: * wmemcmp:: @@ -1808,6 +2532,7 @@ by Gnulib. @include posix-functions/aio_suspend.texi @include posix-functions/aio_write.texi @include posix-functions/alarm.texi +@include posix-functions/alphasort.texi @include posix-functions/asctime.texi @include posix-functions/asctime_r.texi @include posix-functions/asin.texi @@ -1832,13 +2557,9 @@ 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/cabs.texi @include posix-functions/cabsf.texi @include posix-functions/cabsl.texi @@ -1959,16 +2680,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 +2728,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 +2757,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 +2776,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 +2797,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 +2807,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 +2842,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 +2887,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 +2912,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 +2920,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 +2942,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 +3001,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 +3042,12 @@ 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/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 +3058,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 +3099,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 +3109,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 +3215,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 +3226,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 +3235,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 +3270,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 +3283,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 @@ -2577,6 +3341,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 +3361,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 +3371,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 +3407,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 +3454,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 +3490,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 +3535,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 +3571,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 +3579,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 +3598,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 +3632,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 +3670,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 +3695,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 (POSIX:2001) 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 @@ -3013,14 +3876,11 @@ This list of functions is sorted according to the header that declares them. * Glibc gnu/libc-version.h:: * Glibc grp.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:: @@ -3028,6 +3888,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:: @@ -3053,6 +3914,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:: @@ -3099,7 +3961,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 @@ -3273,54 +4134,20 @@ This list of functions is sorted according to the header that declares them. @section Glibc Extensions to @code{} @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{} @menu -* alphasort:: -* dirfd:: * getdirentries:: -* scandir:: * 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/versionsort.texi @node Glibc dlfcn.h @@ -3430,9 +4257,11 @@ This list of functions is sorted according to the header that declares them. @section Glibc Extensions to @code{} @menu +* fallocate:: * readahead:: @end menu +@include glibc-functions/fallocate.texi @include glibc-functions/readahead.texi @node Glibc fenv.h @@ -3509,16 +4338,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{} @@ -3584,14 +4407,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{} -@node Glibc langinfo.h -@section Glibc Extensions to @code{} - -@menu -* nl_langinfo_l:: -@end menu - -@include glibc-functions/nl_langinfo_l.texi +@c @node Glibc langinfo.h +@c @section Glibc Extensions to @code{} @c @node Glibc libgen.h @c @section Glibc Extensions to @code{} @@ -3633,20 +4450,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{} - -@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{} @node Glibc malloc.h @section Glibc @code{} @@ -3708,7 +4513,6 @@ This list of functions is sorted according to the header that declares them. * pow10l:: * scalbf:: * scalbl:: -* signgam:: * significand:: * significandf:: * significandl:: @@ -3754,7 +4558,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 @@ -3787,14 +4590,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{} - -@menu -* strfmon_l:: -@end menu - -@include glibc-functions/strfmon_l.texi +@c @node Glibc monetary.h +@c @section Glibc Extensions to @code{} @node Glibc mntent.h @section Glibc @code{} @@ -3998,8 +4795,16 @@ This list of functions is sorted according to the header that declares them. @include glibc-functions/pthread_rwlockattr_setkind_np.texi @include glibc-functions/pthread_yield.texi -@c @node Glibc pty.h -@c @section Glibc @code{} +@node Glibc pty.h +@section Glibc @code{} + +@menu +* forkpty:: +* openpty:: +@end menu + +@include glibc-functions/forkpty.texi +@include glibc-functions/openpty.texi @node Glibc pwd.h @section Glibc Extensions to @code{} @@ -4712,13 +5517,11 @@ This list of functions is sorted according to the header that declares them. @menu * clone:: * sched_getaffinity:: -* sched_get_priority_min:: * sched_setaffinity:: @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 @node Glibc search.h @@ -4736,6 +5539,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{} + +@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{} @@ -4780,7 +5597,6 @@ This list of functions is sorted according to the header that declares them. @menu * gsignal:: -* psignal:: * sigandset:: * sigblock:: * siggetmask:: @@ -4796,7 +5612,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 @@ -4831,7 +5646,6 @@ This list of functions is sorted according to the header that declares them. @menu * asprintf:: * cuserid:: -* dprintf:: * clearerr_unlocked:: * fcloseall:: * feof_unlocked:: @@ -4840,14 +5654,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:: @@ -4855,12 +5667,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 @@ -4869,14 +5679,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 @@ -4884,7 +5692,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{} @@ -4903,8 +5710,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:: @@ -4944,8 +5753,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 @@ -4982,20 +5793,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 @@ -5005,20 +5807,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{} @@ -5230,9 +6023,11 @@ This list of functions is sorted according to the header that declares them. @section Glibc Extensions to @code{} @menu +* accept4:: * isfdtype:: @end menu +@include glibc-functions/accept4.texi @include glibc-functions/isfdtype.texi @node Glibc sys/stat.h @@ -5323,12 +6118,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 @@ -5469,25 +6266,19 @@ This list of functions is sorted according to the header that declares them. @menu * dysize:: -* getdate_err:: * getdate_r:: * stime:: -* strftime_l:: * strptime_l:: * timegm:: * timelocal:: -* timer_gettime:: @end menu @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 @c @node Glibc trace.h @c @section Glibc Extensions to @code{} @@ -5521,9 +6312,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:: @@ -5533,6 +6325,7 @@ This list of functions is sorted according to the header that declares them. * getresuid:: * getusershell:: * group_member:: +* pipe2:: * profil:: * revoke:: * sbrk:: @@ -5552,9 +6345,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 @@ -5564,6 +6358,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 @@ -5596,6 +6391,7 @@ This list of functions is sorted according to the header that declares them. * setutent:: * updwtmp:: * utmpname:: +* login_tty:: @end menu @include glibc-functions/endutent.texi @@ -5609,6 +6405,7 @@ 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_tty.texi @node Glibc utmpx.h @section Glibc Extensions to @code{} @@ -5635,21 +6432,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:: @@ -5659,7 +6445,6 @@ This list of functions is sorted according to the header that declares them. * wcstoul_l:: * wcstoull_l:: * wcstouq:: -* wcsxfrm_l:: * wmempcpy:: @end menu @@ -5669,21 +6454,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 @@ -5693,51 +6467,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{} - -@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{} @c @node Glibc wordexp.h @c @section Glibc Extensions to @code{} @@ -5748,13 +6481,21 @@ This list of functions is sorted according to the header that declares them. @menu * alloca:: * alloca-opt:: +* Safe Allocation Macros:: * 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:: +* warnings:: +* manywarnings:: +* Running self-tests under valgrind:: @end menu @node alloca @@ -5767,6 +6508,8 @@ This list of functions is sorted according to the header that declares them. @findex alloca @include alloca-opt.texi +@include safe-alloc.texi + @node String Functions in C Locale @section Character and String Functions in C Locale @@ -5820,9 +6563,10 @@ ASCII characters. @include c-strtold.texi @include quote.texi + @include error.texi + @include gcd.texi -@include relocatable-maint.texi @node Regular expressions @section Regular expressions @@ -5834,13 +6578,28 @@ generated automatically. @include regexprops-generic.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 warnings.texi + +@include manywarnings.texi + +@include valgrind-tests.texi @node GNU Free Documentation License @appendix GNU Free Documentation License -@include fdl.texi +@include fdl-1.3.texi @node Index