updated nodes and xrefs.
authormelissa <melissa>
Thu, 26 Mar 1992 04:16:17 +0000 (04:16 +0000)
committermelissa <melissa>
Thu, 26 Mar 1992 04:16:17 +0000 (04:16 +0000)
25 files changed:
manual/=limits.texinfo
manual/=process.texinfo
manual/=stdarg.texi
manual/=stddef.texi
manual/header.texi
manual/intro.texi
manual/io.texi
manual/job.texi
manual/llio.texi
manual/locale.texi
manual/maint.texi
manual/math.texi
manual/mbyte.texi
manual/memory.texi
manual/pipe.texi
manual/search.texi
manual/setjmp.texi
manual/signal.texi
manual/socket.texi
manual/stdio.texi
manual/string.texi
manual/sysinfo.texi
manual/terminal.texi
manual/time.texi
manual/users.texi

index 293ad8c..e38e75a 100644 (file)
@@ -1,4 +1,4 @@
-@node Representation Limits
+@node Representation Limits, System Configuration Limits, System Information, Top
 @chapter Representation Limits
 
 This chapter contains information about constants and parameters that
@@ -6,11 +6,11 @@ characterize the representation of the various integer and
 floating-point types supported by the GNU C library.
 
 @menu
-* Integer Representation Limits::
-* Floating-Point Limits::
+* Integer Representation Limits::  
+* Floating-Point Limits ::      Floating-Point Limits
 @end menu
 
-@node Integer Representation Limits
+@node Integer Representation Limits, Floating-Point Limits ,  , Representation Limits
 @section Integer Representation Limits
 @cindex integer representation limits
 @cindex representation limits, integer
@@ -149,7 +149,7 @@ Parameters}.
 @pindex limits.h
 
 
-@node Floating-Point Limits 
+@node Floating-Point Limits ,  , Integer Representation Limits, Representation Limits
 @section Floating-Point Limits
 @cindex floating-point number representation
 @cindex representation, floating-point number
@@ -173,12 +173,12 @@ characterize each of the supported floating-point representations on a
 particular system.
 
 @menu
-* Floating-Point Representation::      Definitions of terminology.
-* Floating-Point Parameters::          Descriptions of the library facilities.
-* IEEE Floating Point::                        An example of a common representation.
+* Floating-Point Representation::  Definitions of terminology.
+* Floating-Point Parameters::   Descriptions of the library facilities.
+* IEEE Floating Point::         An example of a common representation.
 @end menu
 
-@node Floating-Point Representation
+@node Floating-Point Representation, Floating-Point Parameters,  , Floating-Point Limits
 @subsection Floating-Point Representation
 
 This section introduces the terminology used to characterize the
@@ -254,7 +254,7 @@ therefore greater than or equal to @code{1/@var{b}}, where @var{b} is
 the base.
 @cindex normalized floating-point number
 
-@node Floating-Point Parameters
+@node Floating-Point Parameters, IEEE Floating Point, Floating-Point Representation, Floating-Point Limits
 @subsection Floating-Point Parameters
 
 @strong{Incomplete:}  This section needs some more concrete examples
@@ -537,7 +537,7 @@ type.  The maximum value is @code{1E-9}.
 @end deftypevr
 
 
-@node IEEE Floating Point
+@node IEEE Floating Point,  , Floating-Point Parameters, Floating-Point Limits
 @subsection IEEE Floating Point
 @cindex IEEE floating-point representation 
 @cindex floating-point, IEEE
index 01ffacf..33dd08c 100644 (file)
@@ -1,4 +1,4 @@
-@node Processes
+@node Processes, Job Control, Signal Handling, Top
 @chapter Processes
 
 @cindex process
@@ -17,17 +17,17 @@ This chapter describes how a program can create, terminate, and control
 child processes.
 
 @menu
-* Program Arguments::          Parsing the command-line arguments to
+* Program Arguments::           Parsing the command-line arguments to
                                 a program.
-* Environment Variables::      How to access parameters inherited from
+* Environment Variables::       How to access parameters inherited from
                                 a parent process.
-* Program Termination::                How to cause a process to terminate and
+* Program Termination::         How to cause a process to terminate and
                                 return status information to its parent.
-* Creating New Processes::     Running other programs.
+* Creating New Processes::      Running other programs.
 @end menu
 
 
-@node Program Arguments
+@node Program Arguments, Environment Variables,  , Processes
 @section Program Arguments
 @cindex program arguments
 @cindex command line arguments
@@ -60,14 +60,14 @@ arguments are interpreted in the same way (as file names, for example),
 you are usually better off using @code{getopt} to do the parsing.
 
 @menu
-* Program Argument Syntax Conventions::         By convention, program
+* Program Argument Syntax Conventions::  By convention, program
                                                  options are specified by a
                                                  leading hyphen.
-* Parsing Program Arguments::                   The @code{getopt} function.
-* Example of Parsing Program Arguments::        An example of @code{getopt}.
+* Parsing Program Arguments::   The @code{getopt} function.
+* Example of Parsing Program Arguments::  An example of @code{getopt}.
 @end menu
 
-@node Program Argument Syntax Conventions
+@node Program Argument Syntax Conventions, Parsing Program Arguments,  , Program Arguments
 @subsection Program Argument Syntax Conventions
 @cindex program argument syntax
 @cindex syntax, for program arguments
@@ -124,7 +124,7 @@ Options may be supplied in any order, or appear multiple times.  The
 interpretation is left up to the particular application program.
 @end itemize
 
-@node Parsing Program Arguments
+@node Parsing Program Arguments, Example of Parsing Program Arguments, Program Argument Syntax Conventions, Program Arguments
 @subsection Parsing Program Arguments
 @cindex program arguments, parsing
 @cindex command arguments, parsing
@@ -207,7 +207,7 @@ option character.  In addition, if the external variable @code{opterr}
 is nonzero, @code{getopt} prints an error message.
 @end deftypefun
 
-@node Example of Parsing Program Arguments
+@node Example of Parsing Program Arguments,  , Parsing Program Arguments, Program Arguments
 @subsection Example of Parsing Program Arguments
 
 Here is an example showing how @code{getopt} is typically used.  The
@@ -311,7 +311,7 @@ aflag = 1, bflag = 0, cvalue = (null)
 Non-option argument -
 @end example
 
-@node Environment Variables
+@node Environment Variables, Program Termination, Program Arguments, Processes
 @section Environment Variables
 
 @cindex environment variable
@@ -349,13 +349,13 @@ character, since this is assumed to terminate the string.
 
 
 @menu
-* Environment Access::                 How to get and set the values of
+* Environment Access::          How to get and set the values of
                                         environment variables.
-* Standard Environment Variables::     These environment variables have
+* Standard Environment Variables::  These environment variables have
                                         standard interpretations.
 @end menu
 
-@node Environment Access
+@node Environment Access, Standard Environment Variables,  , Environment Variables
 @subsection Environment Access
 @cindex environment access
 @cindex environment representation
@@ -411,7 +411,7 @@ If you just want to get the value of an environment variable, use
 @code{getenv}.
 @end deftypevar
 
-@node Standard Environment Variables
+@node Standard Environment Variables,  , Environment Access, Environment Variables
 @subsection Standard Environment Variables
 @cindex standard environment variables
 
@@ -520,7 +520,7 @@ reordering of command line arguments by @code{getopt}.  @xref{Program
 Argument Syntax Conventions}.
 @end table
 
-@node Program Termination
+@node Program Termination, Creating New Processes, Environment Variables, Processes
 @section Program Termination
 @cindex program termination
 @cindex process termination
@@ -539,12 +539,14 @@ more detail in @ref{Signal Handling}.  The @code{abort} function causes
 a terminal that kills the program.
 
 @menu
-* Normal Program Termination::
-* Aborting a Program::
-* Process Termination Details::
+* Normal Program Termination::  
+* Exit Status::                 Exit Status
+* Cleanups on Exit::            Cleanups on Exit
+* Aborting a Program::          
+* Termination Internals::       Termination Internals
 @end menu
 
-@node Normal Program Termination
+@node Normal Program Termination, Exit Status,  , Program Termination
 @subsection Normal Program Termination
 
 @comment stdlib.h
@@ -576,7 +578,7 @@ with the @code{tmpfile} function are removed; see @ref{Temporary Files}.
 @code{_exit} is called.  @xref{Termination Internals}
 @end enumerate
 
-@node Exit Status
+@node Exit Status, Cleanups on Exit, Normal Program Termination, Program Termination
 @subsection Exit Status
 @cindex exit status
 
@@ -645,7 +647,7 @@ kinds of "non-success".  For example, @code{diff} uses status value
 mean that there was difficulty in opening the files.
 @end deftypevr
 
-@node Cleanups on Exit
+@node Cleanups on Exit, Aborting a Program, Exit Status, Program Termination
 @subsection Cleanups on Exit
 
 @comment stdlib.h
@@ -695,7 +697,7 @@ void main (void)
 When this program is executed, it just prints the message and exits.
 
 
-@node Aborting a Program
+@node Aborting a Program, Termination Internals, Cleanups on Exit, Program Termination
 @subsection Aborting a Program
 @cindex aborting a program
 
@@ -716,7 +718,7 @@ intercept this signal; see @ref{Signal Handling}.
 @strong{Incomplete:}  Why would you want to define such a handler?
 @end deftypefun
 
-@node Termination Internals
+@node Termination Internals,  , Aborting a Program, Program Termination
 @subsection Termination Internals
 
 The @code{_exit} function is the primitive used for process termination
@@ -766,7 +768,7 @@ signal and a @code{SIGCONT} signal are sent to each process in the
 group.  @xref{Job Control}.
 @end itemize
 
-@node Creating New Processes
+@node Creating New Processes,  , Program Termination, Processes
 @section Creating New Processes
 
 This section describes how your program can cause other programs to be
@@ -781,23 +783,23 @@ need more control over the details of how this is done, you can use the
 primitive functions to do each step individually instead.
 
 @menu
-* Running a Command::                  The easy way to run another program.
-* Process Creation Concepts::          An overview of the hard way to do it.
-* Process Identification::              How to get the process ID of a process.
-* Creating a Process::                 How to fork a child process.
-* Executing a File::                   How to get a process to execute another
+* Running a Command::           The easy way to run another program.
+* Process Creation Concepts::   An overview of the hard way to do it.
+* Process Identification::      How to get the process ID of a process.
+* Creating a Process::          How to fork a child process.
+* Executing a File::            How to get a process to execute another
                                         program.
-* Process Completion::                 How to tell when a child process has
+* Process Completion::          How to tell when a child process has
                                         completed.
-* Process Completion Status::           How to interpret the status value 
+* Process Completion Status::   How to interpret the status value 
                                          returned from a child process.
-* BSD Process Completion Functions::    More functions, for backward
+* BSD Process Completion Functions::  More functions, for backward
                                          compatibility.
-* Process Creation Example::            A complete example program.
+* Process Creation Example::    A complete example program.
 @end menu
 
 
-@node Running a Command
+@node Running a Command, Process Creation Concepts,  , Creating New Processes
 @subsection Running a Command
 @cindex running a command
 
@@ -835,7 +837,7 @@ Subprocess}) are closely related to the @code{system} function.  They
 allow the parent process to communicate with the standard input and
 output channels of the command being executed.
 
-@node Process Creation Concepts
+@node Process Creation Concepts, Process Identification, Running a Command, Creating New Processes
 @subsection Process Creation Concepts
 
 This section gives an overview of processes and of the steps involved in
@@ -881,7 +883,7 @@ image; when the new program exits, the process exits too, instead of
 returning to the previous process image.
 
 
-@node Process Identification
+@node Process Identification, Creating a Process, Process Creation Concepts, Creating New Processes
 @subsection Process Identification
 
 The @code{pid_t} data type represents process IDs.  You can get the
@@ -913,7 +915,7 @@ The @code{getppid} function returns the process ID of the parent of the
 current process.
 @end deftypefun
 
-@node Creating a Process
+@node Creating a Process, Executing a File, Process Identification, Creating New Processes
 @subsection Creating a Process
 
 The @code{fork} function is the primitive for creating a process.
@@ -1003,7 +1005,7 @@ library permits you to use @code{vfork} on all systems, but actually
 executes @code{fork} if @code{vfork} isn't available.
 @end deftypefun
 
-@node Executing a File
+@node Executing a File, Process Completion, Creating a Process, Creating New Processes
 @subsection Executing a File
 @cindex executing a file
 @cindex @code{exec} functions
@@ -1174,7 +1176,7 @@ it, and these descriptors do survive through @code{exec} (provided that
 they do not have @code{FD_CLOEXEC} set.  The new process image can
 reconnect these to new streams using @code{fdopen}.
 
-@node Process Completion
+@node Process Completion, Process Completion Status, Executing a File, Creating New Processes
 @subsection Process Completion
 @cindex process completion
 @cindex waiting for completion of child process
@@ -1304,7 +1306,7 @@ sigchld_handler (int signum)
 @end example
 @end deftypefun
 
-@node Process Completion Status
+@node Process Completion Status, BSD Process Completion Functions, Process Completion, Creating New Processes
 @subsection Process Completion Status
 
 If the exit status value (@pxref{Program Termination}) of the child
@@ -1363,7 +1365,7 @@ number of the signal that caused the child process to stop.
 @end deftypefn
 
 
-@node BSD Process Completion Functions
+@node BSD Process Completion Functions, Process Creation Example, Process Completion Status, Creating New Processes
 @subsection BSD Process Completion Functions
 
 The GNU library also provides these related facilities for compatibility
@@ -1431,7 +1433,7 @@ structure.
 hasn't been written yet.  Put in a cross-reference here.
 @end deftypefun
 
-@node Process Creation Example
+@node Process Creation Example,  , BSD Process Completion Functions, Creating New Processes
 @subsection Process Creation Example
 
 Here is an example program showing how you might write a function
index e0d7476..df1932d 100644 (file)
@@ -1,4 +1,4 @@
-@node Variable Argument Facilities
+@node Variable Argument Facilities, Memory Allocation, Common Definitions, Top
 @chapter Variable Argument Facilities
 @cindex variadic argument functions
 @cindex variadic functions
@@ -14,15 +14,15 @@ defined in @file{stdarg.h}.
 @pindex stdarg.h
 
 @menu
-* Why Variable Arguments are Used::    
-* How Variable Arguments are Used::    An overview of the facilities for
+* Why Variable Arguments are Used::  
+* How Variable Arguments are Used::  An overview of the facilities for
                                         receiving variable arguments.
-* Variable Arguments Interface::       Detailed specification of the
+* Variable Arguments Interface::  Detailed specification of the
                                         library facilities.
-* Example of Variable Arguments::      A complete example.
+* Example of Variable Arguments::  A complete example.
 @end menu
 
-@node Why Variable Arguments are Used
+@node Why Variable Arguments are Used, How Variable Arguments are Used,  , Variable Argument Facilities
 @section Why Variable Arguments are Used
 
 Most C functions take a fixed number of arguments.  When you define a
@@ -51,7 +51,7 @@ example of still another class of function where variable arguments are
 useful.  This function prints its arguments (which can vary in type as
 well as number) under the control of a format template string.
 
-@node How Variable Arguments are Used
+@node How Variable Arguments are Used, Variable Arguments Interface, Why Variable Arguments are Used, Variable Argument Facilities
 @section How Variable Arguments are Used
 
 This section describes how you can define and call functions that take
@@ -59,17 +59,17 @@ variable arguments, and how to access the values of the non-required
 arguments.
 
 @menu
-* Syntax for Variable Arguments::      How to make a prototype for a function
+* Syntax for Variable Arguments::  How to make a prototype for a function
                                         with variable arguments.
-* Receiving the Argument Values::      Steps you must follow to access the
+* Receiving the Argument Values::  Steps you must follow to access the
                                         optional argument values.
-* How Many Arguments::                 How to decide whether there are more
+* How Many Arguments::          How to decide whether there are more
                                         arguments.
-* Calling Variadic Functions::         Things you need to know about calling
+* Calling Variadic Functions::  Things you need to know about calling
                                         variable arguments functions.
 @end menu
 
-@node Syntax for Variable Arguments
+@node Syntax for Variable Arguments, Receiving the Argument Values,  , How Variable Arguments are Used
 @subsection Syntax for Variable Arguments
 
 A function that accepts a variable number of arguments must have at
@@ -103,7 +103,7 @@ of arguments.  In particular, the @samp{@dots{}} syntax is a new feature
 of ANSI C.
 
 
-@node Receiving the Argument Values
+@node Receiving the Argument Values, How Many Arguments, Syntax for Variable Arguments, How Variable Arguments are Used
 @subsection Receiving the Argument Values
 
 Inside the definition of a variadic function, to access the optional
@@ -137,7 +137,7 @@ fewer arguments than were supplied in the call, but you will get garbage
 values if you try to access too many arguments.
 
 
-@node How Many Arguments
+@node How Many Arguments, Calling Variadic Functions, Receiving the Argument Values, How Variable Arguments are Used
 @subsection How Many Arguments Were Supplied
 
 There is no general way for a function to determine the number and type
@@ -167,7 +167,7 @@ might indicate the end of the argument list, provided that a null
 pointer isn't otherwise meaningful to the function.
 
 
-@node Calling Variadic Functions
+@node Calling Variadic Functions,  , How Many Arguments, How Variable Arguments are Used
 @subsection Calling Variadic Functions
 
 Functions that are @emph{defined} to be variadic must also be
@@ -198,7 +198,7 @@ corresponding formal parameters).
 @cindex default argument promotions
 @cindex argument promotion
 
-@node Variable Arguments Interface
+@node Variable Arguments Interface, Example of Variable Arguments, How Variable Arguments are Used, Variable Argument Facilities
 @section Variable Arguments Interface
 
 Here are descriptions of the macros used to retrieve variable arguments.
@@ -248,7 +248,7 @@ use it except for reasons of portability.
 @end deftypefn
 
 
-@node Example of Variable Arguments
+@node Example of Variable Arguments,  , Variable Arguments Interface, Variable Argument Facilities
 @section Example of Variable Arguments
 
 Here is a complete sample function that accepts variable numbers of
index a71c4d1..f743e16 100644 (file)
@@ -1,4 +1,4 @@
-@node Common Definitions
+@node Common Definitions, Variable Argument Facilities, Error Reporting, Top
 @chapter Common Definitions
 
 There are some miscellaneous data types and macros that are not part of
index 2a17e1b..49444b7 100644 (file)
@@ -1,4 +1,4 @@
-@node Summary of Library Facilities
+@node Summary of Library Facilities, Maintenance, System Configuration Limits, Top
 @appendix Summary of Library Facilities
 
 This appendix is a complete list of the facilities declared within the
index 84f543b..7e70a3a 100644 (file)
@@ -1,4 +1,4 @@
-@node Introduction, Getting Started, Top, Top
+@node Introduction, Error Reporting, Top, Top
 @chapter Introduction
 
 The C language provides no built-in facilities for performing such
@@ -19,7 +19,14 @@ standards to help you identify things that are potentially nonportable
 to other systems.  But the emphasis on this manual is not on strict
 portability.
 
-@node Getting Started, Standards and Portability, Introduction, Top
+@menu
+* Getting Started::             Getting Started
+* Standards and Portability::   Standards and Portability
+* Using the Library::           Using the Library
+* Roadmap to the Manual::       Roadmap to the Manual
+@end menu
+
+@node Getting Started, Standards and Portability,  , Introduction
 @section Getting Started
 
 This manual is written with the assumption that you are at least
@@ -47,7 +54,7 @@ library functions, and @emph{where} in this manual you can find more
 specific information about them.
 
 
-@node Standards and Portability, Using the Library, Getting Started, Top
+@node Standards and Portability, Using the Library, Getting Started, Introduction
 @section Standards and Portability
 @cindex standards
 
@@ -67,14 +74,14 @@ the manual.
 standards specify what features.
 
 @menu
-* ANSI C::                     The American National Standard for the
+* ANSI C::                      The American National Standard for the
                                 C programming language.  
-* POSIX::                      The IEEE 1003 standards for operating systems.
+* POSIX::                       The IEEE 1003 standards for operating systems.
 * Berkeley Unix::               BSD and SunOS.
-* SVID::                       The System V Interface Description.  
+* SVID::                        The System V Interface Description.  
 @end menu
 
-@node ANSI C
+@node ANSI C, POSIX,  , Standards and Portability
 @subsection ANSI C
 @cindex ANSI C
 
@@ -108,7 +115,7 @@ ANSI C has diverged significantly from older C dialects, this manual
 includes compatibility notes simply to warn you to beware of potential
 portability problems.
 
-@node POSIX
+@node POSIX, Berkeley Unix, ANSI C, Standards and Portability
 @subsection POSIX (The Portable Operating System Interface)
 @cindex POSIX
 @cindex POSIX.1
@@ -160,7 +167,7 @@ material has been incorporated.
 @comment confstr
 
 
-@node Berkeley Unix
+@node Berkeley Unix, SVID, POSIX, Standards and Portability
 @subsection Berkeley Unix
 @cindex BSD Unix
 @cindex 4.x BSD Unix
@@ -177,7 +184,7 @@ that includes some Unix System V functionality).
 that ought to be mentioned specifically here?
 
 
