NEWS.stable: log cherry-pick [e446f25]->[c092018] relocatable-shell: Update suggested...
[gnulib.git] / doc / gnulib.texi
index 8363202..4dadf7a 100644 (file)
@@ -23,7 +23,7 @@ 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-2012 Free Software Foundation, Inc.
+Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -57,7 +57,8 @@ Documentation License''.
 @end ifnottex
 
 @menu
-* Introduction::
+* Brief Overview::
+* Philosophy::
 * Invoking gnulib-tool::
 * Writing modules::
 * Extending Gnulib::
@@ -87,23 +88,32 @@ If you need this particular \thing\, you may write to
 @end macro
 
 
-@node Introduction
-@chapter Introduction
+@node Brief Overview
+@chapter Brief Overview
 
-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.
+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::
@@ -154,7 +164,7 @@ 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.
+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
@@ -389,7 +399,7 @@ 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
+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.
 
@@ -825,17 +835,17 @@ 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
+@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} and
-@code{gnulib-tool --create-megatestdir} by default include all tests of
-modules specified on the command line, regardless of their status
+@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},
@@ -921,8 +931,8 @@ 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
+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.
 
 
@@ -1063,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=...
@@ -1194,6 +1204,7 @@ which (known) portability problems are not worked around by Gnulib.
 * stdint.h::
 * stdio.h::
 * stdlib.h::
+* stdnoreturn.h::
 * string.h::
 * strings.h::
 * stropts.h::
@@ -1221,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::
@@ -1281,6 +1293,7 @@ which (known) portability problems are not worked around by Gnulib.
 @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
@@ -1308,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
@@ -1357,6 +1371,7 @@ by Gnulib.
 * aio_suspend::
 * aio_write::
 * alarm::
+* aligned_alloc::
 * alphasort::
 * asctime::
 * asctime_r::
@@ -1385,6 +1400,8 @@ by Gnulib.
 * bind::
 * bsearch::
 * btowc::
+* c16rtomb::
+* c32rtomb::
 * cabs::
 * cabsf::
 * cabsl::
@@ -1870,6 +1887,8 @@ by Gnulib.
 * malloc::
 * mblen::
 * mbrlen::
+* mbrtoc16::
+* mbrtoc32::
 * mbrtowc::
 * mbsinit::
 * mbsnrtowcs::
@@ -2158,6 +2177,7 @@ by Gnulib.
 * putwchar::
 * pwrite::
 * qsort::
+* quick_exit::
 * raise::
 * rand::
 * rand_r::
@@ -2550,6 +2570,7 @@ 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
@@ -2578,6 +2599,8 @@ by Gnulib.
 @include posix-functions/bind.texi
 @include posix-functions/bsearch.texi
 @include posix-functions/btowc.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
@@ -3063,6 +3086,8 @@ by Gnulib.
 @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
@@ -3351,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
@@ -3717,7 +3743,7 @@ by Gnulib.
 @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
+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.
 
@@ -3943,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::
@@ -3957,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::
@@ -4166,10 +4194,12 @@ This list of functions is sorted according to the header that declares them.
 
 @menu
 * getdirentries::
+* scandirat::
 * versionsort::
 @end menu
 
 @include glibc-functions/getdirentries.texi
+@include glibc-functions/scandirat.texi
 @include glibc-functions/versionsort.texi
 
 @node Glibc dlfcn.h
@@ -4280,11 +4310,15 @@ This list of functions is sorted according to the header that declares them.
 
 @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>}
@@ -4772,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
@@ -4787,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
 
@@ -5601,11 +5661,13 @@ This list of functions is sorted according to the header that declares them.
 * clone::
 * sched_getaffinity::
 * sched_setaffinity::
+* setns::
 @end menu
 
 @include glibc-functions/clone.texi
 @include glibc-functions/sched_getaffinity.texi
 @include glibc-functions/sched_setaffinity.texi
+@include glibc-functions/setns.texi
 
 @node Glibc search.h
 @section Glibc Extensions to @code{<search.h>}
@@ -5806,9 +5868,9 @@ This list of functions is sorted according to the header that declares them.
 * qfcvt_r::
 * qgcvt::
 * qsort_r::
-* quick_exit::
 * random_r::
 * rpmatch::
+* secure_getenv::
 * seed48_r::
 * setstate_r::
 * srand48_r::
@@ -5851,9 +5913,9 @@ This list of functions is sorted according to the header that declares them.
 @include glibc-functions/qfcvt_r.texi
 @include glibc-functions/qgcvt.texi
 @include glibc-functions/qsort_r.texi
-@include glibc-functions/quick_exit.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
@@ -5930,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>}
 
@@ -6079,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>}
@@ -6112,10 +6191,14 @@ This list of functions is sorted according to the header that declares them.
 @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>}
@@ -6229,11 +6312,13 @@ 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>}
@@ -6243,10 +6328,14 @@ This list of functions is sorted according to the header that declares them.
 
 @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
@@ -6360,20 +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_r::
 * stime::
 * strptime_l::
 * timegm::
 * timelocal::
+* timespec_get::
 @end menu
 
+@include glibc-functions/clock_adjtime.texi
 @include glibc-functions/dysize.texi
 @include glibc-functions/getdate_r.texi
 @include glibc-functions/stime.texi
 @include glibc-functions/strptime_l.texi
 @include glibc-functions/timegm.texi
 @include glibc-functions/timelocal.texi
+@include glibc-functions/timespec_get.texi
 
 @c @node Glibc trace.h
 @c @section Glibc Extensions to @code{<trace.h>}
@@ -6393,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>}
 
@@ -6488,6 +6584,7 @@ This list of functions is sorted according to the header that declares them.
 * setutent::
 * updwtmp::
 * utmpname::
+* login::
 * login_tty::
 @end menu
 
@@ -6502,6 +6599,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.texi
 @include glibc-functions/login_tty.texi
 
 @node Glibc utmpx.h
@@ -6581,6 +6679,7 @@ This list of functions is sorted according to the header that declares them.
 * Safe Allocation Macros::
 * Compile-time Assertions::
 * Integer Properties::
+* extern inline::
 * String Functions in C Locale::
 * Quoting::
 * error and progname::
@@ -6614,6 +6713,8 @@ This list of functions is sorted according to the header that declares them.
 
 @include intprops.texi
 
+@include extern-inline.texi
+
 @node String Functions in C Locale
 @section Character and String Functions in C Locale