-@node SVID
+@node SVID,  , Berkeley Unix, Standards and Portability
 @subsection SVID (The System V Interface Description)
 @cindex SVID
 @cindex System V Unix
@@ -199,22 +206,22 @@ ought to be mentioned specifically here?
 
 
 
-@node Using the Library, Roadmap to the Manual, Standards and Portability, Top
+@node Using the Library, Roadmap to the Manual, Standards and Portability, Introduction
 @section Using the Library
 
 This section describes some of the practical issues involved in using
 the GNU C library.
 
 @menu
-* Header Files::       How to include the header files in your programs.
-* Macro Definitions::  Some functions in the library may really be 
+* Header Files::                How to include the header files in your programs.
+* Macro Definitions::           Some functions in the library may really be 
                         implemented as macros.
-* Reserved Names::     The C standard reserves some names for the library,
+* Reserved Names::              The C standard reserves some names for the library,
                         and some for users.
-* Feature Test Macros:: How to control what names are defined.
+* Feature Test Macros::         How to control what names are defined.
 @end menu
 
-@node Header Files
+@node Header Files, Macro Definitions,  , Using the Library
 @subsection Header Files
 @cindex header files
 
@@ -307,7 +314,7 @@ and macros that are not otherwise available and because it may define
 more efficient macro replacements for some functions.  It is also a sure
 way to have the correct declaration.
 
-@node Macro Definitions
+@node Macro Definitions, Reserved Names, Header Files, Using the Library
 @subsection Macro Definitions of Functions
 @cindex shadowing functions with macros
 @cindex removing macros that shadow functions
@@ -372,7 +379,7 @@ need for any of these methods.  In fact, removing macro definitions usually
 just makes your program slower.
 
 
-@node Reserved Names
+@node Reserved Names, Feature Test Macros, Macro Definitions, Using the Library
 @subsection Reserved Names
 @cindex reserved names
 @cindex name space
@@ -510,7 +517,7 @@ The header file @file{termios.h} reserves names prefixed with @samp{c_},
 @end itemize
 
 
-@node Feature Test Macros
+@node Feature Test Macros,  , Reserved Names, Using the Library
 @subsection Feature Test Macros
 
 @cindex feature test macros
@@ -605,7 +612,7 @@ are requested by the other macros.  For this reason, defining
 have an effect: it causes the BSD features to take priority over the
 conflicting POSIX features.
 
-@node Roadmap to the Manual, Error Reporting, Using the Library, Top
+@node Roadmap to the Manual,  , Using the Library, Introduction
 @section Roadmap to the Manual
 
 Here is an overview of the contents of the remaining chapters of
index 180571f..e8d3179 100644 (file)
@@ -1,4 +1,4 @@
-@node Input/Output Overview
+@node Input/Output Overview, Input/Output on Streams, Searching and Sorting, Top
 @chapter Input/Output Overview
 
 Most programs need to do either input (reading data) or output (writing
@@ -39,11 +39,11 @@ how input and output to terminal or other serial devices are processed.
 
 
 @menu
-* Input/Output Concepts::              Some basic information and terminology.
-* File Names::                         How to refer to a file.
+* Input/Output Concepts::       Some basic information and terminology.
+* File Names::                  How to refer to a file.
 @end menu
 
-@node Input/Output Concepts
+@node Input/Output Concepts, File Names,  , Input/Output Overview
 @section Input/Output Concepts
 
 Before you can read or write the contents of a file, you must establish
@@ -64,12 +64,12 @@ closed a stream or file descriptor, you cannot do any more input or
 output operations on it.
 
 @menu
-* Streams and File Descriptors::       The GNU Library provides two ways
+* Streams and File Descriptors::  The GNU Library provides two ways
                                         to access the contents of files.
-* File Position::
+* File Position::               
 @end menu
 
-@node Streams and File Descriptors
+@node Streams and File Descriptors, File Position,  , Input/Output Concepts
 @subsection Streams and File Descriptors
 
 When you want to do input or output to a file, you have a choice of two
@@ -123,7 +123,7 @@ all, or may only implement a subset of the GNU functions that operate on
 file descriptors.  Most of the file descriptor functions in the GNU
 library are included in the POSIX.1 standard, however.
 
-@node File Position
+@node File Position,  , Streams and File Descriptors, Input/Output Concepts
 @subsection File Position 
 
 One of the attributes of an open file is its @dfn{file position}
@@ -167,7 +167,7 @@ By contrast, if you open a descriptor and then duplicate it to get
 another descriptor, these two descriptors share the same file position:
 changing the file position of one descriptor will affect the other.
 
-@node File Names
+@node File Names,  , Input/Output Concepts, Input/Output Overview
 @section File Names
 
 In order to open a connection to a file, or to perform other operations
@@ -182,14 +182,14 @@ operating system works with them.
 @cindex file name
 
 @menu
-* Directories::                        Directories contain entries for files.
-* File Name Resolution::       A file name specifies how to look up a file.
-* File Name Errors::           Error conditions relating to file names.
-* Portability of File Names::
+* Directories::                 Directories contain entries for files.
+* File Name Resolution::        A file name specifies how to look up a file.
+* File Name Errors::            Error conditions relating to file names.
+* Portability of File Names::   
 @end menu
 
 
-@node Directories
+@node Directories, File Name Resolution,  , File Names
 @subsection Directories
 
 In order to understand the syntax of file names, you need to understand
@@ -224,7 +224,7 @@ just ``component'', where the context is obvious) in GNU documentation.
 You can find more detailed information about operations on directories
 in @ref{File System Interface}.
 
-@node File Name Resolution
+@node File Name Resolution, File Name Errors, Directories, File Names
 @subsection File Name Resolution
 
 A file name consists of file name components separated by slash
@@ -295,7 +295,7 @@ for file names---for example, files containing C source code usually
 have names suffixed with @samp{.c}---but there is nothing in the file
 system itself that enforces this kind of convention.
 
-@node File Name Errors
+@node File Name Errors, Portability of File Names, File Name Resolution, File Names
 @subsection File Name Errors
 
 @cindex file name syntax errors
@@ -328,7 +328,7 @@ exists, but it isn't a directory.
 @end table
 
 
-@node Portability of File Names
+@node Portability of File Names,  , File Name Errors, File Names
 @subsection Portability of File Names
 
 The rules for the syntax of file names discussed in @ref{File Names},
index 5ef93a9..19dae0a 100644 (file)
@@ -1,4 +1,4 @@
-@node Job Control
+@node Job Control, Users and Groups, Processes, Top
 @chapter Job Control
 
 @cindex process groups
@@ -19,16 +19,16 @@ Handling}) in order to understand this material presented in this
 chapter.
 
 @menu
-* Concepts of Job Control::    Introduction and overview.
-* Job Control is Optional::    Not all POSIX systems support job control.
-* Controlling Terminal::       How a process gets its controlling terminal.
-* Access to the Terminal::     How processes share the controlling terminal.
-* Orphaned Process Groups::    Jobs left after the user logs out.
-* Implementing a Shell::       What a shell must do to implement job control.
-* Functions for Job Control::  Functions to control process groups.
+* Concepts of Job Control ::    Concepts of Job Control
+* Job Control is Optional::     Not all POSIX systems support job control.
+* Controlling Terminal::        How a process gets its controlling terminal.
+* Access to the Terminal::      How processes share the controlling terminal.
+* Orphaned Process Groups::     Jobs left after the user logs out.
+* Implementing a Shell::        What a shell must do to implement job control.
+* Functions for Job Control::   Functions to control process groups.
 @end menu
 
-@node Concepts of Job Control 
+@node Concepts of Job Control , Job Control is Optional,  , Job Control
 @section Concepts of Job Control
 
 @cindex shell
@@ -100,7 +100,7 @@ jobs between foreground and background.
 @xref{Access to the Terminal}, for more information about I/O to the
 controlling terminal,
 
-@node Job Control is Optional
+@node Job Control is Optional, Controlling Terminal, Concepts of Job Control , Job Control
 @section Job Control is Optional
 @cindex job control is optional
 
@@ -121,7 +121,7 @@ control signal or examine or specify their actions report errors or do
 nothing.
 
 
-@node Controlling Terminal
+@node Controlling Terminal, Access to the Terminal, Job Control is Optional, Job Control
 @section Controlling Terminal of a Process
 
 One of the attributes of a process is its controlling terminal.  Child
@@ -142,7 +142,7 @@ calls @code{setsid} to become the leader of a new session.
 @xref{Process Group Functions}.
 
 
-@node Access to the Terminal
+@node Access to the Terminal, Orphaned Process Groups, Controlling Terminal, Job Control
 @section Access to the Controlling Terminal
 @cindex controlling terminal, access to
 
@@ -177,7 +177,7 @@ For more information about the primitive @code{read} and @code{write}
 functions, see @ref{I/O Primitives}.
 
 
-@node Orphaned Process Groups
+@node Orphaned Process Groups, Implementing a Shell, Access to the Terminal, Job Control
 @section Orphaned Process Groups
 @cindex orphaned process group
 
@@ -199,7 +199,7 @@ handler for it (@pxref{Signal Handling}), it can continue running as in
 the orphan process group even after its controlling process terminates;
 but it still cannot access the terminal any more.
 
-@node Implementing a Shell
+@node Implementing a Shell, Functions for Job Control, Orphaned Process Groups, Job Control
 @section Implementing a Job Control Shell
 
 This section describes what a shell must do to implement job control, by
@@ -239,18 +239,18 @@ have been stopped.
 @end iftex
 
 @menu
-* Data Structures::            Introduction to the sample shell.
-* Initializing the Shell::     What the shell must do to take
+* Data Structures::             Introduction to the sample shell.
+* Initializing the Shell::      What the shell must do to take
                                 responsibility for job control.
-* Launching Jobs::             Creating jobs to execute commands.
-* Foreground and Background::  Putting a job in foreground of background.
-* Stopped and Terminated Jobs::        Reporting job status.
-* Continuing Stopped Jobs::    How to continue a stopped job in
+* Launching Jobs::              Creating jobs to execute commands.
+* Foreground and Background::   Putting a job in foreground of background.
+* Stopped and Terminated Jobs::  Reporting job status.
+* Continuing Stopped Jobs::     How to continue a stopped job in
                                 the foreground or background.
-* The Missing Pieces::         Other parts of the shell.
+* The Missing Pieces::          Other parts of the shell.
 @end menu
 
-@node Data Structures
+@node Data Structures, Initializing the Shell,  , Implementing a Shell
 @subsection Data Structures for the Shell
 
 All of the program examples included in this chapter are part of
@@ -340,7 +340,7 @@ job_is_completed (job *j)
 @end example
 
 
-@node Initializing the Shell
+@node Initializing the Shell, Launching Jobs, Data Structures, Implementing a Shell
 @subsection Initializing the Shell
 @cindex job control, enabling
 @cindex subshell
@@ -437,7 +437,7 @@ init_shell ()
 @end example
 
 
-@node Launching Jobs
+@node Launching Jobs, Foreground and Background, Initializing the Shell, Implementing a Shell
 @subsection Launching Jobs
 @cindex launching jobs
 
@@ -628,7 +628,7 @@ launch_job (job *j, int foreground)
 @end example
 
 
-@node Foreground and Background
+@node Foreground and Background, Stopped and Terminated Jobs, Launching Jobs, Implementing a Shell
 @subsection Foreground and Background
 
 Now let's consider what actions must be taken by the shell when it
@@ -713,7 +713,7 @@ put_job_in_background (job *j, int cont)
 @end example
 
 
-@node Stopped and Terminated Jobs
+@node Stopped and Terminated Jobs, Continuing Stopped Jobs, Foreground and Background, Implementing a Shell
 @subsection Stopped and Terminated Jobs
 
 @cindex stopped jobs, detecting
@@ -870,7 +870,7 @@ do_job_notification (void)
 @end example
 
 
-@node Continuing Stopped Jobs
+@node Continuing Stopped Jobs, The Missing Pieces, Stopped and Terminated Jobs, Implementing a Shell
 @subsection Continuing Stopped Jobs
 
 @cindex stopped jobs, continuing
@@ -923,7 +923,7 @@ continue_job (job *j, int foreground)
 @end example
 
 
-@node The Missing Pieces
+@node The Missing Pieces,  , Continuing Stopped Jobs, Implementing a Shell
 @subsection The Missing Pieces
 
 The code extracts for the sample shell included in this chapter are only
@@ -963,7 +963,7 @@ managing jobs.  For example, it would be useful to have commands to list
 all active jobs or to send a signal (such as @code{SIGKILL}) to a job.
 
 
-@node Functions for Job Control
+@node Functions for Job Control,  , Implementing a Shell, Job Control
 @section Functions for Job Control
 @cindex process group functions
 @cindex job control functions
@@ -972,13 +972,13 @@ This section contains detailed descriptions of the functions relating
 to job control.
 
 @menu
-* Identifying the Terminal::   Determining the controlling terminal's name.
-* Process Group Functions::    Functions for manipulating process groups.
-* Terminal Access Functions::  Functions for controlling terminal access.
+* Identifying the Terminal::    Determining the controlling terminal's name.
+* Process Group Functions::     Functions for manipulating process groups.
+* Terminal Access Functions::   Functions for controlling terminal access.
 @end menu
 
 
-@node Identifying the Terminal
+@node Identifying the Terminal, Process Group Functions,  , Functions for Job Control
 @subsection Identifying the Controlling Terminal
 @cindex controlling terminal, determining
 
@@ -1016,7 +1016,7 @@ See also the @code{isatty} and @code{ttyname} functions, in
 @ref{Is It a Terminal}.
 
 
-@node Process Group Functions
+@node Process Group Functions, Terminal Access Functions, Identifying the Terminal, Functions for Job Control
 @subsection Process Group Functions
 
 Here are descriptions of the functions for manipulating process groups.
@@ -1114,7 +1114,7 @@ the same thing.
 @end deftypefun
 
 
-@node Terminal Access Functions
+@node Terminal Access Functions,  , Process Group Functions, Functions for Job Control
 @subsection Functions for Controlling Terminal Access
 
 These are the functions for reading or setting the foreground
index 3e9e658..d37f792 100644 (file)
@@ -1,4 +1,4 @@
-@node Low-Level Input/Output
+@node Low-Level Input/Output, File System Interface, Input/Output on Streams, Top
 @chapter Low-Level Input/Output
 
 This chapter describes functions for performing low-level input/output
@@ -10,31 +10,31 @@ for which there are no equivalents on streams.
 @c ??? Why use descriptor-level fns?
 
 @menu
-* Opening and Closing Files::          How to open and close file descriptors.
-* I/O Primitives::                     Reading and writing data.
-* File Position Primitive::             Setting a descriptor's file position.
-* Descriptors and Streams::             Converting descriptor to stream
+* Opening and Closing Files::   How to open and close file descriptors.
+* I/O Primitives::              Reading and writing data.
+* File Position Primitive::     Setting a descriptor's file position.
+* Descriptors and Streams::     Converting descriptor to stream
                                          or vice-versa.
-* Stream/Descriptor Precautions::       Precautions needed if you use both
+* Stream/Descriptor Precautions::  Precautions needed if you use both
                                          descriptors and streams.
-* Waiting for I/O::                    How to check for input or output
+* Waiting for I/O::             How to check for input or output
                                         on multiple file descriptors.
-* Control Operations::                 Various other operations on file
+* Control Operations::          Various other operations on file
                                         descriptors.
-* Duplicating Descriptors::            Fcntl commands for duplicating file
+* Duplicating Descriptors::     Fcntl commands for duplicating file
                                         descriptors.
-* Descriptor Flags::                   Fcntl commands for manipulating flags
+* Descriptor Flags::            Fcntl commands for manipulating flags
                                         associated with file descriptors.
-* File Status Flags::                  Fcntl commands for manipulating flags
+* File Status Flags::           Fcntl commands for manipulating flags
                                         associated with open files.
-* File Locks::                         Fcntl commands for implementing file
+* File Locks::                  Fcntl commands for implementing file
                                         locking.
-* Interrupt Input::                    Getting an asynchronous signal when
+* Interrupt Input::             Getting an asynchronous signal when
                                          input arrives.
 @end menu
 
 
-@node Opening and Closing Files
+@node Opening and Closing Files, I/O Primitives,  , Low-Level Input/Output
 @section Opening and Closing Files
 
 @cindex opening a file descriptor
@@ -235,7 +235,7 @@ Closing Streams}) instead of trying to close its underlying file
 descriptor with @code{close}.  This flushes any buffered output and
 updates the stream object to indicate that it is closed.
 
-@node I/O Primitives
+@node I/O Primitives, File Position Primitive, Opening and Closing Files, Low-Level Input/Output
 @section Input and Output Primitives
 
 This section describes the functions for performing primitive input and
@@ -382,7 +382,7 @@ functions that write to streams, such as @code{fputc}.
 about writing to a pipe and the interaction with the @code{O_NONBLOCK} 
 flag and the @code{PIPE_BUF} parameter.  Is this really important?
 
-@node File Position Primitive
+@node File Position Primitive, Descriptors and Streams, I/O Primitives, Low-Level Input/Output
 @section Setting the File Position of a Descriptor
 
 Just as you can set the file position of a stream with @code{fseek}, you
@@ -506,7 +506,7 @@ This is an arithmetic data type used to represent file sizes.
 In the GNU system, this is equivalent to @code{fpos_t} or @code{long int}.
 @end deftp
 
-@node Descriptors and Streams
+@node Descriptors and Streams, Stream/Descriptor Precautions, File Position Primitive, Low-Level Input/Output
 @section Descriptors and Streams
 @cindex streams, and file descriptors
 @cindex converting file descriptor to stream
@@ -585,7 +585,7 @@ standard error output.
 @end table
 @cindex standard error file descriptor
 
-@node Stream/Descriptor Precautions
+@node Stream/Descriptor Precautions, Waiting for I/O, Descriptors and Streams, Low-Level Input/Output
 @section Precautions for Mixing Streams and Descriptors
 @cindex channels
 @cindex streams and descriptors
@@ -645,7 +645,7 @@ construct a stream for the pipe using @code{fdopen}, but you should do
 all subsequent I/O operations on the stream and never on the file
 descriptor.
 
-@node Waiting for I/O
+@node Waiting for I/O, Control Operations, Stream/Descriptor Precautions, Low-Level Input/Output
 @section Waiting for Input or Output
 @cindex waiting for input or output
 @cindex multiplexing input
@@ -843,7 +843,7 @@ There is another example showing the use of @code{select} to multiplex
 input from multiple sockets in @ref{Byte Stream Socket Example}.
 
 
-@node Control Operations
+@node Control Operations, Duplicating Descriptors, Waiting for I/O, Low-Level Input/Output
 @section Control Operations on Files
 
 @cindex control operations on files
@@ -908,7 +908,7 @@ Set process or process group ID to receive @code{SIGIO} signals.
 @end deftypefun
 
 
-@node Duplicating Descriptors
+@node Duplicating Descriptors, Descriptor Flags, Control Operations, Low-Level Input/Output
 @section Duplicating Descriptors
 
 @cindex duplicating file descriptors
@@ -1025,7 +1025,7 @@ There is also a more detailed example showing how to implement redirection
 in the context of a pipeline of processes in @ref{Launching Jobs}.
 
 
-@node Descriptor Flags
+@node Descriptor Flags, File Status Flags, Duplicating Descriptors, Low-Level Input/Output
 @section File Descriptor Flags
 @cindex file descriptor flags
 
@@ -1124,7 +1124,7 @@ set_cloexec_flag (int desc, int value)
 @}
 @end example
 
-@node File Status Flags
+@node File Status Flags, File Locks, Descriptor Flags, Low-Level Input/Output
 @section File Status Flags
 @cindex file status flags
 
@@ -1275,7 +1275,7 @@ set_nonblock_flag (int desc, int value)
 @}
 @end example
 
-@node File Locks
+@node File Locks, Interrupt Input, File Status Flags, Low-Level Input/Output
 @section File Locks
 
 @cindex file locks
@@ -1515,7 +1515,7 @@ controlling access to a file.  There is still potential for access to
 the file by programs that don't use the lock protocol.
 @end table
 
-@node Interrupt Input
+@node Interrupt Input,  , File Locks, Low-Level Input/Output
 @section Interrupt-Driven Input
 
 @cindex interrupt-driven input
index e454988..9177a40 100644 (file)
@@ -1,4 +1,4 @@
-@node Locales
+@node Locales, Searching and Sorting, Extended Characters, Top
 @chapter Locales and Internationalization
 
 Different countries and cultures have varying conventions for how to
@@ -20,15 +20,15 @@ Provided the programs are written to obey the choice of locale, they
 will follow the conventions preferred by the user.
 
 @menu
-* Effects of Locale::     Actions affected by the choice of locale.
-* Choosing Locale::       How the user specifies a locale.
-* Locale Categories::     Different purposes for which you can select a locale.
-* Setting the Locale::    How a program specifies the locale library functions.
-* Standard Locales::      Locale names available on all systems.
-* Numeric Formatting::    How to format numbers according to the chosen locale.
+* Effects of Locale::           Actions affected by the choice of locale.
+* Choosing Locale::             How the user specifies a locale.
+* Locale Categories::           Different purposes for which you can select a locale.
+* Setting the Locale::          How a program specifies the locale library functions.
+* Standard Locales::            Locale names available on all systems.
+* Numeric Formatting::          How to format numbers according to the chosen locale.
 @end menu
 
-@node Effects of Locale
+@node Effects of Locale, Choosing Locale,  , Locales
 @section What Effects a Locale Has
 
 Each locale specifies conventions for several purposes, including the
@@ -82,7 +82,7 @@ This chapter discusses the mechanism by which you can modify the current
 locale.  The effects of the current locale on specific library functions
 are discussed in more detail in the descriptions of those functions.
 
-@node Choosing Locale
+@node Choosing Locale, Locale Categories, Effects of Locale, Locales
 @section Choosing a Locale
 
 The simplest way for the user to choose a locale is to set the
@@ -111,7 +111,7 @@ like all locales, would include conventions for all of the purposes to
 which locales apply.  However, the user can choose to use each locale
 for a particular subset of those purposes.
 
-@node Locale Categories
+@node Locale Categories, Setting the Locale, Choosing Locale, Locales
 @section Categories of Activities that Locales Affect
 @cindex categories for locales
 @cindex locale categories
@@ -185,7 +185,7 @@ If this environment variable is defined, its value specifies the locale
 to use for all purposes except as overridden by the variables below.
 @end table
 
-@node Setting the Locale
+@node Setting the Locale, Standard Locales, Locale Categories, Locales
 @section How Programs Set the Locale
 
 A C program inherits its locale environment variables when it starts up.
@@ -290,7 +290,7 @@ with_other_locale (char *new_locale,
 locale categories.  For portability, assume that any symbol beginning
 with @samp{LC_} might be defined in @file{locale.h}.
 
-@node Standard Locales
+@node Standard Locales, Numeric Formatting, Setting the Locale, Locales
 @section Standard Locales
 
 The only locale names you can count on finding on all operating systems
@@ -322,7 +322,7 @@ specifies with the environment, rather than trying to specify some
 non-standard locale explicitly by name.  Remember, different machines
 might have different sets of locales installed.
 
-@node Numeric Formatting
+@node Numeric Formatting,  , Standard Locales, Locales
 @section Numeric Formatting
 
 When you want to format a number or a currency amount using the
@@ -357,12 +357,12 @@ and the value is @code{CHAR_MAX}, it means that the current locale has
 no value for that parameter.
 
 @menu
-* General Numeric::
-* Currency Symbol::
-* Sign of Money Amount::
+* General Numeric::             
+* Currency Symbol::             
+* Sign of Money Amount::        
 @end menu
 
-@node General Numeric
+@node General Numeric, Currency Symbol,  , Numeric Formatting
 @subsection Generic Numeric Formatting Parameters
 
 These are the standard members of @code{struct lconv}; there may be
@@ -429,7 +429,7 @@ fractional digits.  (This locale also specifies the empty string for
 confusing!)
 @end table
 
-@node Currency Symbol
+@node Currency Symbol, Sign of Money Amount, General Numeric, Numeric Formatting
 @subsection Printing the Currency Symbol
 @cindex currency symbols
 
@@ -508,7 +508,7 @@ These members apply only to @code{currency_symbol}.  When you use
 @code{int_curr_symbol} itself contains the appropriate separator.
 @end table
 
-@node Sign of Money Amount
+@node Sign of Money Amount,  , Currency Symbol, Numeric Formatting
 @subsection Printing the Sign of an Amount of Money
 
 These members of the @code{struct lconv} structure specify how to print
index 30f262b..a53c001 100644 (file)
@@ -2,24 +2,24 @@
 @c Makeinfo ignores it when processing the file from the include.
 @setfilename INSTALL
 
-@node Maintenance
+@node Maintenance, Copying, Summary of Library Facilities, Top
 @appendix Library Maintenance
 
 @menu
-* Installation::                        How to configure, compile and install
+* Installation::                How to configure, compile and install
                                         the GNU C library.
-* Reporting Bugs::                     How to report bugs (if you want to
+* Reporting Bugs::              How to report bugs (if you want to
                                          get them fixed) and other troubles
                                          you may have with the GNU C library.
-* Porting::                             How to port the GNU C library to
+* Porting::                     How to port the GNU C library to
                                          a new machine or operating system.
-* Compatibility with Traditional C::    Using the GNU C library with non-ANSI
+* Compatibility with Traditional C::  Using the GNU C library with non-ANSI
                                          C compilers.
-* Contributors to the GNU C Library::  Contributors to the GNU C Library.
+* Contributors to the GNU C Library::  Contributors to the GNU C Library.
 @end menu
 
 
-@node Installation
+@node Installation, Reporting Bugs,  , Maintenance
 @appendixsec How to Install the GNU C Library
 @cindex installing the library
 
@@ -80,7 +80,7 @@ setting the installation directories in @file{Makeconfig} (or
 @file{@var{machine}/Makeconfig}).  This will build things if necessary,
 before installing them.@refill
 
-@node Reporting Bugs
+@node Reporting Bugs, Porting, Installation, Maintenance
 @appendixsec Reporting Bugs
 @cindex reporting bugs
 
@@ -120,7 +120,7 @@ other problems with installation, use, or the documentation, please
 report those as well.
 
 
-@node Porting
+@node Porting, Compatibility with Traditional C, Reporting Bugs, Maintenance
 @appendixsec Porting the GNU C Library
 
 The GNU C library is written to be easily portable to a variety of
@@ -337,7 +337,7 @@ organized.
                                  Unix-like system.
 @end menu
 
-@node Hierarchy Conventions
+@node Hierarchy Conventions, Porting to Unix,  , Porting
 @appendixsubsec The Layout of the @file{sysdeps} Directory Hierarchy
 
 Different machine architectures are generally at the top level of the
@@ -387,7 +387,7 @@ This is the directory for things based on the Mach microkernel from CMU
 the @file{sysdeps} hierarchy, parallel to @file{unix} and @file{mach}.
 @end table
 
-@node Porting to Unix
+@node Porting to Unix,  , Hierarchy Conventions, Porting
 @appendixsubsec Porting the GNU C Library to Unix Systems
 
 Most Unix systems are fundamentally very similar.  There are variations
@@ -419,7 +419,7 @@ kept; they should not affect the source tree itself.  The files
 generated are: @file{ioctls.h}, @file{errnos.h}, @file{sys/param.h},
 and @file{errlist.c} (for the @file{stdio} section of the library).
 
-@node Compatibility with Traditional C
+@node Compatibility with Traditional C, Contributors to the GNU C Library, Porting, Maintenance
 @appendixsec Compatibility with Traditional C
 
 Although the GNU C library implements the ANSI C library facilities,
@@ -444,7 +444,7 @@ implementations.  This means you may need to make changes to your
 program in order to get it to compile.
 
 
-@node Contributors to the GNU C Library
+@node Contributors to the GNU C Library,  , Compatibility with Traditional C, Maintenance
 @appendixsec Contributors to the GNU C Library
 
 The GNU C library was written almost entirely by Roland McGrath.
index bb79e26..eeb7e6d 100644 (file)
@@ -1,4 +1,4 @@
-@node Mathematics
+@node Mathematics, Arithmetic, Consistency Checking, Top
 @chapter Mathematics
 
 This chapter contains information about functions for performing
@@ -19,19 +19,19 @@ In the meantime, you should avoid using these names yourself.
 @strong{Incomplete:}  This chapter doesn't have any examples.
 
 @menu
-* Domain and Range Errors::            How overflow conditions and the like
+* Domain and Range Errors::     How overflow conditions and the like
                                         are reported.
-* Not a Number::                       Making NANs and testing for NANs.
-* Trigonometric Functions::            Sine, cosine, and tangent.
-* Inverse Trigonometric Functions::    Arc sine, arc cosine, and arc tangent.
-* Exponentiation and Logarithms::      Also includes square root.
-* Hyperbolic Functions::               Hyperbolic sine and friends.
-* Pseudo-Random Numbers::              Functions for generating pseudo-random
+* Not a Number::                Making NANs and testing for NANs.
+* Trigonometric Functions::     Sine, cosine, and tangent.
+* Inverse Trigonometric Functions::  Arc sine, arc cosine, and arc tangent.
+* Exponentiation and Logarithms::  Also includes square root.
+* Hyperbolic Functions::        Hyperbolic sine and friends.
+* Pseudo-Random Numbers::       Functions for generating pseudo-random
                                         numbers.
-* Absolute Value::                     Absolute value functions.
+* Absolute Value::              Absolute value functions.
 @end menu
 
-@node Domain and Range Errors
+@node Domain and Range Errors, Not a Number,  , Mathematics
 @section Domain and Range Errors
 
 @cindex domain error
@@ -88,7 +88,7 @@ For more information about floating-point representations and limits,
 @xref{Floating-Point Limits}.  In particular, the macro @code{DBL_MAX}
 might be more appropriate than @code{HUGE_VAL} for many uses.
 
-@node Not a Number
+@node Not a Number, Trigonometric Functions, Domain and Range Errors, Mathematics
 @section ``Not a Number'' Values
 @cindex NAN
 @cindex not a number
@@ -117,7 +117,7 @@ a number'' values---that is to say, on all machines that support IEEE
 floating point.
 @end deftypevr
 
-@node Trigonometric Functions
+@node Trigonometric Functions, Inverse Trigonometric Functions, Not a Number, Mathematics
 @section Trigonometric Functions
 @cindex trigonometric functions
 
@@ -170,7 +170,7 @@ negative @code{HUGE_VAL}.
 @end deftypefun
 
 
-@node Inverse Trigonometric Functions
+@node Inverse Trigonometric Functions, Exponentiation and Logarithms, Trigonometric Functions, Mathematics
 @section Inverse Trigonometric Functions
 @cindex inverse trigonmetric functions
 
@@ -249,7 +249,7 @@ function is not defined in this case.
 @end deftypefun
 
 
-@node Exponentiation and Logarithms
+@node Exponentiation and Logarithms, Hyperbolic Functions, Inverse Trigonometric Functions, Mathematics
 @section Exponentiation and Logarithms
 @cindex exponentiation functions
 @cindex power functions
@@ -371,7 +371,7 @@ It is computed in a way that is accurate even if the value of @var{x} is
 near zero.
 @end deftypefun
 
-@node Hyperbolic Functions
+@node Hyperbolic Functions, Pseudo-Random Numbers, Exponentiation and Logarithms, Mathematics
 @section Hyperbolic Functions
 @cindex hyperbolic functions
 
@@ -441,7 +441,7 @@ value whose hyperbolic tangent is @var{x}.  If the absolute value of
 @code{HUGE_VAL}.
 @end deftypefun
 
-@node Pseudo-Random Numbers
+@node Pseudo-Random Numbers, Absolute Value, Hyperbolic Functions, Mathematics
 @section Pseudo-Random Numbers
 
 This section describes the GNU facilities for generating a series of
@@ -475,11 +475,11 @@ libraries may produce different sequences of values for the same seed.
 
 
 @menu
-* ANSI C Random Number Functions::     @code{rand} and friends.
-* BSD Random Number Functions::                @code{random} and friends.
+* ANSI C Random Number Functions::  @code{rand} and friends.
+* BSD Random Number Functions::  @code{random} and friends.
 @end menu
 
-@node ANSI C Random Number Functions
+@node ANSI C Random Number Functions, BSD Random Number Functions,  , Pseudo-Random Numbers
 @subsection ANSI C Random Number Functions
 
 This section describes the random number functions that are part of
@@ -518,7 +518,7 @@ To produce truly random numbers (not just pseudo-random), do @code{srand
 (time (0))}.
 @end deftypefun
 
-@node BSD Random Number Functions
+@node BSD Random Number Functions,  , ANSI C Random Number Functions, Pseudo-Random Numbers
 @subsection BSD Random Number Functions
 
 This section describes a set of random number generation functions
@@ -580,7 +580,7 @@ You can use thise value later as an argument to @code{setstate} to
 restore that state.
 @end deftypefun
 
-@node Absolute Value
+@node Absolute Value,  , Pseudo-Random Numbers, Mathematics
 @section Absolute Value
 @cindex absolute value functions
 
index 77f1d13..5d03ddf 100644 (file)
@@ -1,4 +1,4 @@
-@node Extended Characters
+@node Extended Characters, Locales, String and Array Utilities, Top
 @chapter Extended Characters
 
 A number of languages use character sets that are larger than the range
@@ -17,20 +17,20 @@ This choice of locale selects which multibyte code is used, and also
 controls the meanings and characteristics of wide character codes.
 
 @menu
-* Extended Char Intro::                 Multibyte codes versus wide characters.
-* Locales and Extended Chars::   The locale selects the character codes.
-* Multibyte Char Intro::         How multibyte codes are represented.
-* Wide Char Intro::              How wide characters are represented.
-* Wide String Conversion::      Converting wide strings to multibyte code
+* Extended Char Intro::         Multibyte codes versus wide characters.
+* Locales and Extended Chars::  The locale selects the character codes.
+* Multibyte Char Intro::        How multibyte codes are represented.
+* Wide Char Intro::             How wide characters are represented.
+* Wide String Conversion::      Converting wide strings to multibyte code
                                    and vice versa.
-* Length of Char::              how many bytes make up one multibyte char.
-* Converting One Char::                 Converting a string character by character.
-* Example of Conversion::        Example showing why converting 
+* Length of Char::              how many bytes make up one multibyte char.
+* Converting One Char::         Converting a string character by character.
+* Example of Conversion::       Example showing why converting 
                                   one character at a time may be useful.
-* Shift State::                  Multibyte codes with "shift characters".
+* Shift State::                 Multibyte codes with "shift characters".
 @end menu
 
-@node Extended Char Intro
+@node Extended Char Intro, Locales and Extended Chars,  , Extended Characters
 @section Introduction to Extended Characters
 
 You can represent extended characters in either of two ways:
@@ -79,7 +79,7 @@ as multibyte characters and as wide characters.  The library includes
 functions you can use to convert between the two representations,
 functions described in this chapter.
 
-@node Locales and Extended Chars
+@node Locales and Extended Chars, Multibyte Char Intro, Extended Char Intro, Extended Characters
 @section Locales and Extended Characters
 
 A computer system can support more than one multibyte character code,
@@ -98,7 +98,7 @@ shift state maintained by these functions can become confused, so it's
 not a good idea to change the locale while you are in the middle of
 processing a string.
 
-@node Multibyte Char Intro
+@node Multibyte Char Intro, Wide Char Intro, Locales and Extended Chars, Extended Characters
 @section Multibyte Characters
 @cindex multibyte characters
 
@@ -277,7 +277,7 @@ functions that operate on strings deal with multibyte strings correctly.
 For example, @code{printf} and friends do, but what about multibyte
 strings as file names, etc?
 
-@node Wide Char Intro
+@node Wide Char Intro, Wide String Conversion, Multibyte Char Intro, Extended Characters
 @section Wide Character Introduction
 
 @dfn{Wide characters} are much simpler than multibyte characters.  They
@@ -325,7 +325,7 @@ In this chapter, the term @dfn{code} is used to refer to a single
 extended character object to emphasize the distinction from the
 @code{char} data type.
 
-@node Wide String Conversion
+@node Wide String Conversion, Length of Char, Wide Char Intro, Extended Characters
 @section Conversion of Extended Strings
 @cindex extended strings, converting representations
 @cindex converting extended strings
@@ -403,7 +403,7 @@ This number does not include the terminating null character, which is
 present if the number is less than @var{size}.
 @end deftypefun
 
-@node Length of Char
+@node Length of Char, Converting One Char, Wide String Conversion, Extended Characters
 @section Multibyte Character Length
 @cindex multibyte character, length of
 @cindex length of multibyte character
@@ -442,7 +442,7 @@ the multibyte character code in use actually has a shift state.
 The function @code{mblen} is declared in @file{stdlib.h}.
 @end deftypefun
 
-@node Converting One Char
+@node Converting One Char, Example of Conversion, Length of Char, Extended Characters
 @section Conversion of Extended Characters One by One
 @cindex extended characters, converting
 @cindex converting extended characters
@@ -520,7 +520,7 @@ stored shift state @emph{as well as} storing the multibyte character
 @code{0} and returning @code{0}.
 @end deftypefun
 
-@node Example of Conversion
+@node Example of Conversion, Shift State, Converting One Char, Extended Characters
 @section Example of Character-by-Character Conversion
 
 Here is an example that reads multibyte character text from descriptor
@@ -603,7 +603,7 @@ file_mbstowcs (int input, int output)
 @}
 @end example
 
-@node Shift State
+@node Shift State,  , Example of Conversion, Extended Characters
 @section Multibyte Codes Using Shift Sequences
 
 In some multibyte character codes, the @emph{meaning} of any particular
index 5ef7eec..a1d47c2 100644 (file)
@@ -1,4 +1,4 @@
-@node Memory Allocation
+@node Memory Allocation, Character Handling, Variable Argument Facilities, Top
 @chapter Memory Allocation
 @cindex memory allocation
 @cindex storage allocation
@@ -24,19 +24,19 @@ will be freed automatically.  @xref{Variable Size Automatic}.
 @end iftex
 
 @menu
-* Memory Concepts::            An introduction to concepts and terminology.
-* Dynamic Allocation and C::   How to get different kinds of allocation in C.
-* Unconstrained Allocation::   The @code{malloc} facility allows fully general
+* Memory Concepts::             An introduction to concepts and terminology.
+* Dynamic Allocation and C::    How to get different kinds of allocation in C.
+* Unconstrained Allocation::    The @code{malloc} facility allows fully general
                                 dynamic allocation.
-* Obstacks::                   Obstacks are less general than malloc
+* Obstacks::                    Obstacks are less general than malloc
                                 but more efficient and convenient.
-* Variable Size Automatic::    Allocation of variable-sized blocks
+* Variable Size Automatic::     Allocation of variable-sized blocks
                                 of automatic storage that are freed when the
                                 calling function returns.
-* Relocating Allocator::
+* Relocating Allocator::        
 @end menu
 
-@node Memory Concepts
+@node Memory Concepts, Dynamic Allocation and C,  , Memory Allocation
 @section Dynamic Memory Allocation Concepts
 @cindex dynamic allocation
 @cindex static allocation
@@ -62,7 +62,7 @@ when you want to allocate space, and specify the size with an argument.  If
 you want to free the space, you do so by calling another function or macro.
 You can do these things whenever you want, as often as you want.
 
-@node Dynamic Allocation and C
+@node Dynamic Allocation and C, Unconstrained Allocation, Memory Concepts, Memory Allocation
 @section Dynamic Allocation and C
 
 The C language supports two kinds of memory allocation through the variables
@@ -111,7 +111,7 @@ address of the space.  Then you can use the operators @samp{*} and
 @}
 @end example
 
-@node Unconstrained Allocation
+@node Unconstrained Allocation, Obstacks, Dynamic Allocation and C, Memory Allocation
 @section Unconstrained Allocation
 @cindex unconstrained storage allocation
 @cindex @code{malloc} function
@@ -123,27 +123,27 @@ them bigger or smaller at any time, and free the blocks individually at
 any time (or never).
 
 @menu
-* Basic Allocation::           Simple use of @code{malloc}.
+* Basic Allocation::            Simple use of @code{malloc}.
 * Malloc Examples::             Examples of @code{malloc}.  @code{xmalloc}.
-* Freeing after Malloc::       Use @code{free} to free a block you
+* Freeing after Malloc::        Use @code{free} to free a block you
                                 got with @code{malloc}.
-* Changing Block Size::                Use @code{realloc} to make a block
+* Changing Block Size::         Use @code{realloc} to make a block
                                 bigger or smaller.
-* Allocating Cleared Space::   Use @code{calloc} to allocate a
+* Allocating Cleared Space::    Use @code{calloc} to allocate a
                                 block and clear it.
 * Efficiency and Malloc::       Efficiency considerations in use of
                                 these functions.
-* Aligned Memory Blocks::      Allocating specially aligned memory:
+* Aligned Memory Blocks::       Allocating specially aligned memory:
                                 @code{memalign} and @code{valloc}.
-* Heap Consistency Checking::  Automatic checking for errors.
-* Hooks for Malloc::           You can use these hooks for debugging
+* Heap Consistency Checking::   Automatic checking for errors.
+* Hooks for Malloc::            You can use these hooks for debugging
                                 programs that use @code{malloc}.
-* Statistics of Malloc::       Getting information about how much
+* Statistics of Malloc::        Getting information about how much
                                 memory your program is using.
-* Summary of Malloc::          Summary of @code{malloc} and related functions.
+* Summary of Malloc::           Summary of @code{malloc} and related functions.
 @end menu
 
-@node Basic Allocation
+@node Basic Allocation, Malloc Examples,  , Unconstrained Allocation
 @subsection Basic Storage Allocation
 @cindex allocation of memory with @code{malloc}
 
@@ -193,7 +193,7 @@ ptr = (char *) malloc (length + 1);
 @noindent
 @xref{Representation of Strings}, for more information about this.
 
-@node Malloc Examples
+@node Malloc Examples, Freeing after Malloc, Basic Allocation, Unconstrained Allocation
 @subsection Examples of @code{malloc}
 
 If no more space is available, @code{malloc} returns a null pointer.
@@ -244,7 +244,7 @@ contents of another block.  If you have already allocated a block and
 discover you want it to be bigger, use @code{realloc} (@pxref{Changing
 Block Size}).
 
-@node Freeing after Malloc
+@node Freeing after Malloc, Changing Block Size, Malloc Examples, Unconstrained Allocation
 @subsection Freeing Memory Allocated with @code{malloc}
 @cindex freeing memory allocated with @code{malloc}
 @cindex heap, freeing memory from
@@ -302,7 +302,7 @@ internally by @code{malloc}.
 Therefore, there is no point in freeing blocks at the end of a program,
 when you are not going to allocate any more.
 
-@node Changing Block Size
+@node Changing Block Size, Allocating Cleared Space, Freeing after Malloc, Unconstrained Allocation
 @subsection Changing the Size of a Block
 @cindex changing the size of a block (@code{malloc})
 
@@ -359,7 +359,7 @@ can fail if no other space is available.
 If the new size you specify is the same as the old size, @code{realloc}
 is guaranteed to change nothing and return the same address that you gave.
 
-@node Allocating Cleared Space
+@node Allocating Cleared Space, Efficiency and Malloc, Changing Block Size, Unconstrained Allocation
 @subsection Allocating Cleared Space
 
 The function @code{calloc} allocates memory and clears it to zero.  It
@@ -392,7 +392,7 @@ We rarely use @code{calloc} today, because it is equivalent to such a
 simple combination of other features that are more often used.  It is a
 historical holdover that is not quite obsolete.
 
-@node Efficiency and Malloc
+@node Efficiency and Malloc, Aligned Memory Blocks, Allocating Cleared Space, Unconstrained Allocation
 @subsection Efficiency Considerations for @code{malloc}
 @cindex efficiency and @code{malloc}
 
@@ -410,7 +410,7 @@ of 32 bytes can never be split into two blocks of 16 bytes.  Thus, you
 can make your program use memory more efficiently by using blocks of
 the same size for many different purposes.
 
-@node Aligned Memory Blocks
+@node Aligned Memory Blocks, Heap Consistency Checking, Efficiency and Malloc, Unconstrained Allocation
 @subsection Allocating Aligned Memory Blocks
 
 @cindex page boundary
@@ -443,7 +443,7 @@ to determine the page size explicitly (something which cannot be done
 portably).
 @end deftypefun
 
-@node Heap Consistency Checking
+@node Heap Consistency Checking, Hooks for Malloc, Aligned Memory Blocks, Unconstrained Allocation
 @subsection Heap Consistency Checking
 
 @cindex heap consistency checking
@@ -470,7 +470,7 @@ Since other library functions (such as the standard I/O functions) may
 call @code{malloc}, you should do @code{mcheck} before anything else in
 your program.  To do this automatically, link with @samp{-lmcheck}.
 
-@node Hooks for Malloc
+@node Hooks for Malloc, Statistics of Malloc, Heap Consistency Checking, Unconstrained Allocation
 @subsection Storage Allocation Hooks
 @cindex allocation hooks, for @code{malloc}
 
@@ -552,7 +552,7 @@ main ()
 The @code{mcheck} function (@pxref{Heap Consistency Checking}) works by
 installing such hooks.
 
-@node Statistics of Malloc
+@node Statistics of Malloc, Summary of Malloc, Hooks for Malloc, Unconstrained Allocation
 @subsection Statistics for Storage Allocation with @code{malloc}
 
 @cindex allocation statistics
@@ -597,7 +597,7 @@ This function returns information about the current dynamic memory usage
 in a structure of type @code{struct mstats}.
 @end deftypefun
 
-@node Summary of Malloc
+@node Summary of Malloc,  , Statistics of Malloc, Unconstrained Allocation
 @subsection Summary of @code{malloc}-Related Functions
 
 Here is a summary of the functions that work with @code{malloc}:
@@ -646,7 +646,7 @@ Read information about the current dynamic memory usage.  @xref{Statistics
 of Malloc}.
 @end table
 
-@node Obstacks
+@node Obstacks, Variable Size Automatic, Unconstrained Allocation, Memory Allocation
 @section Obstacks
 @cindex obstacks
 
@@ -666,29 +666,29 @@ the objects are usually small.  And the only space overhead per object is
 the padding needed to start each object on a suitable boundary.
 
 @menu
-* Representation of Obstacks::         How to declare an obstack in your
+* Representation of Obstacks::  How to declare an obstack in your
                                         program.
-* Preparing to Use Obstacks::          Preparations needed before you can
+* Preparing to Use Obstacks::   Preparations needed before you can
                                         use obstacks.
-* Allocation in an Obstack::           Allocating objects in an obstack.
-* Freeing Objects in an Obstack::      Freeing objects in an obstack.
-* Obstack Functions and Macros::       The obstack functions are both
+* Allocation in an Obstack::    Allocating objects in an obstack.
+* Freeing Objects in an Obstack::  Freeing objects in an obstack.
+* Obstack Functions and Macros::  The obstack functions are both
                                         functions and macros.
-* Growing Objects::                    Making an object bigger by stages.
-* Extra Fast Growing Objects::         Extra-high-efficiency (though more
+* Growing Objects::             Making an object bigger by stages.
+* Extra Fast Growing Objects::  Extra-high-efficiency (though more
                                         complicated) growing.
-* Status of an Obstack::               Inquiries about the status of an
+* Status of an Obstack::        Inquiries about the status of an
                                         obstack.
-* Alignment of Data in Obstacks::      Controlling alignment of objects
+* Alignment of Data in Obstacks::  Controlling alignment of objects
                                         in obstacks.
-* Obstack Chunks::                     How obstacks obtain and release chunks.
+* Obstack Chunks::              How obstacks obtain and release chunks.
                                         Efficiency considerations.
-* Obstacks and Signal Handling::       Don't try to use obstack functions
+* Obstacks and Signal Handling::  Don't try to use obstack functions
                                         in a signal handler.
-* Summary of Obstacks::
+* Summary of Obstacks::         
 @end menu
 
-@node Representation of Obstacks
+@node Representation of Obstacks, Preparing to Use Obstacks,  , Obstacks
 @subsection Representation of Obstacks
 
 The utilities for manipulating obstacks are declared in the header
@@ -729,7 +729,7 @@ get a chunk.  Usually you supply a function which uses @code{malloc}
 directly or indirectly.  You must also supply a function to free a chunk.
 These matters are described in the following section.
 
-@node Preparing to Use Obstacks
+@node Preparing to Use Obstacks, Allocation in an Obstack, Representation of Obstacks, Obstacks
 @subsection Preparing to Use Obstacks
 
 Each source file in which you plan to use the obstack functions
@@ -794,7 +794,7 @@ struct obstack *myobstack_ptr
 obstack_init (myobstack_ptr);
 @end example
 
-@node Allocation in an Obstack
+@node Allocation in an Obstack, Freeing Objects in an Obstack, Preparing to Use Obstacks, Obstacks
 @subsection Allocation in an Obstack
 @cindex allocation (obstacks)
 
@@ -860,7 +860,7 @@ obstack_savestring (char *addr, size_t size)
 Contrast this with the previous example of @code{savestring} using
 @code{malloc} (@pxref{Basic Allocation}).
 
-@node Freeing Objects in an Obstack
+@node Freeing Objects in an Obstack, Obstack Functions and Macros, Allocation in an Obstack, Obstacks
 @subsection Freeing Objects in an Obstack
 @cindex freeing (obstacks)
 
@@ -892,7 +892,7 @@ the objects in a chunk become free, the obstack library automatically
 frees the chunk (@pxref{Preparing to Use Obstacks}).  Then other
 obstacks, or non-obstack allocation, can reuse the space of the chunk.
 
-@node Obstack Functions and Macros
+@node Obstack Functions and Macros, Growing Objects, Freeing Objects in an Obstack, Obstacks
 @subsection Obstack Functions and Macros
 @cindex macros
 
@@ -949,7 +949,7 @@ If you use the GNU C compiler, this precaution is not necessary, because
 various language extensions in GNU C permit defining the macros so as to
 compute each argument only once.
 
-@node Growing Objects
+@node Growing Objects, Extra Fast Growing Objects, Obstack Functions and Macros, Obstacks
 @subsection Growing Objects
 @cindex growing objects (in obstacks)
 @cindex changing the size of a block (obstacks)
@@ -1044,7 +1044,7 @@ You can use @code{obstack_blank} with a negative size argument to make
 the current object smaller.  Just don't try to shrink it beyond zero
 length---there's no telling what would happen if you do that.
 
-@node Extra Fast Growing Objects
+@node Extra Fast Growing Objects, Status of an Obstack, Growing Objects, Obstacks
 @subsection Extra Fast Growing Objects
 @cindex efficiency and obstacks
 
@@ -1125,7 +1125,7 @@ add_string (struct obstack *obstack, char *ptr, size_t len)
 @}
 @end example
 
-@node Status of an Obstack
+@node Status of an Obstack, Alignment of Data in Obstacks, Extra Fast Growing Objects, Obstacks
 @subsection Status of an Obstack
 @cindex obstack status
 @cindex status of obstack
@@ -1167,7 +1167,7 @@ obstack_next_free (@var{obstack_ptr}) - obstack_base (@var{obstack_ptr})
 @end example
 @end deftypefun
 
-@node Alignment of Data in Obstacks
+@node Alignment of Data in Obstacks, Obstack Chunks, Status of an Obstack, Obstacks
 @subsection Alignment of Data in Obstacks
 @cindex alignment (in obstacks)
 
@@ -1207,7 +1207,7 @@ alignment mask take effect immediately by calling @code{obstack_finish}.
 This will finish a zero-length object and then do proper alignment for
 the next object.
 
-@node Obstack Chunks
+@node Obstack Chunks, Obstacks and Signal Handling, Alignment of Data in Obstacks, Obstacks
 @subsection Obstack Chunks
 @cindex efficiency of chunks
 @cindex chunks
@@ -1269,7 +1269,7 @@ if (obstack_chunk_size (obstack_ptr) < @var{new_chunk_size})
   obstack_chunk_size (obstack_ptr) = @var{new_chunk_size};
 @end example
 
-@node Obstacks and Signal Handling
+@node Obstacks and Signal Handling, Summary of Obstacks, Obstack Chunks, Obstacks
 @subsection Obstacks and Signal Handling
 @cindex signals and obstacks
 
@@ -1305,7 +1305,7 @@ the @code{obstack_chunk_alloc} and @code{obstack_chunk_free} functions
 to interlock so that only one of them can actually call @code{malloc} or
 @code{free} at a given time.
 
-@node Summary of Obstacks
+@node Summary of Obstacks,  , Obstacks and Signal Handling, Obstacks
 @subsection Summary of Obstack Functions
 
 Here is a summary of all the functions associated with obstacks.  Each
@@ -1386,7 +1386,7 @@ Address just after the end of the currently growing object.
 @xref{Status of an Obstack}.
 @end table
 
-@node Variable Size Automatic
+@node Variable Size Automatic, Relocating Allocator, Obstacks, Memory Allocation
 @section Automatic Storage with Variable Size
 @cindex automatic freeing
 @cindex @code{alloca} function
@@ -1417,15 +1417,15 @@ will get unpredictable results.  An example of what to avoid is
 @code{foo (x, alloca (4), y)}.
 
 @menu
-* Alloca Example::                     Example of using @code{alloca}.
-* Advantages of Alloca::               Reasons to use @code{alloca}.
-* Disadvantages of Alloca::            Reasons to avoid @code{alloca}.
-* GNU C Variable-Size Arrays::         Only in GNU C, here is an alternative
+* Alloca Example::              Example of using @code{alloca}.
+* Advantages of Alloca::        Reasons to use @code{alloca}.
+* Disadvantages of Alloca::     Reasons to avoid @code{alloca}.
+* GNU C Variable-Size Arrays::  Only in GNU C, here is an alternative
                                         method of allocating dynamically and
                                         freeing automatically.
 @end menu
 
-@node Alloca Example
+@node Alloca Example, Advantages of Alloca,  , Variable Size Automatic
 @subsection Alloca Example
 
 As an example of use of @code{alloca}, here is a function that opens a file
@@ -1466,7 +1466,7 @@ open2 (char *str1, char *str2, int flags, int mode)
 As you can see, it is simpler with @code{alloca}.  But @code{alloca} has
 other, more important advantages, and some disadvantages.
 
-@node Advantages of Alloca
+@node Advantages of Alloca, Disadvantages of Alloca, Alloca Example, Variable Size Automatic
 @subsection Advantages of @code{alloca}
 
 Here are the reasons why @code{alloca} may be preferable to @code{malloc}:
@@ -1517,7 +1517,7 @@ changed in this way.  Even if you are willing to make more changes to
 fix it, there is no easy way to do so.
 @end itemize
 
-@node Disadvantages of Alloca
+@node Disadvantages of Alloca, GNU C Variable-Size Arrays, Advantages of Alloca, Variable Size Automatic
 @subsection Disadvantages of @code{alloca}
 
 @cindex @code{alloca} disadvantages
@@ -1538,7 +1538,7 @@ portable.  However, a slower emulation of @code{alloca} written in C
 is available for use on systems with this deficiency.
 @end itemize
 
-@node GNU C Variable-Size Arrays
+@node GNU C Variable-Size Arrays,  , Disadvantages of Alloca, Variable Size Automatic
 @subsection GNU C Variable-Size Arrays
 @cindex variable-sized arrays
 
@@ -1577,7 +1577,7 @@ frees all blocks allocated with @code{alloca} during the execution of that
 scope.
 
 
-@node Relocating Allocator
+@node Relocating Allocator,  , Variable Size Automatic, Memory Allocation
 @section Relocating Allocator
 
 @strong{Incomplete:}  Information about the relocating storage allocator
index b8e85f9..664641a 100644 (file)
@@ -1,4 +1,4 @@
-@node Pipes and FIFOs
+@node Pipes and FIFOs, Sockets, File System Interface, Top
 @chapter Pipes and FIFOs
 
 @cindex pipe
@@ -25,13 +25,13 @@ reading and writing operations happen sequentially; reading from the
 beginning of the file and writing at the end.
 
 @menu
-* Creating a Pipe::            Making a pipe with the @code{pipe} function.
-* Pipe to a Subprocess::       Using a pipe to communicate with a
+* Creating a Pipe::             Making a pipe with the @code{pipe} function.
+* Pipe to a Subprocess::        Using a pipe to communicate with a
                                 child process.
-* FIFO Special Files::         Making a FIFO special file.
+* FIFO Special Files::          Making a FIFO special file.
 @end menu
 
-@node Creating a Pipe
+@node Creating a Pipe, Pipe to a Subprocess,  , Pipes and FIFOs
 @section Creating a Pipe
 @cindex creating a pipe
 @cindex opening a pipe
@@ -139,7 +139,7 @@ main (void)
 @end example
 
 
-@node Pipe to a Subprocess
+@node Pipe to a Subprocess, FIFO Special Files, Creating a Pipe, Pipes and FIFOs
 @section Pipe to a Subprocess
 @cindex creating a pipe to a subprocess
 @cindex pipe to a subprocess
@@ -214,7 +214,7 @@ main (void)
 @end example
 
 
-@node FIFO Special Files
+@node FIFO Special Files,  , Pipe to a Subprocess, Pipes and FIFOs
 @section FIFO Special Files
 @cindex creating a FIFO special file
 @cindex interprocess communication, with FIFO
index cd363b0..a0ec80f 100644 (file)
@@ -1,4 +1,4 @@
-@node Searching and Sorting
+@node Searching and Sorting, Input/Output Overview, Locales, Top
 @chapter Searching and Sorting 
 
 This chapter describes functions for searching and sorting arrays of
@@ -7,15 +7,15 @@ applied as an argument, along with the size of the objects in the array
 and the total number of elements.
 
 @menu
-* Comparison Functions::    Defining how to compare two objects.
+* Comparison Functions::        Defining how to compare two objects.
                                Since the sort and search facilities are
                                general, you have to specify the ordering.
-* Array Search Function::   The @code{bsearch} function.
-* Array Sort Function::            The @code{qsort} function.
-* Search/Sort Example::     An example program.
+* Array Search Function::       The @code{bsearch} function.
+* Array Sort Function::         The @code{qsort} function.
+* Search/Sort Example::         An example program.
 @end menu
 
-@node Comparison Functions
+@node Comparison Functions, Array Search Function,  , Searching and Sorting
 @section Defining the Comparison Function
 @cindex Comparison Function
 
@@ -56,7 +56,7 @@ you request the GNU extensions.
 int comparison_fn_t (const void *, const void *);
 @end example
 
-@node Array Search Function
+@node Array Search Function, Array Sort Function, Comparison Functions, Searching and Sorting
 @section Array Search Function
 @cindex search function (for arrays)
 @cindex binary search function (for arrays)
@@ -89,7 +89,7 @@ This function derives its name from the fact that it is implemented
 using the binary search.
 @end deftypefun
 
-@node Array Sort Function
+@node Array Sort Function, Search/Sort Example, Array Search Function, Searching and Sorting
 @section Array Sort Function
 @cindex sort function (for arrays)
 @cindex quick sort function (for arrays)
@@ -140,7 +140,7 @@ The @code{qsort} function derives its name from the fact that it was
 originally implemented using the algorithm ``quick sort''.
 @end deftypefun
 
-@node Search/Sort Example
+@node Search/Sort Example,  , Array Sort Function, Searching and Sorting
 @section Searching and Sorting Example
 
 Here is an example showing the use of @code{qsort} and @code{bsearch}
index 2c6a5fd..a5de222 100644 (file)
@@ -1,4 +1,4 @@
-@node Non-Local Exits
+@node Non-Local Exits, Signal Handling, Date and Time, Top
 @chapter Non-Local Exits
 @cindex non-local exits
 @cindex long jumps
@@ -10,13 +10,13 @@ do such @dfn{non-local exits} using the @code{setjmp} and @code{longjmp}
 functions.
 
 @menu
-* Introduction to Non-Local Exits::    An overview of how and when to use
+* Introduction to Non-Local Exits::  An overview of how and when to use
                                         these facilities.
-* Functions for Non-Local Exits::      Details of the interface.
-* Non-Local Exits and Blocked Signals::        Portability issues.
+* Functions for Non-Local Exits::  Details of the interface.
+* Non-Local Exits and Blocked Signals::  Portability issues.
 @end menu
 
-@node Introduction to Non-Local Exits
+@node Introduction to Non-Local Exits, Functions for Non-Local Exits,  , Non-Local Exits
 @section Introduction to Non-Local Exits
 
 As an example of a situation where a non-local exit can be useful,
@@ -104,7 +104,7 @@ else
   @dots{}
 @end example
 
-@node Functions for Non-Local Exits
+@node Functions for Non-Local Exits, Non-Local Exits and Blocked Signals, Introduction to Non-Local Exits, Non-Local Exits
 @section Functions for Non-Local Exits
 
 Here are the details on the functions and data structures used for
@@ -186,7 +186,7 @@ function containing the @code{setjmp} call that have been changed since
 the call to @code{setjmp} are indeterminate, unless you have declared
 them @code{volatile}.
 
-@node Non-Local Exits and Blocked Signals
+@node Non-Local Exits and Blocked Signals,  , Functions for Non-Local Exits, Non-Local Exits
 @section Non-Local Exits and Blocked Signals
 
 In BSD Unix systems, @code{setjmp} and @code{longjmp} also save and
index d1b9f87..8905a93 100644 (file)
@@ -1,4 +1,4 @@
-@node Signal Handling
+@node Signal Handling, Processes, Non-Local Exits, Top
 @chapter Signal Handling
 
 @cindex signal
@@ -23,21 +23,22 @@ parent process to abort a child, or two related processes to communicate
 and synchronize.
 
 @menu
-* Concepts of Signals::          Introduction to the signal facilities.
-* Standard Signals::     Particular kinds of signals with standard
+* Concepts of Signals::         Introduction to the signal facilities.
+* Standard Signals::            Particular kinds of signals with standard
                             names and meanings.
-* Signal Actions::       Specifying what happens when a particular signal
+* Signal Actions::              Specifying what happens when a particular signal
                             is delivered.
-* Defining Handlers::    How to write a signal handler function.
-* Generating Signals::    How to send a signal to a process.
-* Blocking Signals::     Making the system hold signals temporarily.
-* Waiting for a Signal::  Suspending your program until a signal arrives.
-* BSD Signal Handling::          Additional functions for backward
+* Defining Handlers::           How to write a signal handler function.
+* Generating Signals::          How to send a signal to a process.
+* Blocking Signals::            Making the system hold signals temporarily.
+* Waiting for a Signal::        Suspending your program until a signal arrives.
+* BSD Signal Handling::         Additional functions for backward
                             compatibility with BSD.
+* BSD Handler::                 BSD Function to Establish a Handler
 @end menu
 
 
-@node Concepts of Signals
+@node Concepts of Signals, Standard Signals,  , Signal Handling
 @section Basic Concepts of Signals
 
 This section explains basic concepts of how signals are generated, what
@@ -45,12 +46,12 @@ happens after a signal is delivered, and how programs can handle
 signals.
 
 @menu
-* Kinds of Signals::     Some examples of what can cause a signal.
-* Signal Generation::     Concepts of why and how signals occur.
-* Delivery of Signal::    Concepts of what a signal does to the process.
+* Kinds of Signals::            Some examples of what can cause a signal.
+* Signal Generation::           Concepts of why and how signals occur.
+* Delivery of Signal::          Concepts of what a signal does to the process.
 @end menu
 
-@node Kinds of Signals
+@node Kinds of Signals, Signal Generation,  , Concepts of Signals
 @subsection Some Kinds of Signals 
 
 A signal reports the occurrence of an exceptional event.  These are some
@@ -87,7 +88,7 @@ and @code{raise}) generates its own particular kind of signal.  The
 various kinds of signals are listed and described in detail in
 @ref{Standard Signals}.
 
-@node Signal Generation
+@node Signal Generation, Delivery of Signal, Kinds of Signals, Concepts of Signals
 @subsection Concepts of Signal Generation
 @cindex generation of signals
 
@@ -128,7 +129,7 @@ because errors generate signals synchronously.  But any type of signal
 can be generated synchronously or asynchronously with an explicit
 request.
 
-@node Delivery of Signal
+@node Delivery of Signal,  , Signal Generation, Concepts of Signals
 @subsection How Signals Are Delivered
 @cindex delivery of signals
 @cindex pending signals
@@ -187,7 +188,7 @@ If you raise a ``program error'' signal by explicit request, and this
 terminates the process, it makes a core dump file just as if the signal
 had been due directly to an error.
 
-@node Standard Signals
+@node Standard Signals, Signal Actions, Concepts of Signals, Signal Handling
 @section Standard Signals
 @cindex signal names
 @cindex names of signals
@@ -214,17 +215,17 @@ defined.  Since the signal numbers are allocated consecutively,
 @end deftypevr
 
 @menu
-* Program Error Signals::      Used to report serious program errors.
-* Termination Signals::                Used to interrupt and/or terminate the program.
-* Alarm Signals::              Used to indicate expiration of timers.
+* Program Error Signals::       Used to report serious program errors.
+* Termination Signals::         Used to interrupt and/or terminate the program.
+* Alarm Signals::               Used to indicate expiration of timers.
 * Asynchronous I/O Signals::    Used to indicate input is available.
-* Miscellanous Signals::       Used to report various random conditions.
-* Job Control Signals::        Signals used to support job control.
-* Other Signals::              Implementations can support other signals.
-* Signal Messages::            Printing a message describing a signal.
+* Job Control Signals::         Signals used to support job control.
+* Miscellaneous Signals::       Miscellaneous Signals
+* Other Signals::               Implementations can support other signals.
+* Signal Messages::             Printing a message describing a signal.
 @end menu
 
-@node Program Error Signals
+@node Program Error Signals, Termination Signals,  , Standard Signals
 @subsection Program Error Signals
 @cindex program error signals
 
@@ -353,7 +354,7 @@ This signal indicates an error detected by the program itself and
 reported by calling @code{abort}.  @xref{Aborting a Program}.
 @end deftypevr
 
-@node Termination Signals
+@node Termination Signals, Alarm Signals, Program Error Signals, Standard Signals
 @subsection Termination Signals
 @cindex program termination signals
 
@@ -450,7 +451,7 @@ constitutes an operating system bug which you should report.
 @end deftypevr
 @cindex kill signal
 
-@node Alarm Signals
+@node Alarm Signals, Asynchronous I/O Signals, Termination Signals, Standard Signals
 @subsection Alarm Signals
 
 These signals are used to indicate the expiration of timers.
@@ -491,7 +492,7 @@ code profiling facilities, hence the name of this signal.
 @cindex profiling alarm signal
 
 
-@node Asynchronous I/O Signals
+@node Asynchronous I/O Signals, Job Control Signals, Alarm Signals, Standard Signals
 @subsection Asynchronous I/O Signals
 
 The signals listed in this section are used in conjunction with
@@ -521,7 +522,7 @@ This signal is sent when ``urgent'' or out-of-band data arrives on a
 socket.  @xref{Out-of-Band Data}.
 @end deftypevr
 
-@node Job Control Signals
+@node Job Control Signals, Miscellaneous Signals, Asynchronous I/O Signals, Standard Signals
 @subsection Job Control Signals
 @cindex job control signals
 
@@ -629,7 +630,7 @@ system might turn the stop signal into another signal like @code{SIGHUP}.
 
 @strong{Incomplete:}  What does the GNU system do?
 
-@node Miscellaneous Signals
+@node Miscellaneous Signals, Other Signals, Job Control Signals, Standard Signals
 @subsection Miscellaneous Signals
 
 These signals are used to report various other conditions.  The default
@@ -667,7 +668,7 @@ in @ref{Signaling Another Process}.
 @end deftypevr
 @cindex user signals
 
-@node Other Signals
+@node Other Signals, Signal Messages, Miscellaneous Signals, Standard Signals
 @subsection Other Signals
 
 Particular operating systems support additional signals not listed
@@ -731,7 +732,7 @@ ignore it.
 @end table
 
 
-@node Signal Messages
+@node Signal Messages,  , Other Signals, Standard Signals
 @subsection Signal Messages
 @cindex signal messages
 
@@ -775,7 +776,7 @@ to @var{signum}.
 This function is declared in the header file @file{stdio.h}.
 @end deftypefun
 
-@node Signal Actions
+@node Signal Actions, Defining Handlers, Standard Signals, Signal Handling
 @section Specifying Signal Actions
 @cindex signal actions
 @cindex establishing a handler
@@ -789,15 +790,15 @@ facility.  This section describes both facilities and gives suggestions
 on which to use when.
 
 @menu
-* Basic Signal Handling::      The simple @code{signal} function.
-* Advanced Signal Handling::   The more powerful @code{sigaction} function.
+* Basic Signal Handling::       The simple @code{signal} function.
+* Advanced Signal Handling::    The more powerful @code{sigaction} function.
 * Signal and Sigaction::        How those two functions interact.
-* Sigaction Function Example:: An example of using the sigaction function.
-* Flags for Sigaction::                Specifying options for signal handling.
-* Initial Signal Actions::     How programs inherit signal actions.
+* Sigaction Function Example::  An example of using the sigaction function.
+* Flags for Sigaction::         Specifying options for signal handling.
+* Initial Signal Actions::      How programs inherit signal actions.
 @end menu
 
-@node Basic Signal Handling
+@node Basic Signal Handling, Advanced Signal Handling,  , Signal Actions
 @subsection Basic Signal Handling
 @cindex @code{signal} function
 
@@ -953,7 +954,7 @@ this purpose.
 @end ignore
 
 
-@node Advanced Signal Handling
+@node Advanced Signal Handling, Signal and Sigaction, Basic Signal Handling, Signal Actions
 @subsection Advanced Signal Handling
 @cindex @code{sigaction} function
 
@@ -1024,7 +1025,7 @@ trap or ignore @code{SIGKILL} or @code{SIGSTOP}.
 @end table
 @end deftypefun
 
-@node Signal and Sigaction
+@node Signal and Sigaction, Sigaction Function Example, Advanced Signal Handling, Signal Actions
 @subsection Interaction of @code{signal} and @code{sigaction}
 
 It's possible to use both the @code{signal} and @code{sigaction}
@@ -1058,7 +1059,7 @@ of ANSI C, while @code{sigaction} is part of the POSIX.1 standard.  If
 you are concerned about portability to non-POSIX systems, then you
 should use the @code{signal} function instead.
 
-@node Sigaction Function Example
+@node Sigaction Function Example, Flags for Sigaction, Signal and Sigaction, Signal Actions
 @subsection @code{sigaction} Function Example
 
 In @ref{Basic Signal Handling}, we gave an example of establishing a
@@ -1125,7 +1126,7 @@ else
   /* @r{A programmer-defined signal handler is in effect.} */
 @end example
 
-@node Flags for Sigaction
+@node Flags for Sigaction, Initial Signal Actions, Sigaction Function Example, Signal Actions
 @subsection Flags for @code{sigaction}
 @cindex signal flags
 @cindex flags for @code{sigaction}
@@ -1183,7 +1184,7 @@ kind of signal that was delivered.  If the flag is set, the system call
 will resume.  If the flag is clear, the system call will return failure.
 @end deftypevr
 
-@node Initial Signal Actions
+@node Initial Signal Actions,  , Flags for Sigaction, Signal Actions
 @subsection Initial Signal Actions
 @cindex initial signal actions
 
@@ -1220,7 +1221,7 @@ if (temp.sa_handler != SIG_IGN)
   @}
 @end example
 
-@node Defining Handlers
+@node Defining Handlers, Generating Signals, Signal Actions, Signal Handling
 @section Defining Signal Handlers
 @cindex signal handler function
 
@@ -1254,15 +1255,15 @@ while it is handling the first signal!  This section describes what your
 handler should do, and what you should avoid.
 
 @menu
-* Handler Returns::
-* Termination in Handler::
-* Longjmp in Handler::
-* Signals in Succession::
-* Nonreentrancy::
-* Atomic Data Access::
+* Handler Returns::             
+* Termination in Handler::      
+* Longjmp in Handler::          
+* Signals in Succession::       
+* Nonreentrancy::               
+* Atomic Data Access::          
 @end menu
 
-@node Handler Returns
+@node Handler Returns, Termination in Handler,  , Defining Handlers
 @subsection Signal Handlers That Return
 
 Handlers which return normally are usually used for signals such as
@@ -1321,7 +1322,7 @@ main (void)
 @}      
 @end example
 
-@node Termination in Handler
+@node Termination in Handler, Longjmp in Handler, Handler Returns, Defining Handlers
 @subsection Handlers That Terminate the Process
 
 Handler functions terminate the program are typically used to cause
@@ -1367,7 +1368,7 @@ fatal_error_signal (int sig)
 @}
 @end example
 
-@node Longjmp in Handler
+@node Longjmp in Handler, Signals in Succession, Termination in Handler, Defining Handlers
 @subsection Nonlocal Control Transfer in Handlers
 @cindex non-local exit, from signal handler
 
@@ -1436,7 +1437,7 @@ read_data ()
 @end example
 
 
-@node Signals in Succession
+@node Signals in Succession, Nonreentrancy, Longjmp in Handler, Defining Handlers
 @subsection Signals Arriving in Quick Succession
 @cindex race conditions, relating to signals
 @cindex handling multiple signals
@@ -1484,7 +1485,7 @@ permits this behavior, but you do not need to worry about this if you
 are using the GNU system.
 
 
-@node Nonreentrancy
+@node Nonreentrancy, Atomic Data Access, Signals in Succession, Defining Handlers
 @subsection Signal Handling and Nonreentrant Functions 
 @cindex restrictions on signal handler functions
 
@@ -1536,7 +1537,7 @@ invalidated by such modifications.
 @cindex @code{volatile} declarations
 @end itemize
 
-@node Atomic Data Access
+@node Atomic Data Access,  , Nonreentrancy, Defining Handlers
 @subsection Atomic Data Access and Signal Handling
 
 Whether the data in your application concerns atoms, or mere text,
@@ -1607,7 +1608,7 @@ On some machines it may be possible to store a new value in
 Then we say the value is stored @dfn{atomically}.  On these machines,
 the handler will always print two zeros or two ones.
 
-@node Generating Signals
+@node Generating Signals, Blocking Signals, Defining Handlers, Signal Handling
 @section Generating Signals
 @cindex sending signals
 @cindex raising signals
@@ -1618,12 +1619,14 @@ interrupt, your program can explicitly send signals to itself or to
 another process.
 
 @menu
-* Raising a Signal::           Send yourself any desired signal.
-* Signaling Another Process::  Send a signal to another process.
+* Signaling Yourself::          Signaling Yourself
+* Signaling Another Process::   Send a signal to another process.
+* Permission for kill::         Permission for using @code{kill}
+* Kill Example::                Using @code{kill} for Communication
 @end menu
 
 
-@node Signaling Yourself
+@node Signaling Yourself, Signaling Another Process,  , Generating Signals
 @subsection Signaling Yourself
 
 A process can send itself a signal with the @code{raise} function.  This
@@ -1700,7 +1703,7 @@ main (void)
 committee.  Older systems may not support it, so using @code{kill} may
 be more portable.  @xref{Signaling Another Process}.
 
-@node Signaling Another Process
+@node Signaling Another Process, Permission for kill, Signaling Yourself, Generating Signals
 @subsection Signaling Another Process
 
 @cindex killing a process
@@ -1807,7 +1810,7 @@ has the same effect as:
 raise (@var{sig})
 @end example
 
-@node Permission for kill
+@node Permission for kill, Kill Example, Signaling Another Process, Generating Signals
 @subsection Permission for using @code{kill}
 
 There are restrictions that prevent you from using @code{kill} to send
@@ -1839,7 +1842,7 @@ The @code{SIGCONT} signal is a special case.  It can be sent if the
 sender is part of the same session as the receiver, regardless of
 user IDs.
 
-@node Kill Example
+@node Kill Example,  , Permission for kill, Generating Signals
 @subsection Using @code{kill} for Communication
 @cindex interprocess communication, with signals
 Here is a longer example showing how signals can be used for
@@ -1923,7 +1926,7 @@ waits one extra second--an imperfection, but not a serious problem.
 There is an example in @ref{Waiting for a Signal} that shows you how
 you can make a program block until a signal arrives.
 
-@node Blocking Signals
+@node Blocking Signals, Waiting for a Signal, Generating Signals, Signal Handling
 @section Blocking Signals
 @cindex blocking signals
 
@@ -1946,20 +1949,20 @@ signal handler can run without being interrupted itself by signals.
 @end itemize
 
 @menu
-* Why Block::                           The purpose of blocking signals.
-* Signal Sets::                                How to specify which signals to block.
-* Process Signal Mask::                        Blocking delivery of signals to your
+* Why Block::                   The purpose of blocking signals.
+* Signal Sets::                 How to specify which signals to block.
+* Process Signal Mask::         Blocking delivery of signals to your
                                         process during normal execution.
-* Blocking for Handler::       Blocking additional signals while a
+* Testing for Delivery::        Blocking to Test for Delivery of a Signal
+* Blocking for Handler::        Blocking additional signals while a
                                         handler is being run.
-* Pending Signals::    How to tell if there are signals
-                                        waiting to be delivered.
+* Checking for Pending Signals::  Checking for Pending Signals
 * Remembering a Signal::        How you can get almost the same effect
                                 as blocking a signal, by handling it
                                 and setting a flag to be tested later.
 @end menu
 
-@node Why Block
+@node Why Block, Signal Sets,  , Blocking Signals
 @subsection Why Blocking Signals is Useful
 
 Temporary blocking of signals with @code{sigprocmask} gives you a way to
@@ -1989,7 +1992,7 @@ perform the action even though the signal has arrived.
 The only way to test reliably for whether a signal has yet arrived is to
 test while the signal is blocked.
 
-@node Signal Sets
+@node Signal Sets, Process Signal Mask, Why Block, Blocking Signals
 @subsection Signal Sets
 
 All of the signal blocking functions use a data structure called a
@@ -2082,7 +2085,7 @@ The @var{signum} argument doesn't specify a valid signal.
 @end table
 @end deftypefun
 
-@node Process Signal Mask
+@node Process Signal Mask, Testing for Delivery, Signal Sets, Blocking Signals
 @subsection Process Signal Mask
 @cindex signal mask
 @cindex process signal mask
@@ -2162,7 +2165,7 @@ This is because your program may be too broken to be able to continue
 executing to a point where the signal is unblocked again.
 @end deftypefun
 
-@node Testing for Delivery
+@node Testing for Delivery, Blocking for Handler, Process Signal Mask, Blocking Signals
 @subsection Blocking to Test for Delivery of a Signal
 
 Now for a simple example.  Suppose you establish a handler for
@@ -2202,7 +2205,7 @@ main ()
 @}
 @end example
 
-@node Blocking for Handler
+@node Blocking for Handler, Checking for Pending Signals, Testing for Delivery, Blocking Signals
 @subsection Blocking Signals for a Handler
 @cindex blocking signals, in a handler
 
@@ -2262,7 +2265,7 @@ your handler to block or unblock signals as you wish.
 In any case, when the handler returns, the system restores the mask that
 was in place before the handler was entered.
 
-@node Checking for Pending Signals
+@node Checking for Pending Signals, Remembering a Signal, Blocking for Handler, Blocking Signals
 @subsection Checking for Pending Signals
 @cindex pending signals, checking for
 @cindex blocked signals, checking for
@@ -2319,7 +2322,7 @@ be discarded.  For example, if a @code{SIGINT} signal is pending when
 another @code{SIGINT} signal arrives, your program will probably only
 see one of them when you unblock this signal.
 
-@node Remembering a Signal
+@node Remembering a Signal,  , Checking for Pending Signals, Blocking Signals
 @subsection Remembering a Signal to Act On Later
 
 Instead of blocking a signal using the library facilities, you can get
@@ -2403,7 +2406,7 @@ might seem equally simple.  This is a further advantage of using a
 counter for @code{defer_signal}: it will reduce the chance you will
 write the code in the wrong order and create a subtle bug.)
 
-@node Waiting for a Signal
+@node Waiting for a Signal, BSD Signal Handling, Blocking Signals, Signal Handling
 @section Waiting for a Signal
 @cindex waiting for a signal
 @cindex @code{pause} function
@@ -2413,12 +2416,12 @@ synchronization, then when it has nothing to do it should probably wait
 until a signal arrives.
 
 @menu
-* Using Pause::       The simple way, using @code{pause}.
-* Pause Problems::    Why the simple way is often not very good.
-* Sigsuspend::        Reliably waiting for a specific signal.
+* Using Pause::                 The simple way, using @code{pause}.
+* Pause Problems::              Why the simple way is often not very good.
+* Sigsuspend::                  Reliably waiting for a specific signal.
 @end menu
 
-@node Using Pause
+@node Using Pause, Pause Problems,  , Waiting for a Signal
 @subsection Using @code{pause}
 
 The simple way to wait until a signal arrives is to call @code{pause}.
@@ -2450,7 +2453,7 @@ If the signal causes program termination, @code{pause} doesn't return
 The @code{pause} function is declared in  @file{unistd.h}.
 @end deftypefun
 
-@node Pause Problems
+@node Pause Problems, Sigsuspend, Using Pause, Waiting for a Signal
 @subsection Problems with @code{pause}
 
 The simplicity of @code{pause} can conceal serious timing errors that
@@ -2501,7 +2504,7 @@ run, using @code{sigsuspend}.
 @xref{Sigsuspend}.
 @end ifinfo
 
-@node Sigsuspend
+@node Sigsuspend,  , Pause Problems, Waiting for a Signal
 @subsection Using @code{sigsuspend}
 
 The clean and reliable way to wait for a signal to arrive is to block it
@@ -2570,7 +2573,7 @@ This technique takes a few more lines of preparation, but that is needed
 just once for each kind of wait criterion you want to use.  The code
 that actually waits is just four lines.
 
-@node BSD Signal Handling
+@node BSD Signal Handling, BSD Handler, Waiting for a Signal, Signal Handling
 @section BSD Signal Handling
 
 This section describes alternative signal handling functions derived
@@ -2584,13 +2587,10 @@ handlers.  Using a signal stack is the only way you can handle a signal
 caused by stack overflow.
 
 @menu
-* POSIX vs BSD::       Overview comparing BSD and POSIX signal functions.
-* BSD Handlers::       BSD functions for specifying signal handling.
-* Blocking in BSD::    BSD functions for blocking, unblocking, and waiting.
-* Signal Stack::       How to use a separate signal stack.
+* POSIX vs BSD::                Overview comparing BSD and POSIX signal functions.
 @end menu
 
-@node POSIX vs BSD
+@node POSIX vs BSD,  ,  , BSD Signal Handling
 @subsection POSIX and BSD Signal Facilities 
 
 There are many similarities between the BSD and POSIX signal handling
@@ -2620,7 +2620,7 @@ instead of its normal execution stack.
 The BSD facilities are declared in @file{signal.h}.
 @pindex signal.h
 
-@node BSD Handler
+@node BSD Handler,  , BSD Signal Handling, Signal Handling
 @section BSD Function to Establish a Handler
 
 @comment signal.h
@@ -2692,7 +2692,12 @@ is true, system calls return with a @code{EINTR} error when
 interrupted.
 @end deftypefun
 
-@node Blocking in BSD
+@menu
+* Blocking in BSD::             BSD Functions for Blocking Signals 
+* Signal Stack::                Using a Separate Signal Stack
+@end menu
+
+@node Blocking in BSD, Signal Stack,  , BSD Handler
 @subsection BSD Functions for Blocking Signals 
 
 @comment signal.h
@@ -2738,7 +2743,7 @@ and waits for a signal to arrive.  On return the previous set of blocked
 signals is restored.
 @end deftypefun
 
-@node Signal Stack
+@node Signal Stack,  , Blocking in BSD, BSD Handler
 @subsection Using a Separate Signal Stack
 
 A signal stack is a special area of memory to be used as the execution
index 372c40e..cea4382 100644 (file)
@@ -1,4 +1,4 @@
-@node Sockets
+@node Sockets, Low-Level Terminal Interface, Pipes and FIFOs, Top
 @chapter Sockets
 
 @cindex socket
@@ -17,22 +17,22 @@ and the Internet domain.  Finally, actual operations on sockets
 are described.
 
 @menu
-* Socket Creation and Naming::          Functions for creating and
+* Socket Creation and Naming::  Functions for creating and
                                          initializing sockets.
-* Domains and Protocols::              How to specify the communications
+* Domains and Protocols::       How to specify the communications
                                         protocol for a socket.
-* The Local Domain::                   Details about the local (Unix) domain.
-* The Internet Domain::                        Details about the Internet domain.
-* Types of Sockets::                   Different socket types have different
+* The Local Domain::            Details about the local (Unix) domain.
+* The Internet Domain::         Details about the Internet domain.
+* Types of Sockets::            Different socket types have different
                                         semantics for data transmission.
-* Byte Stream Socket Operations::      Operations on sockets with connection
+* Byte Stream Socket Operations::  Operations on sockets with connection
                                         state.
-* Datagram Socket Operations::         Operations on datagram sockets.
-* Socket Options::                     Miscellaneous low-level socket options.
+* Datagram Socket Operations::  Operations on datagram sockets.
+* Socket Options::              Miscellaneous low-level socket options.
 @end menu
 
 
-@node Socket Creation and Naming
+@node Socket Creation and Naming, Domains and Protocols,  , Sockets
 @section Socket Creation and Naming
 
 This section presents the basic functions for creating and initializing
@@ -76,14 +76,14 @@ be at the other end of the communications path; this is called its
 a @dfn{client}.
 
 @menu
-* Creating a Socket::                  How to open a socket.
-* Closing a Socket::                   How to close a socket.
-* Socket Naming::                      You must associate a name with a socket
+* Creating a Socket::           How to open a socket.
+* Closing a Socket::            How to close a socket.
+* Socket Naming::               You must associate a name with a socket
                                         before it can receive data.
-* Socket Pairs::                       These are created like pipes.
+* Socket Pairs::                These are created like pipes.
 @end menu
 
-@node Creating a Socket
+@node Creating a Socket, Closing a Socket,  , Socket Creation and Naming
 @subsection Creating a Socket
 @cindex creating a socket
 @cindex socket, creating
@@ -131,7 +131,7 @@ write at either end of the connection.  Like pipes, sockets do not
 support file positioning operations.
 
 
-@node Closing a Socket
+@node Closing a Socket, Socket Naming, Creating a Socket, Socket Creation and Naming
 @subsection Closing a Socket
 @cindex socket, closing
 @cindex closing a socket
@@ -181,7 +181,7 @@ The @var{filedes} is not connected.
 @end deftypefun
 
 
-@node Socket Naming
+@node Socket Naming, Socket Pairs, Closing a Socket, Socket Creation and Naming
 @subsection Socket Naming
 
 @cindex binding a name to a socket
@@ -321,7 +321,7 @@ This is the address family for sockets in the Internet domain.
 @strong{Incomplete:}  There are a bunch more of these.
 
 
-@node Socket Pairs
+@node Socket Pairs,  , Socket Naming, Socket Creation and Naming
 @subsection Socket Pairs
 @cindex creating a socket pair
 @cindex socket pair
@@ -369,7 +369,7 @@ in the local domain.  Is this true of the GNU system also?
 
 
 
-@node Domains and Protocols
+@node Domains and Protocols, The Local Domain, Socket Creation and Naming, Sockets
 @section Domains and Protocols
 
 The header file @file{sys/socket.h} defines these symbolic constants
@@ -412,7 +412,7 @@ a value of @code{0} as the @var{protocol} argument when creating a
 socket with @code{socket} or @code{socketpair}.
 
 
-@node The Local Domain
+@node The Local Domain, The Internet Domain, Domains and Protocols, Sockets
 @section The Local Domain
 @cindex local domain, for sockets
 
@@ -505,7 +505,7 @@ int make_named_socket (const char *filename)
 @}
 @end example
 
-@node The Internet Domain
+@node The Internet Domain, Types of Sockets, The Local Domain, Sockets
 @section The Internet Domain
 @cindex Internet domain, for sockets
 
@@ -526,7 +526,7 @@ conventions used in the Internet domain, @code{PF_INET}.
 * Internet Socket Example::     Putting it all together.
 @end menu
 
-@node Protocols Database
+@node Protocols Database, Internet Socket Naming,  , The Internet Domain
 @subsection Protocols Database
 @cindex protocols database
 
@@ -615,7 +615,7 @@ This function closes the protocols database.
 @end deftypefun
 
 
-@node Internet Socket Naming
+@node Internet Socket Naming, Internet Host Addresses, Protocols Database, The Internet Domain
 @subsection Internet Socket Naming
 
 In the Internet domain, socket names are a triple consisting of a
@@ -654,7 +654,7 @@ The @var{length} parameter associated with socket names in the Internet
 domain is computed as @code{sizeof (struct sockaddr_in)}.
 
 
-@node Internet Host Addresses
+@node Internet Host Addresses, Hosts Database, Internet Socket Naming, The Internet Domain
 @subsection Internet Host Addresses
 
 @cindex host address, Internet
@@ -808,7 +808,7 @@ in network byte order, and network numbers and local network address
 numbers in host byte order.  @xref{Byte Order Conversion}.
 
 
-@node Hosts Database
+@node Hosts Database, Services Database, Internet Host Addresses, The Internet Domain
 @subsection Hosts Database
 @cindex hosts database
 @cindex converting host name to address
@@ -956,7 +956,7 @@ This function closes the hosts database.
 @end deftypefun
 
 
-@node Services Database
+@node Services Database, Networks Database, Hosts Database, The Internet Domain
 @subsection Services Database
 @cindex services database
 @cindex converting service name to port number
@@ -1060,7 +1060,7 @@ This function closes the services database.
 @end deftypefun
 
 
-@node Networks Database
+@node Networks Database, Byte Order Conversion, Services Database, The Internet Domain
 @subsection Networks Database
 @cindex networks database
 @cindex converting network number to network name
@@ -1148,7 +1148,7 @@ This function closes the networks database.
 @end deftypefun
 
 
-@node Byte Order Conversion
+@node Byte Order Conversion, Internet Socket Example, Networks Database, The Internet Domain
 @subsection Byte Order Conversion
 @cindex byte order conversion, for socket
 @cindex converting byte order
@@ -1202,7 +1202,7 @@ This function converts the @code{long} integer @var{netlong} from
 network byte order to host byte order.
 @end deftypefun
 
-@node Internet Socket Example
+@node Internet Socket Example,  , Byte Order Conversion, The Internet Domain
 @subsection Internet Socket Example
 
 Here is an example showing how to create and name a socket in the
@@ -1270,7 +1270,7 @@ void init_sockaddr (struct sockaddr_in *name, const char *hostname,
 @end example
 
 
-@node Types of Sockets
+@node Types of Sockets, Byte Stream Socket Operations, The Internet Domain, Sockets
 @section Types of Sockets
 
 The GNU library includes support for several different kinds of sockets,
@@ -1350,7 +1350,7 @@ socket type.
 @end deftypevr
 
 
-@node Byte Stream Socket Operations
+@node Byte Stream Socket Operations, Datagram Socket Operations, Types of Sockets, Sockets
 @section Byte Stream Socket Operations
 @cindex byte stream socket
 
@@ -1377,7 +1377,7 @@ connected socket.
 * Out-of-Band Data::            This is an advanced feature.
 @end menu
 
-@node Establishing a Connection
+@node Establishing a Connection, Transferring Data,  , Byte Stream Socket Operations
 @subsection Establishing a Connection
 @cindex connecting a socket
 @cindex socket, connecting
@@ -1535,7 +1535,7 @@ There are not enough internal buffers available.
 @end deftypefun
 
 
-@node Transferring Data
+@node Transferring Data, Byte Stream Socket Example, Establishing a Connection, Byte Stream Socket Operations
 @subsection Transferring Data
 @cindex reading from a socket
 @cindex writing to a socket
@@ -1638,7 +1638,7 @@ on write operations, and is generally only of interest for diagnostic or
 routing programs.
 @end deftypevr
 
-@node Byte Stream Socket Example
+@node Byte Stream Socket Example, Out-of-Band Data, Transferring Data, Byte Stream Socket Operations
 @subsection Byte Stream Socket Example
 
 Here are a set of example programs that show communications over a 
@@ -1817,7 +1817,7 @@ void main (void)
 @end example
 
 
-@node Out-of-Band Data
+@node Out-of-Band Data,  , Byte Stream Socket Example, Byte Stream Socket Operations
 @subsection Out-of-Band Data
 
 @cindex out-of-band data
@@ -1846,7 +1846,7 @@ data to empty out internal buffers before the out-of-band data can be
 delivered.
 
 
-@node Datagram Socket Operations
+@node Datagram Socket Operations, Socket Options, Byte Stream Socket Operations, Sockets
 @section Datagram Socket Operations
 @cindex datagram socket
 This section describes functions for sending messages on datagram
@@ -1870,7 +1870,7 @@ the @code{connect} function.
 * Datagram Socket Example::     An example program.
 @end menu
 
-@node Transmitting Datagrams
+@node Transmitting Datagrams, Datagram Socket Example,  , Datagram Socket Operations
 @subsection Transmitting Datagrams
 @cindex sending a datagram
 @cindex receiving a datagram
@@ -1933,7 +1933,7 @@ related to @code{readv}, which I don't understand either.
 @end deftypefun
 @end ignore
 
-@node Datagram Socket Example
+@node Datagram Socket Example,  , Transmitting Datagrams, Datagram Socket Operations
 @subsection Datagram Socket Example
 
 Here is a set of example programs that send messages over a datagram
@@ -2065,7 +2065,7 @@ message or shut down the socket cleanly before exiting if the connection
 appears to be dead.
 
 
-@node Socket Options
+@node Socket Options,  , Datagram Socket Operations, Sockets
 @section Socket Options
 @cindex socket options
 
@@ -2084,7 +2084,7 @@ the socket interface, or to a lower-level communications protocol interface.
 * Socket-Level Options::        Details of the options at the socket level.
 @end menu
 
-@node Socket Option Functions
+@node Socket Option Functions, Socket-Level Options,  , Socket Options
 @subsection Socket Option Functions
 
 Here are the functions for inquiring about and modifying socket options.
@@ -2128,7 +2128,7 @@ The return value and error codes are the same as for @code{getsockopt}.
 @end deftypefun
 
 
-@node Socket-Level Options
+@node Socket-Level Options,  , Socket Option Functions, Socket Options
 @subsection Socket-Level Options
 
 The flags for socket-level options are defined in the header file
index 44e3b3e..67c3025 100644 (file)
@@ -1,4 +1,4 @@
-@node Input/Output on Streams
+@node Input/Output on Streams, Low-Level Input/Output, Input/Output Overview, Top
 @chapter Input/Output on Streams
 
 This chapter describes the functions for creating streams and performing
@@ -10,33 +10,31 @@ representing a communications channel to a file, device, or process.
 useful here.
 
 @menu
-* Streams::             About the data type representing a stream.
-* Standard Streams::    Streams to the standard input and output 
+* Streams::                     About the data type representing a stream.
+* Standard Streams::            Streams to the standard input and output 
                          devices are created for you.
-* Opening Streams::    How to create a stream to talk to a file.
-* Closing Streams::    Close a stream when you are finished with it.
-* Simple Output::       Unformatted output by characters and lines.
-* Character Input::     Unformatted input by characters and words.
-* Line Input::         Reading a line or a record from a stream.
-* Unreading::           Peeking ahead/pushing back input just read.
-* Formatted Output::    @code{printf} and related functions.
-* Customizing Printf::  You can define new conversion specifiers for
+* Opening Streams::             How to create a stream to talk to a file.
+* Closing Streams::             Close a stream when you are finished with it.
+* Simple Output::               Unformatted output by characters and lines.
+* Character Input::             Unformatted input by characters and words.
+* Line Input::                  Reading a line or a record from a stream.
+* Unreading::                   Peeking ahead/pushing back input just read.
+* Formatted Output::            @code{printf} and related functions.
+* Customizing Printf::          You can define new conversion specifiers for
                          @code{printf} and friends.
-* Formatted Input::     @code{scanf} and related functions.
-* Block Input/Output::  Input and output operations on blocks of data.
-* EOF and Errors::      How you can tell if an I/O error happens.
-* Binary Streams::      Some systems distinguish between text files
+* Formatted Input::             @code{scanf} and related functions.
+* Block Input/Output::          Input and output operations on blocks of data.
+* EOF and Errors::              How you can tell if an I/O error happens.
+* Binary Streams::              Some systems distinguish between text files
                          and binary files.
-* File Positioning::    About random-access streams.
-* Portable Positioning::Random access on peculiar ANSI C systems.
-* Stream Buffering::    How to control buffering of streams.
-* Temporary Files::     How to open a temporary file.
-* Other Streams::       How you can open additional kinds of streams,
-                        including streams that store data in a string,
-                        and your own custom streams.
+* File Positioning::            About random-access streams.
+* Portable Positioning::        Random access on peculiar ANSI C systems.
+* Stream Buffering::            How to control buffering of streams.
+* Temporary Files::             How to open a temporary file.
+* Other Kinds of Streams::      Other Kinds of Streams
 @end menu
 
-@node Streams
+@node Streams, Standard Streams,  , Input/Output on Streams
 @section Streams
 
 For historical reasons, the type of the C data structure that represents
@@ -70,7 +68,7 @@ deal only with pointers to these objects (that is, @code{FILE *} values)
 rather than the objects themselves.
 
 
-@node Standard Streams
+@node Standard Streams, Opening Streams, Streams, Input/Output on Streams
 @section Standard Streams
 @cindex standard streams
 @cindex streams, standard
@@ -117,7 +115,7 @@ provide similar mechanisms, but the details of how to use them can vary.
 It is probably not a good idea to close any of the standard streams.
 
 
-@node Opening Streams
+@node Opening Streams, Closing Streams, Standard Streams, Input/Output on Streams
 @section Opening Streams
 
 @cindex opening a stream
@@ -173,7 +171,7 @@ to the end of the file.
 
 Any of the above sequences can also be followed by a character @samp{b}
 to indicate that a binary (rather than text) stream should be created;
-see @ref{Text and Binary Streams}.  If both @samp{+} and @samp{b} are
+see @ref{Binary Streams}.  If both @samp{+} and @samp{b} are
 specified, they can appear in either order.  For example, @code{"r+b"}
 and @code{"rb+"} are equivalent; they both specify an existing binary
 file being opened for both read and write access.  In GNU and other
@@ -241,7 +239,7 @@ in which use of a standard stream for certain purposes is hard-coded.
 @end deftypefun
 
 
-@node Closing Streams
+@node Closing Streams, Simple Output, Opening Streams, Input/Output on Streams
 @section Closing Streams
 
 @cindex closing a stream
@@ -277,7 +275,7 @@ Handling}), open streams might not be closed properly.  Buffered output
 may not be flushed and files may not be complete.  For more information
 on buffering of streams, see @ref{Stream Buffering}.
 
-@node Simple Output
+@node Simple Output, Character Input, Closing Streams, Input/Output on Streams
 @section Simple Output by Characters or Lines
 
 @cindex writing to a stream, by characters
@@ -357,7 +355,7 @@ This function writes the word @var{w} (that is, an @code{int}) to
 recommend you use @code{fwrite} instead (@pxref{Block Input/Output}).
 @end deftypefun
 
-@node Character Input
+@node Character Input, Line Input, Simple Output, Input/Output on Streams
 @section Character Input
 
 @cindex reading from a stream, by characters
@@ -433,7 +431,7 @@ It's provided for compatibility with SVID.  We recommend you use
 @code{fread} instead (@pxref{Block Input/Output}).
 @end deftypefun
 
-@node Line Input
+@node Line Input, Unreading, Character Input, Input/Output on Streams
 @section Line-Oriented Input
 
 Since many programs interpret input on the basis of lines, it's
@@ -530,7 +528,7 @@ The GNU library includes it for compatibility only.  You should
 @strong{always} use @code{fgets} or @code{getline} instead.
 @end deftypefn
 
-@node Unreading
+@node Unreading, Formatted Output, Line Input, Input/Output on Streams
 @section Unreading
 @cindex peeking at input
 @cindex unreading characters
@@ -547,11 +545,11 @@ Unreading a character makes it available to be input again from the stream,
 by  the next call to @code{fgetc} or other input function on that stream.
 
 @menu
-* Unreading Idea::    An explanation of unreading with pictures.
-* How Unread::        How to call @code{ungetc} to do unreading.
+* Unreading Idea::              An explanation of unreading with pictures.
+* How Unread::                  How to call @code{ungetc} to do unreading.
 @end menu
 
-@node Unreading Idea
+@node Unreading Idea, How Unread,  , Unreading
 @subsection What Unreading Means
 
 Here is a pictorial explanation of unreading.  Suppose you have a
@@ -592,7 +590,7 @@ f  o  o  b  a  r
 @noindent
 so that the next input characters will be @samp{9} and @samp{b}.
 
-@node How Unread
+@node How Unread,  , Unreading Idea, Unreading
 @subsection Using @code{ungetc} To Do Unreading
  
 The function to unread a character is called @code{ungetc}, because it
@@ -649,7 +647,7 @@ skip_whitespace (FILE *stream)
 @}
 @end example
 
-@node Formatted Output
+@node Formatted Output, Customizing Printf, Unreading, Input/Output on Streams
 @section Formatted Output
 
 @cindex format string, for @code{printf}
@@ -668,23 +666,23 @@ most concise way to perform output.  These functions are especially
 useful for printing error messages, tables of data, and the like.
 
 @menu
-* Formatted Output Basics::             Some examples to get you started.
-* Output Conversion Syntax::            General syntax of conversion
+* Formatted Output Basics::     Some examples to get you started.
+* Output Conversion Syntax::    General syntax of conversion
                                          specifications.
-* Table of Output Conversions::         Summary of output conversions and
+* Table of Output Conversions::  Summary of output conversions and
                                          what they do.
-* Integer Conversions::                 Details about formatting of integers.
-* Floating-Point Conversions::          Details about formatting of
+* Integer Conversions::         Details about formatting of integers.
+* Floating-Point Conversions::  Details about formatting of
                                          floating-point numbers.
-* Other Output Conversions::            Details about formatting of strings,
+* Other Output Conversions::    Details about formatting of strings,
                                          characters, pointers, and the like.
-* Formatted Output Functions::          Descriptions of the actual functions.
-* Variable Arguments Output Functions:: @code{vprintf} and friends.
-* Parsing a Template String::           What kinds of args
+* Formatted Output Functions::  Descriptions of the actual functions.
+* Variable Arguments Output Functions::  @code{vprintf} and friends.
+* Parsing a Template String::   What kinds of args
                                          does a given template call for?
 @end menu
 
-@node Formatted Output Basics
+@node Formatted Output Basics, Output Conversion Syntax,  , Formatted Output
 @subsection Formatted Output Basics
 
 The @code{printf} function can be used to print any number of arguments.
@@ -744,7 +742,7 @@ reasonable free-format output without using any of the modifiers at all.
 The modifiers are mostly used to make the output look ``prettier'' in
 tables.
 
-@node Output Conversion Syntax
+@node Output Conversion Syntax, Table of Output Conversions, Formatted Output Basics, Formatted Output
 @subsection Output Conversion Syntax
 
 This section provides details about the precise syntax of conversion
@@ -826,7 +824,7 @@ between the different conversion specifiers.  See the descriptions of the
 individual conversions for information about the particular options that
 they use.
 
-@node Table of Output Conversions
+@node Table of Output Conversions, Integer Conversions, Output Conversion Syntax, Formatted Output
 @subsection Table of Output Conversions
 @cindex output conversions, for @code{printf}
 
@@ -895,7 +893,7 @@ the correct types, the results are unpredictable.  If you supply more
 arguments than conversion specifications, the extra argument values are
 simply ignored; this is sometimes useful.
 
-@node Integer Conversions
+@node Integer Conversions, Floating-Point Conversions, Table of Output Conversions, Formatted Output
 @subsection Integer Conversions
 
 This section describes the options for the @samp{%d}, @samp{%i},
@@ -1006,7 +1004,7 @@ various format options, using the template string:
 @end example
 
 
-@node Floating-Point Conversions
+@node Floating-Point Conversions, Other Output Conversions, Integer Conversions, Formatted Output
 @subsection Floating-Point Conversions
 
 This section discusses the conversion specifications for floating-point
@@ -1105,7 +1103,7 @@ Here is the output:
 
 Notice how the @samp{%g} conversion drops trailing zeros.
 
-@node Other Output Conversions
+@node Other Output Conversions, Formatted Output Functions, Floating-Point Conversions, Formatted Output
 @subsection Other Output Conversions
 
 This section describes miscellaneous conversions for @code{printf}.
@@ -1198,7 +1196,7 @@ conversion doesn't use an argument, and no flags, field width,
 precision, or type modifiers are permitted.
 
 
-@node Formatted Output Functions
+@node Formatted Output Functions, Variable Arguments Output Functions, Other Output Conversions, Formatted Output
 @subsection Formatted Output Functions
 
 This section describes how to call @code{printf} and related functions.
@@ -1310,7 +1308,7 @@ make_message (char *name, char *value)
 @end smallexample
 @end deftypefun
 
-@node Variable Arguments Output Functions
+@node Variable Arguments Output Functions, Parsing a Template String, Formatted Output Functions, Formatted Output
 @subsection Variable Arguments Output Functions
 
 The functions @code{vprintf} and friends are provided so that you can
@@ -1419,7 +1417,7 @@ You could call @code{eprintf} like this:
 eprintf ("file `%s' does not exist\n", filename);
 @end example
 
-@node Parsing a Template String
+@node Parsing a Template String,  , Variable Arguments Output Functions, Formatted Output
 @subsection Parsing a Template String
 @cindex parsing a template string
 
@@ -1557,7 +1555,7 @@ a base type of @code{PA_DOUBLE} to indicate a type of @code{long double}.
 interpreter, showing how one might validate a list of args and then
 call @code{vprintf}.
 
-@node Customizing Printf
+@node Customizing Printf, Formatted Input, Formatted Output, Input/Output on Streams
 @section Customizing Printf
 @cindex customizing @code{printf}
 @cindex defining new @code{printf} conversions
@@ -1581,17 +1579,17 @@ The facilities of this section are declared in the header file
 @file{printf.h}.
 
 @menu
-* Registering New Conversions::
-* Conversion Specifier Options::
-* Defining the Output Handler::
-* Printf Extension Example::
+* Registering New Conversions::  
+* Conversion Specifier Options::  
+* Defining the Output Handler::  
+* Printf Extension Example::    
 @end menu
 
 @strong{Portability Note:} The ability to extend the syntax of
 @code{printf} template strings is a GNU extension.  ANSI standard C has
 nothing similar.
 
-@node Registering New Conversions
+@node Registering New Conversions, Conversion Specifier Options,  , Customizing Printf
 @subsection Registering New Conversions
 
 The function to register a new output conversion is
@@ -1627,7 +1625,7 @@ not a good idea because of the potential for confusion.  Library routines
 written by other people could break if you do this.
 @end deftypefun
 
-@node Conversion Specifier Options
+@node Conversion Specifier Options, Defining the Output Handler, Registering New Conversions, Customizing Printf
 @subsection Conversion Specifier Options
 
 If you define a meaning for @samp{%q}, what if the template contains
@@ -1702,7 +1700,7 @@ width.  The value is @code{'0'} if the @samp{0} flag was specified, and
 @end deftp
 
 
-@node Defining the Output Handler
+@node Defining the Output Handler, Printf Extension Example, Conversion Specifier Options, Customizing Printf
 @subsection Defining the Output Handler
 
 Now let's look at how to define the handler and arginfo functions
@@ -1771,7 +1769,7 @@ This type is used to describe functions that return information about
 the number and type of arguments used by a conversion specifier.
 @end deftp
 
-@node Printf Extension Example
+@node Printf Extension Example,  , Defining the Output Handler, Customizing Printf
 @subsection Printf Extension Example
 
 Here is an example showing how to define a @code{printf} handler function.
@@ -1844,7 +1842,7 @@ The output produced by this program looks like:
 |<Widget 0xffeffb7c: mywidget>      |
 @end example
 
-@node Formatted Input
+@node Formatted Input, Block Input/Output, Customizing Printf, Input/Output on Streams
 @section Formatted Input
 
 @cindex formatted input from a stream
@@ -1865,10 +1863,10 @@ reading arbitrary values under the control of a @dfn{format string} or
 * String Input Conversions::    Details of conversions for reading strings.
 * Other Input Conversions::     Details of miscellaneous other conversions.
 * Formatted Input Functions::   Descriptions of the actual functions.
-* Variable Arguments Input Functions::   @code{vscanf} and friends.
+* Variable Arguments Input Functions::  @code{vscanf} and friends.
 @end menu
 
-@node Formatted Input Basics
+@node Formatted Input Basics, Input Conversion Syntax,  , Formatted Input
 @subsection Formatted Input Basics
 
 Calls to @code{scanf} are superficially similar to calls to
@@ -1927,7 +1925,7 @@ a parser, rather than using @code{scanf}.  For more information about
 this, see @cite{The Bison Reference Manual}.
 @c ??? Don't use @cite, use @xref with five args.
 
-@node Input Conversion Syntax
+@node Input Conversion Syntax, Table of Input Conversions, Formatted Input Basics, Formatted Input
 @subsection Input Conversion Syntax
 
 A @code{scanf} template string is a string that contains ordinary
@@ -1992,7 +1990,7 @@ between the different conversion specifiers.  See the descriptions of the
 individual conversions for information about the particular options that
 they use.
 
-@node Table of Input Conversions
+@node Table of Input Conversions, Numeric Input Conversions, Input Conversion Syntax, Formatted Input
 @subsection Table of Input Conversions
 @cindex input conversions, for @code{scanf}
 
@@ -2058,7 +2056,7 @@ that perform assignments, or if the arguments are not of the correct
 types, the behavior is also undefined.  On the other hand, if there are
 extra arguments, their values are simply ignored.
 
-@node Numeric Input Conversions
+@node Numeric Input Conversions, String Input Conversions, Table of Input Conversions, Formatted Input
 @subsection Numeric Input Conversions
 
 This section describes the @code{scanf} conversions for reading numeric
@@ -2129,7 +2127,7 @@ Specifies that the argument is of type @code{double *}.
 Specifies that the argument is of type @code{long double *}.
 @end table
 
-@node String Input Conversions
+@node String Input Conversions, Other Input Conversions, Numeric Input Conversions, Formatted Input
 @subsection String Input Conversions
 
 This section describes the @code{scanf} input conversions for reading
@@ -2231,7 +2229,7 @@ probably get a matching error instead if the input string is too long,
 and you can detect this and report it properly.
 
 
-@node Other Input Conversions
+@node Other Input Conversions, Formatted Input Functions, String Input Conversions, Formatted Input
 @subsection Other Input Conversions
 
 This section describes the miscellaneous input conversions.
@@ -2261,7 +2259,7 @@ Finally, the @samp{%%} conversion matches a literal @samp{%} character
 in the input stream, without using an argument.  This conversion does
 not permit any flags, field width, or type modifier to be specified.
 
-@node Formatted Input Functions
+@node Formatted Input Functions, Variable Arguments Input Functions, Other Input Conversions, Formatted Input
 @subsection Formatted Input Functions
 
 Here are the descriptions of the functions for performing formatted
@@ -2303,7 +2301,7 @@ as an argument to receive a string read under control of the @samp{%s}
 conversion.
 @end deftypefun
 
-@node Variable Arguments Input Functions
+@node Variable Arguments Input Functions,  , Formatted Input Functions, Formatted Input
 @subsection Variable Arguments Input Functions
 
 The functions @code{vscanf} and friends are provided so that you can
@@ -2339,7 +2337,7 @@ This is the equivalent of @code{sscanf} with the variable argument list
 specified directly as for @code{vscanf}.
 @end deftypefun
 
-@node Block Input/Output
+@node Block Input/Output, EOF and Errors, Formatted Input, Input/Output on Streams
 @section Block Input/Output
 
 This section describes how to do input and output operations on blocks
@@ -2397,7 +2395,7 @@ only if a write error occurs.
 @end deftypefun
 
 
-@node EOF and Errors
+@node EOF and Errors, Binary Streams, Block Input/Output, Input/Output on Streams
 @section End-Of-File and Errors
 
 @cindex end of file, on a stream
@@ -2457,7 +2455,7 @@ conditions defined for @code{write} are meaningful for these functions.
 For more information about the descriptor-level I/O functions, see
 @ref{Low-Level Input/Output}.
 
-@node Binary Streams
+@node Binary Streams, File Positioning, EOF and Errors, Input/Output on Streams
 @section Text and Binary Streams
 
 The GNU system and other POSIX-compatible operating systems organize all
@@ -2515,7 +2513,7 @@ get the same kind of stream regardless of whether you ask for binary.
 This stream can handle any file content, and has none of the
 restrictions that text streams sometimes have.
 
-@node File Positioning
+@node File Positioning, Portable Positioning, Binary Streams, Input/Output on Streams
 @section File Positioning
 @cindex file positioning on a stream
 @cindex positioning a stream
@@ -2612,7 +2610,7 @@ begining of the file.  It is equivalent to calling @code{fseek} on the
 value is discarded and the error indicator for the stream is reset.
 @end deftypefun
 
-@node Portable Positioning
+@node Portable Positioning, Stream Buffering, File Positioning, Input/Output on Streams
 @section Portable File-Position Functions
 
 On the GNU system, the file position is truly a character count.  You
@@ -2697,7 +2695,7 @@ of zero.  Otherwise, @code{fsetpos} returns a nonzero value and stores
 an implementation-defined positive value in @code{errno}.
 @end deftypefun
 
-@node Stream Buffering
+@node Stream Buffering, Temporary Files, Portable Positioning, Input/Output on Streams
 @section Stream Buffering
 
 @cindex buffering of streams
@@ -2730,7 +2728,7 @@ instead.  @xref{Low-Level Input/Output}.
 * Controlling Buffering::       How to specify what kind of buffering to use.
 @end menu
 
-@node Buffering Concepts
+@node Buffering Concepts, Flushing Buffers,  , Stream Buffering
 @subsection Buffering Concepts
 
 There are three different kinds of buffering strategies:
@@ -2784,7 +2782,7 @@ the operating system.  This requires changing the terminal mode
 have to do this separately---merely using an unbuffered stream does not
 change the modes.
 
-@node Flushing Buffers
+@node Flushing Buffers, Controlling Buffering, Buffering Concepts, Stream Buffering
 @subsection Flushing Buffers
 
 @cindex flushing a stream
@@ -2834,7 +2832,7 @@ Fortunately, this ``feature'' seems to be becoming less common.  You do
 not need to worry about this in the GNU system.
 
 
-@node Controlling Buffering
+@node Controlling Buffering,  , Flushing Buffers, Stream Buffering
 @subsection Controlling Which Kind of Buffering
 
 After opening a stream (but before any other operations have been
@@ -2958,7 +2956,7 @@ This function is provided for compatibility with old BSD code.  Use
 @end deftypefun
 
 
-@node Temporary Files
+@node Temporary Files, Other Kinds of Streams, Stream Buffering, Input/Output on Streams
 @section Temporary Files
 
 If you need to use a temporary file in your program, you can use the
@@ -3053,7 +3051,7 @@ This function is defined for SVID compatibility.
 This macro is the name of the default directory for temporary files.
 @end deftypevr
 
-@node Other Kinds of Streams
+@node Other Kinds of Streams,  , Temporary Files, Input/Output on Streams
 @section Other Kinds of Streams
 
 The GNU library provides ways for you to define additional kinds of
@@ -3073,11 +3071,11 @@ specific to GNU.  Other systems or C implementations might or might not
 provide equivalent functionality.
 
 @menu
-* String Streams::
-* Custom Streams::
+* String Streams::              
+* Custom Streams::              
 @end menu
 
-@node String Streams
+@node String Streams, Custom Streams,  , Other Kinds of Streams
 @subsection String Streams
 @cindex stream, for I/O to a string
 @cindex string stream
@@ -3203,7 +3201,7 @@ buf = `hello', size = 5
 buf = `hello, world', size = 12
 @end example
 
-@node Custom Streams
+@node Custom Streams,  , String Streams, Other Kinds of Streams
 @subsection Programming Your Own Custom Streams
 @cindex custom streams
 @cindex programming your own streams
@@ -3213,11 +3211,11 @@ arbitrary data source or writes output to an arbitrary data sink
 programmed by you.  We call these @dfn{custom streams}.
 
 @menu
-* Streams and Cookies::
-* Hook Functions::
+* Streams and Cookies::         
+* Hook Functions::              
 @end menu
 
-@node Streams and Cookies
+@node Streams and Cookies, Hook Functions,  , Custom Streams
 @subsubsection Custom Streams and Cookies
 @cindex cookie, for custom stream
 
@@ -3290,7 +3288,7 @@ The @code{fopencookie} function returns the newly created stream, or a null
 pointer in case of an error.
 @end deftypefun
 
-@node Hook Functions
+@node Hook Functions,  , Streams and Cookies, Custom Streams
 @subsubsection Custom Stream Hook Functions
 @cindex hook functions (of custom streams)
 
@@ -3324,7 +3322,7 @@ int @var{function} (void *@var{cookie}, fpos_t *@var{position}, int @var{whence}
 @end example
 
 For this function, the @code{position} and @code{whence} arguments are
-interpreted as for @code{fgetpos}; see @ref{Text and Binary Streams}.
+interpreted as for @code{fgetpos}; see @ref{Binary Streams}.
 Remember that in the GNU system, @code{fpos_t} is equivalent to
 @code{off_t} or @code{long int}, and simply represents the number of
 bytes from the beginning of the file.
index 9052e5b..90ae44e 100644 (file)
@@ -1,4 +1,4 @@
-@node String and Array Utilities
+@node String and Array Utilities, Extended Characters, Character Handling, Top
 @chapter String and Array Utilities
 
 Operations on strings (or arrays of characters) are an important part of
@@ -20,21 +20,21 @@ functions are typically highly optimized, your program may run faster
 too.
 
 @menu
-* Representation of Strings::  Introduction to basic concepts.
-* String/Array Conventions::   Whether to use a string function or an
+* Representation of Strings::   Introduction to basic concepts.
+* String/Array Conventions::    Whether to use a string function or an
                                 arbitrary array function.
-* String Length::              Determining the length of a string.
-* Copying and Concatenation::  Functions to copy the contents of strings
+* String Length::               Determining the length of a string.
+* Copying and Concatenation::   Functions to copy the contents of strings
                                 and arrays.
-* String/Array Comparison::    Functions for byte-wise and character-wise
+* String/Array Comparison::     Functions for byte-wise and character-wise
                                 comparison.
-* Collation Functions::                Functions for collating strings.
-* Search Functions::           Searching for a specific element or substring.
+* Collation Functions::         Functions for collating strings.
+* Search Functions::            Searching for a specific element or substring.
 * Finding Tokens in a String::  Splitting a string into tokens by looking
                                 for delimiters.
 @end menu
 
-@node Representation of Strings
+@node Representation of Strings, String/Array Conventions,  , String and Array Utilities
 @section Representation of Strings
 @cindex string, representation of
 
@@ -104,7 +104,7 @@ checks for overflowing the array.  Many of the library functions
 an extra byte to hold the null character that marks the end of the
 string.
 
-@node String/Array Conventions
+@node String/Array Conventions, String Length, Representation of Strings, String and Array Utilities
 @section String/Array Conventions
 
 This chapter describes both functions that work on arbitrary arrays or
@@ -137,7 +137,7 @@ other hand, when you are manipulating null-terminated strings it is
 usually more convenient to use the @samp{str} functions, unless you
 already know the length of the string in advance.
 
-@node String Length
+@node String Length, Copying and Concatenation, String/Array Conventions, String and Array Utilities
 @section String Length
 
 You can get the length of a string using the @code{strlen} function.
@@ -171,7 +171,7 @@ strlen (string)
 @end example
 @end deftypefun
 
-@node Copying and Concatenation
+@node Copying and Concatenation, String/Array Comparison, String Length, String and Array Utilities
 @section Copying and Concatenation
 
 You can use the functions described in this section to copy the contents
@@ -409,7 +409,7 @@ BSD.  Note that it is not as powerful as @code{bzero}, because the only
 value it can store is zero.
 @end deftypefun
 
-@node String/Array Comparison
+@node String/Array Comparison, Collation Functions, Copying and Concatenation, String and Array Utilities
 @section String/Array Comparison
 @cindex comparing strings and arrays
 @cindex string comparison functions
@@ -546,7 +546,7 @@ strncmp ("hello, world", "hello, stupid world!!!", 5)
 This is an obsolete alias for @code{memcmp}, derived from BSD.
 @end deftypefun
 
-@node Collation Functions
+@node Collation Functions, Search Functions, String/Array Comparison, String and Array Utilities
 @section Collation Functions
 
 @cindex collating strings
@@ -716,7 +716,7 @@ sort_strings_fast (char **array, int nstrings)
 @strong{Compatibility Note:}  The string collation functions are a new
 feature of ANSI C.  Older C dialects have no equivalent feature.
 
-@node Search Functions
+@node Search Functions, Finding Tokens in a String, Collation Functions, String and Array Utilities
 @section Search Functions
 
 This section describes library functions which perform various kinds
@@ -847,7 +847,7 @@ strpbrk ("hello, world", " \t\n,.;!?")
 @end example
 @end deftypefun
 
-@node Finding Tokens in a String
+@node Finding Tokens in a String,  , Search Functions, String and Array Utilities
 @section Finding Tokens in a String
 
 @cindex tokenizing strings
index 789329e..ced5fb6 100644 (file)
@@ -1,20 +1,20 @@
-@node System Information
+@node System Information, Representation Limits, Users and Groups, Top
 @chapter System Information
 
 This chapter contains information about functions that return 
 information about the particular machine a program is running on.
 
 @menu
-* Host Identification::                         Determining the name of the
+* Host Identification::         Determining the name of the
                                                  machine.
-* Hardware/Software Type Identification::       Determining the hardware type
+* Hardware/Software Type Identification::  Determining the hardware type
                                                  of the machine and what
                                                  operating system it is
                                                  running.
 @end menu
 
 
-@node Host Identification
+@node Host Identification, Hardware/Software Type Identification,  , System Information
 @section Host Identification
 
 The functions listed in this section access information to identify the
@@ -71,7 +71,7 @@ is usually used only at system boot time.
 @end deftypefun
 
 
-@node Hardware/Software Type Identification
+@node Hardware/Software Type Identification,  , Host Identification, System Information
 @section Hardware/Software Type Identification
 
 You can use the @code{uname} function to find out some information about
index 6cd0979..9842ae9 100644 (file)
@@ -1,4 +1,4 @@
-@node Low-Level Terminal Interface
+@node Low-Level Terminal Interface, Consistency Checking, Sockets, Top
 @chapter Low-Level Terminal Interface
 
 This chapter describes functions that are specific to terminal devices.
@@ -12,17 +12,17 @@ Most of the functions in this chapter operate on file descriptors.
 descriptor is and how to open a file descriptor for a terminal device.
 
 @menu
-* Is It a Terminal::    How to determine if a file is a terminal
+* Is It a Terminal::            How to determine if a file is a terminal
                          device, and what its name is.
-* I/O Queues::         About flow control and typeahead.
-* Canonical or Not::    Two basic styles of input processing.
-* Terminal Modes::     How to examine and modify flags controlling
+* I/O Queues::                  About flow control and typeahead.
+* Canonical or Not::            Two basic styles of input processing.
+* Terminal Modes::              How to examine and modify flags controlling
                          details of terminal I/O: echoing, signals, editing.
-* Line Control::       Sending break sequences, clearing terminal buffers...
-* Noncanon Example::   How to read single characters without echo.
+* Line Control::                Sending break sequences, clearing terminal buffers...
+* Noncanon Example::            How to read single characters without echo.
 @end menu
 
-@node Is It a Terminal
+@node Is It a Terminal, I/O Queues,  , Low-Level Terminal Interface
 @section Identifying Terminals
 @cindex terminal identification
 @cindex identifying terminals
@@ -58,7 +58,7 @@ the terminal file.  The value is a null pointer if the file descriptor
 isn't associated with a terminal, or the file name cannot be determined.
 @end deftypefun
 
-@node I/O Queues
+@node I/O Queues, Canonical or Not, Is It a Terminal, Low-Level Terminal Interface
 @section I/O Queues
 
 Many of the remaining functions in this section refer to the input and
@@ -94,7 +94,7 @@ that have been received but not yet read.  Similarly, clearing the
 terminal output queue means discarding any characters that have been
 written but not yet transmitted.
 
-@node Canonical or Not
+@node Canonical or Not, Terminal Modes, I/O Queues, Low-Level Terminal Interface
 @section Two Styles of Input: Canonical or Not
 
 POSIX systems support two basic modes of input: canonical and
@@ -131,7 +131,7 @@ The choice of canonical or noncanonical input is controlled by the
 @code{ICANON} flag in the @code{c_lflag} member of @code{struct termios}
 (@pxref{Local Modes}).
 
-@node Terminal Modes
+@node Terminal Modes, Line Control, Canonical or Not, Low-Level Terminal Interface
 @section Terminal Modes
 
 @pindex termios.h
@@ -140,20 +140,20 @@ input and output are done.  The functions, data structures, and symbolic
 constants are all declared in the header file @file{termios.h}.
 
 @menu
-* Mode Data Types::    The data type @code{struct termios} and related types.
-* Mode Functions::     Functions to read and set the terminal attributes.
-* Setting Modes::       The right way to set terminal attributes reliably.
-* Input Modes::                Flags controlling low-level input handling.
-* Output Modes::       Flags controlling low-level output handling.
-* Control Modes::      Flags controlling serial port behavior.
-* Local Modes::                Flags controlling high-level input handling.
-* Line Speed::         How to read and set the terminal line speed.
-* Special Characters:: Characters that have special effects,
+* Mode Data Types::             The data type @code{struct termios} and related types.
+* Mode Functions::              Functions to read and set the terminal attributes.
+* Setting Modes::               The right way to set terminal attributes reliably.
+* Input Modes::                 Flags controlling low-level input handling.
+* Output Modes::                Flags controlling low-level output handling.
+* Control Modes::               Flags controlling serial port behavior.
+* Local Modes::                 Flags controlling high-level input handling.
+* Line Speed::                  How to read and set the terminal line speed.
+* Special Characters::          Characters that have special effects,
                          and how to change them.
-* Noncanonical Input:: Controlling how long to wait for input.
+* Noncanonical Input::          Controlling how long to wait for input.
 @end menu
 
-@node Mode Data Types
+@node Mode Data Types, Mode Functions,  , Terminal Modes
 @subsection Terminal Mode Data Types
 @cindex terminal mode data types
 
@@ -216,7 +216,7 @@ The value of this macro is the number of elements in the @code{c_cc}
 array.
 @end deftypevr
 
-@node Mode Functions
+@node Mode Functions, Setting Modes, Mode Data Types, Terminal Modes
 @subsection Terminal Mode Functions
 @cindex terminal mode functions
 
@@ -314,7 +314,7 @@ descriptor for the same terminal that you use to read from it in
 single-character, non-echoed mode.  Instead, you have to explicitly
 switch the terminal back and forth between the two modes.
 
-@node Setting Modes
+@node Setting Modes, Input Modes, Mode Functions, Terminal Modes
 @subsection Setting Terminal Modes Properly
 
 When you set terminal modes, you should call @code{tcgetattr} first to
@@ -369,7 +369,7 @@ set_istrip (int desc, int value)
 @}
 @end example
 
-@node Input Modes
+@node Input Modes, Output Modes, Setting Modes, Terminal Modes
 @subsection Input Modes
 
 This section describes the terminal attribute flags that control
@@ -504,7 +504,7 @@ not set, then START and STOP can be read as ordinary characters.
 @xref{Start/Stop Characters}.
 @end table
 
-@node Output Modes
+@node Output Modes, Control Modes, Input Modes, Terminal Modes
 @subsection Output Modes
 
 This section describes the terminal flags and fields that control how
@@ -531,7 +531,7 @@ If this bit isn't set, the characters are transmitted as-is.
 
 @c ??? Add here the flags and fields libc actually supports.
 
-@node Control Modes
+@node Control Modes, Local Modes, Output Modes, Terminal Modes
 @subsection Control Modes
 
 This section describes the terminal flags and fields that control
@@ -646,7 +646,7 @@ This specifies seven bits per byte.
 This specifies eight bits per byte.
 @end table
 
-@node Local Modes
+@node Local Modes, Line Speed, Control Modes, Terminal Modes
 @subsection Local Modes
 
 This section describes the flags for the @code{c_lflag} member of the
@@ -756,7 +756,7 @@ attempt to write to the terminal.  @xref{Access to the Controlling
 Terminal}.
 @end table
 
-@node Line Speed
+@node Line Speed, Special Characters, Local Modes, Terminal Modes
 @subsection Line Speed
 @cindex line speed
 @cindex baud rate
@@ -902,7 +902,7 @@ B300  B600  B1200  B1800  B2400  B4800
 B9600  B19200  B38400
 @end example
 
-@node Special Characters
+@node Special Characters, Noncanonical Input, Line Speed, Terminal Modes
 @subsection Special Characters
 
 In canonical input, the terminal driver recognizes a number of special
@@ -929,12 +929,12 @@ Parameters}, for more information about how to tell whether the
 operating system you are using supports @code{_POSIX_VDISABLE}.
 
 @menu
-* Editing Characters::
-* Signal Characters::
-* Start/Stop Characters::
+* Editing Characters::          
+* Signal Characters::           
+* Start/Stop Characters::       
 @end menu
 
-@node Editing Characters
+@node Editing Characters, Signal Characters,  , Special Characters
 @subsubsection Characters for Input Editing
 
 These special characters are active only in canonical input mode.
@@ -1005,7 +1005,7 @@ of input are discarded.  The kill character itself is discarded too.
 The KILL character is usually @kbd{C-u}.
 @end deftypevr
 
-@node Signal Characters
+@node Signal Characters, Start/Stop Characters, Editing Characters, Special Characters
 @subsubsection Characters that Cause Signals
 
 These special characters may active in either canonical or noncanonical
@@ -1070,7 +1070,7 @@ mechanism, the program should send a @code{SIGTSTP} signal to the
 process group of the process, not just to the process itself.
 @xref{Signaling Another Process}.
 
-@node Start/Stop Characters
+@node Start/Stop Characters,  , Signal Characters, Special Characters
 @subsubsection Special Characters for Flow Control
 
 These special characters may active in either canonical or noncanonical
@@ -1115,7 +1115,7 @@ able to change this value---the hardware may insist on using @kbd{C-s}
 regardless of what you specify.
 @end deftypevr
 
-@node Noncanonical Input
+@node Noncanonical Input,  , Special Characters, Terminal Modes
 @subsection Noncanonical Input
 
 In noncanonical input mode, the special editing characters such as
@@ -1218,7 +1218,7 @@ input and the EOF and EOL slots are used only in canonical input, but it
 isn't very clean.  The GNU library allocates separate slots for these
 uses.
 
-@node Line Control
+@node Line Control, Noncanon Example, Terminal Modes, Low-Level Terminal Interface
 @section Line Control Functions
 @cindex terminal line control functions
 
@@ -1379,7 +1379,7 @@ A bad value was supplied as the @var{action} argument.
 @end table
 @end deftypefun
 
-@node Noncanon Example
+@node Noncanon Example,  , Line Control, Low-Level Terminal Interface
 @section Noncanonical Mode Example
 
 Here is an example program that shows how you can set up a terminal
index cfc2daa..ebbb246 100644 (file)
@@ -1,4 +1,4 @@
-@node Date and Time
+@node Date and Time, Non-Local Exits, Arithmetic, Top
 @chapter Date and Time
 
 This chapter describes functions for manipulating dates and times,
@@ -22,13 +22,13 @@ an Alarm}.
 @end itemize
 
 @menu
-* Processor Time::     Measures processor time used by a program.
-* Calendar Time::              Manipulation of ``real'' dates and times.
-* Setting an Alarm::    Sending a signal after a specified time.
-* Sleeping::            Waiting for a period of time.
+* Processor Time::              Measures processor time used by a program.
+* Calendar Time::               Manipulation of ``real'' dates and times.
+* Setting an Alarm::            Sending a signal after a specified time.
+* Sleeping::                    Waiting for a period of time.
 @end menu
 
-@node Processor Time
+@node Processor Time, Calendar Time,  , Date and Time
 @section Processor Time
 
 If you're trying to optimize your program or measure its efficiency, it's
@@ -46,11 +46,11 @@ of a single program invocation.
 @cindex time, elapsed CPU
 
 @menu
-* Basic CPU Time::      The @code{clock} function.
-* Detailed CPU Time::   The @code{times} function.
+* Basic CPU Time::              The @code{clock} function.
+* Detailed CPU Time::           The @code{times} function.
 @end menu
 
-@node Basic CPU Time
+@node Basic CPU Time, Detailed CPU Time,  , Processor Time
 @subsection Basic CPU Time Inquiry
 
 To get the elapsed CPU time used by a process, you can use the
@@ -117,7 +117,7 @@ value @code{(clock_t)(-1)}.
 @end deftypefun
 
 
-@node Detailed CPU Time
+@node Detailed CPU Time,  , Basic CPU Time, Processor Time
 @subsection Detailed Elapsed CPU Time Inquiry
 
 The @code{times} function returns more detailed information about
@@ -176,7 +176,7 @@ value returned by the @code{clock} function is equivalent to the sum of
 the @code{tms_utime} and @code{tms_stime} fields returned by
 @code{times}.
 
-@node Calendar Time
+@node Calendar Time, Setting an Alarm, Processor Time, Date and Time
 @section Calendar Time
 
 This section describes facilities for keeping track of dates and times
@@ -212,17 +212,17 @@ date and time values.
 @end itemize
 
 @menu
-* Simple Calendar Time::       Facilities for manipulating calendar time.
-* High-Resolution Calendar::   A time representation with greater precision.
-* Broken-down Time::           Facilities for manipulating local time.
-* Formatting Date and Time::   Converting times to strings.
-* TZ Variable::                        How users specify the time zone.
-* Time Zone Functions::                Functions to examine or specify the time zone.
-* Time Functions Example::     An example program showing use of some of
+* Simple Calendar Time::        Facilities for manipulating calendar time.
+* High-Resolution Calendar::    A time representation with greater precision.
+* Broken-down Time::            Facilities for manipulating local time.
+* Formatting Date and Time::    Converting times to strings.
+* TZ Variable::                 How users specify the time zone.
+* Time Zone Functions::         Functions to examine or specify the time zone.
+* Time Functions Example::      An example program showing use of some of
                                 the time functions.
 @end menu
 
-@node Simple Calendar Time
+@node Simple Calendar Time, High-Resolution Calendar,  , Calendar Time
 @subsection Simple Calendar Time
 
 This section describes the @code{time_t} data type for representing
@@ -267,7 +267,7 @@ time is not available, the value @code{(time_t)(-1)} is returned.
 @end deftypefun
 
 
-@node High-Resolution Calendar
+@node High-Resolution Calendar, Broken-down Time, Simple Calendar Time, Calendar Time
 @subsection High-Resolution Calendar
 
 The @code{time_t} data type used to represent calendar times has a 
@@ -412,7 +412,7 @@ You do not have privilege to set the time.
 and @code{adjtime} functions are derived from BSD.  
 
 
-@node Broken-down Time
+@node Broken-down Time, Formatting Date and Time, High-Resolution Calendar, Calendar Time
 @subsection Broken-down Time
 @cindex broken-down time
 @cindex calendar time and broken-down time
@@ -529,7 +529,7 @@ Calling @code{mktime} also sets the variable @code{tzname} with
 information about the current time zone.  @xref{Time Zone Functions}.
 @end deftypefun
 
-@node Formatting Date and Time
+@node Formatting Date and Time, TZ Variable, Broken-down Time, Calendar Time
 @subsection Formatting Date and Time
 
 The functions described in this section format time values as strings.
@@ -676,7 +676,7 @@ repeat the call, providing a bigger array.
 For an example of @code{strftime}, see @ref{Time Functions Example}.
 @end deftypefun
 
-@node TZ Variable
+@node TZ Variable, Time Zone Functions, Formatting Date and Time, Calendar Time
 @subsection Specifying the Time Zone with @code{TZ}
 
 In the GNU system, a user can specify the time zone by means of the
@@ -786,7 +786,7 @@ operation chooses a time zone by default.  Each operating system has its
 own rules for choosing the default time zone, so there is little we can
 say about them.
 
-@node Time Zone Functions
+@node Time Zone Functions, Time Functions Example, TZ Variable, Calendar Time
 @subsection Functions and Variables for Time Zones
 
 @comment time.h
@@ -835,7 +835,7 @@ This variable has a nonzero value if the standard U.S. daylight savings
 time rules apply.
 @end deftypevar
 
-@node Time Functions Example
+@node Time Functions Example,  , Time Zone Functions, Calendar Time
 @subsection Time Functions Example
 
 Here is an example program showing the use of some of the local time and
@@ -880,7 +880,7 @@ The time is 01:02 PM.
 @end example
 
 
-@node Setting an Alarm
+@node Setting an Alarm, Sleeping, Calendar Time, Date and Time
 @section Setting an Alarm
 
 The @code{alarm} and @code{setitimer} functions provide a mechanism for a
@@ -1050,7 +1050,7 @@ functions are derived from BSD Unix, while the @code{alarm} function is
 specified by the POSIX.1 standard.  @code{setitimer} is more powerful than
 @code{alarm}, but @code{alarm} is more widely used.
 
-@node Sleeping
+@node Sleeping,  , Setting an Alarm, Date and Time
 @section Sleeping
 
 The function @code{sleep} gives a simple way to make the program wait
index 92aa86d..a8cc80e 100644 (file)
@@ -1,4 +1,4 @@
-@node Users and Groups
+@node Users and Groups, System Information, Job Control, Top
 @chapter Users and Groups
 @cindex persona
 
@@ -25,31 +25,29 @@ database of all the defined groups.  There are library functions you
 can use to examine these databases.
 
 @menu
-* User and Group IDs::  Each user has a unique numeric ID; likewise for groups.
-* Process Persona::    The user IDs and group IDs of a process.
-* Why Change Persona:: Why a program might need to change
+* User and Group IDs::          Each user has a unique numeric ID; likewise for groups.
+* Process Persona::             The user IDs and group IDs of a process.
+* Why Change Persona::          Why a program might need to change
                         its user and/or group IDs.
-* How Change Persona:: Restrictions on changing the user and group IDs.
-* Reading Persona::    How to examine the process's user and group IDs.
-* Setting User ID::
-* Setting Groups::
-* Enable/Disable Setuid:: 
-* Setuid Example::     A program designed to use setuid.
-
-* Tips for Setuid::
-
-* Who Logged In::      Getting the name of the user who logged in,
+* How Change Persona::          Restrictions on changing the user and group IDs.
+* Reading Persona::             How to examine the process's user and group IDs.
+* Setting User ID::             
+* Setting Groups::              
+* Enable/Disable Setuid::       
+* Setuid Program Example::      Setuid Program Example
+* Tips for Setuid::             
+* Who Logged In::               Getting the name of the user who logged in,
                         or of the real user ID of the current process.
 
-* User Database::      Functions and data structures for
+* User Database::               Functions and data structures for
                          accessing the user database.
-* Group Database::     Functions and data structures for
+* Group Database::              Functions and data structures for
                          accessing the group database.
-* Database Example::   Example program showing use of database
+* Database Example::            Example program showing use of database
                         inquiry functions.
 @end menu
 
-@node User and Group IDs
+@node User and Group IDs, Process Persona,  , Users and Groups
 @section User and Group IDs
 
 @cindex login name
@@ -70,7 +68,7 @@ not accessible to users who are not a member of that group.  Each group
 has a @dfn{group name} and @dfn{group ID}.  @xref{Group Database},
 for how to find information about a group ID or group name.
 
-@node Process Persona
+@node Process Persona, Why Change Persona, User and Group IDs, Users and Groups
 @section The Persona of a Process
 
 @cindex effective user ID
@@ -107,7 +105,7 @@ its permission to access files, see @ref{Access Permission}.
 The user ID of a process also controls permissions for sending signals
 using the @code{kill} function.  @xref{Signaling Another Process}.
 
-@node Why Change Persona
+@node Why Change Persona, How Change Persona, Process Persona, Users and Groups
 @section Why Change the Persona of a Process?
 
 The most obvious situation where it is necessary for a process to change
@@ -139,7 +137,7 @@ the game program wants to update this file, it can change its effective
 user ID to be that for @samp{games}.  In effect, the program must
 adopt the persona of @samp{games} so it can write the scores file.
 
-@node How Change Persona
+@node How Change Persona, Reading Persona, Why Change Persona, Users and Groups
 @section How an Application can Change Persona
 @cindex @code{setuid} programs
 
@@ -168,7 +166,7 @@ A process can always change its effective user (or group) ID back to its
 real ID.  Programs do this so as to turn off their special privileges
 when they are not needed, which makes for more robustness.
 
-@node Reading Persona
+@node Reading Persona, Setting User ID, How Change Persona, Users and Groups
 @section Reading the Persona of a Process
 
 Here are detailed descriptions of the functions for reading the user and
@@ -246,7 +244,7 @@ read_all_groups ()
 @end example
 @end deftypefun
 
-@node Setting User ID
+@node Setting User ID, Setting Groups, Reading Persona, Users and Groups
 @section Setting the User ID
 
 This section describes the functions for altering the user ID
@@ -306,7 +304,7 @@ Privileges}.
 @end table
 @end deftypefun
 
-@node Setting Groups
+@node Setting Groups, Enable/Disable Setuid, Setting User ID, Users and Groups
 @section Setting the Group IDs
 
 @comment unistd.h
@@ -370,7 +368,7 @@ set the process's supplementary group IDs to be the normal default for
 the user name @var{user}.  The group ID @var{gid} is also included.
 @end deftypefun
 
-@node Enable/Disable Setuid
+@node Enable/Disable Setuid, Setuid Program Example, Setting Groups, Users and Groups
 @section Turning Setuid Access On and Off
 
 You can use @code{setreuid} to swap the real and effective user IDs of
@@ -419,7 +417,7 @@ setuid (game_user_id);
 Throughout the process, the real user ID remains @code{jdoe} and the 
 saved user ID remains @code{games}.
 
-@node Setuid Program Example
+@node Setuid Program Example, Tips for Setuid, Enable/Disable Setuid, Users and Groups
 @section Setuid Program Example
 
 Here's an example showing how to set up a program that changes its
@@ -555,7 +553,7 @@ record_score (int score)
 @}
 @end example
 
-@node Tips for Setuid
+@node Tips for Setuid, Who Logged In, Setuid Program Example, Users and Groups
 @section Tips for Writing Setuid Programs
 
 It is easy for setuid programs to give the user access that isn't 
@@ -599,7 +597,7 @@ would ordinarily have permission to access those files.  You can use the
 uses the real user and group IDs, rather than the effective IDs.
 @end itemize
 
-@node Who Logged In
+@node Who Logged In, User Database, Tips for Setuid, Users and Groups
 @section Identifying Who Logged In
 @cindex login name, determining
 @cindex user ID, determining
@@ -653,7 +651,7 @@ For most purposes, it is more useful to use the environment variable
 precisely because the user can set @code{LOGNAME} arbitrarily.
 @xref{Environment Variables}.
 
-@node User Database
+@node User Database, Group Database, Who Logged In, Users and Groups
 @section User Database
 @cindex user database
 @cindex password database
@@ -665,13 +663,13 @@ registered users.  The database itself is kept in the file
 network server gives access to it.
 
 @menu
-* User Data Structure::
-* Lookup User::
-* Scan All Users::
-* Writing a User Entry::
+* User Data Structure::         
+* Lookup User::                 
+* Scanning All Users::          Scanning the List of All Users
+* Writing a User Entry::        
 @end menu
 
-@node User Data Structure
+@node User Data Structure, Lookup User,  , User Database
 @subsection The Data Structure that Describes a User
 
 The functions and data structures for accessing the system user database
@@ -712,7 +710,7 @@ be used.
 @end table
 @end deftp
 
-@node Lookup User
+@node Lookup User, Scanning All Users, User Data Structure, User Database
 @subsection Looking Up One User
 @cindex converting user ID to user name
 @cindex converting user name to user ID
@@ -743,7 +741,7 @@ This structure may be overwritten on subsequent calls to
 A null pointer value indicates there is no user named @var{name}.
 @end deftypefun
 
-@node Scanning All Users
+@node Scanning All Users, Writing a User Entry, Lookup User, User Database
 @subsection Scanning the List of All Users
 @cindex scanning the user list
 
@@ -797,7 +795,7 @@ wish to save the information.
 This function closes the internal stream used by @code{getpwent}.
 @end deftypefun
 
-@node Writing a User Entry
+@node Writing a User Entry,  , Scanning All Users, User Database
 @subsection Writing a User Entry
 
 @comment pwd.h
@@ -817,7 +815,7 @@ would inevitably leave out much of the important information.
 The function @code{putpwent} is declared in @file{pwd.h}.
 @end deftypefun
 
-@node Group Database
+@node Group Database, Database Example, User Database, Users and Groups
 @section Group Database
 @cindex group database
 @pindex /etc/group
@@ -828,12 +826,12 @@ registered groups.  The database itself is kept in the file
 service provides access to it.
 
 @menu
-* Group Data Structure::
-* Lookup Group::
-* Scan All Groups::
+* Group Data Structure::        
+* Lookup Group::                
+* Scanning All Groups::         Scanning the List of All Groups
 @end menu
 
-@node Group Data Structure
+@node Group Data Structure, Lookup Group,  , Group Database
 @subsection The Data Structure for a Group
 
 The functions and data structures for accessing the system group
@@ -860,7 +858,7 @@ null pointer.
 @end table
 @end deftp
 
-@node Lookup Group
+@node Lookup Group, Scanning All Groups, Group Data Structure, Group Database
 @subsection Looking Up One Group
 @cindex converting group name to group ID
 @cindex converting group ID to group name
@@ -891,7 +889,7 @@ This structure may be overwritten by subsequent calls to
 A null pointer indicates there is no group named @var{name}.
 @end deftypefun
 
-@node Scanning All Groups
+@node Scanning All Groups,  , Lookup Group, Group Database
 @subsection Scanning the List of All Groups
 @cindex scanning the group list
 
@@ -946,7 +944,7 @@ wish to save the information.
 This function closes the internal stream used by @code{getgrent}.
 @end deftypefun
 
-@node Database Example
+@node Database Example,  , Group Database, Users and Groups
 @section User and Group Database Example
 
 Here is an example program showing the use of the system database inquiry