home *** CD-ROM | disk | FTP | other *** search
- .Ch "A Tour Through the C News Libraries and Include Files"
- .Ix libraries
- .Ix files include
- .SH
- libc and friends
- .Df libc
- .LP
- .I libc
- contains routines that are sufficiently useful
- and general that they could profitably be added to
- one's C library.
- Indeed,
- on some systems they are in the C library.
- Notable inventions include
- .I fgetmfs
- .Df fgetmfs
- .Ix "read long lines"
- which safely reads arbitrarily-long input lines;
- it has an
- .B fgetmfs.h
- over in the header directories.
- .I ldiv
- .Df ldiv
- is the ANSI one,
- if you need it.
- .I memlist
- .Df memlist
- is a
- package to ease keeping track of a lot of allocated memory.
- .I stdfdopen
- .Df stdfdopen
- is invoked by setuid programs
- to ensure that the standard file descriptors are indeed open,
- opening
- .B /dev/null
- on each closed standard descriptor.
- .\".B libc/memcpy.fast
- .\"contains some alternate
- .\"implementations of
- .\".I memcpy (3)
- .\"which may be faster than the ones in your local C library.
- .LP
- .B libstdio
- .Df libstdio
- .Ix stdio "faster internals"
- contains new (faster) guts for
- the original
- .UX
- .I stdio
- library;
- if they compile on your V7,
- 4BSD
- or System III
- system,
- you may want to use them instead of the default versions
- in your C library.
- On System V,
- these routines are only slightly faster than the versions in the C library.
- .LP
- .B libfake
- .Df libfake
- contains things that probably should be in your C library,
- but might not be,
- and a couple of fake routines for system calls
- you might not have.
- .SH
- libcnews
- .LP
- .Df libcnews
- .B libcnews
- contains functions of general use to news software,
- but not the world at large.
- .I complain
- .Df complain
- is like
- .I warning ,
- but never prints the symbolic value of
- .I errno .
- .PP
- .Ix lock
- .Df lockdebug
- .Df newslock
- .Df newsunlock
- .Df errunlock
- .Df nemalloc
- There is a locking package,
- containing
- .I lockdebug ,
- .I newslock ,
- .I newsunlock ,
- .I errunlock ,
- and
- .I nemalloc .
- .I lockdebug
- enables or disables lock debugging.
- .I newslock
- attempts to lock
- the news transport layer
- against
- read-then-write access to the
- .B active
- file,
- writing to the
- .Ix history
- .Ix files batch
- .B history *,
- .B log ,
- .B errlog ,
- and batch files.
- It returns only when it has the lock;
- in the meantime it sleeps and retries until it gets the lock.
- There is no timeout;
- this is a feature.
- .I newsunlock
- removes the above-mentioned lock
- if this process locked the news system.
- .I errunlock
- is like
- .I error
- except that it
- unlocks the news system
- (via
- .I newsunlock)
- before exiting;
- it is should always be called instead of
- .I exit (3)
- or
- .I exit (2)
- if there is any chance that this process has locked the news system.
- .I nemalloc
- is like
- .I emalloc
- but it calls
- .I errunlock
- if it can't allocate memory.
- .PP
- .Ix ltoza
- .I ltoza
- converts a
- .B "long int"
- to a string of a given width,
- containing the decimal representation,
- zero-padding as needed on the left.
- .I ltozan
- .Ix ltozan
- is like
- .I ltoza
- but omits the terminating NUL,
- so it can be used to overwrite a string without truncating it.
- .I ngmatch
- .Ix ngmatch
- .Ix "newsgroup matching"
- returns a truth-value
- resulting from comparing
- a list of newsgroup patterns
- and
- a list of newsgroups.
- One may substitute ``distribution'' for ``newsgroup''.
- .PP
- .Ix files names
- .Ix configuration
- .Df artfile
- .Df fullartfile
- .Df ctlfile
- .Df binfile
- .Df cd
- .Df newsumask
- There is a package of pathname manipulators.
- .I artfile
- returns a name for its filename argument,
- assumed to be relative to
- .I $NEWSARTS ;
- .I fullartfile
- promises to return a fully-qualified path name.
- .I ctlfile
- returns a name for its filename argument,
- assumed to be relative to
- .I $NEWSCTL .
- .I binfile
- returns a name for its filename argument,
- assumed to be relative to
- .I $NEWSBIN .
- .I cd
- changes to its argument directory,
- check for errors,
- and notes the directory name,
- by making a private copy,
- for later optimisations.
- .I newsumask
- returns the value of
- .I $NEWSUMASK .
- .Df newspath
- .Df newsmaster
- .I newspath
- returns the value of
- .I $NEWSPATH .
- .I newsmaster
- returns the value of
- .I $NEWSMASTER .
- All these functions
- supply default values for the
- .I NEWS *
- variables if none are found in the environment.
- If values are found in the environment,
- they are used,
- and a function named
- .Df unprivileged
- .I unprivileged
- is called.
- .PP
- .Ix readline
- .I readline
- is like
- .I fgets ,
- but executes
- .I newslock
- upon encountering EOF
- and retries the read.
- This is used when reading growing files
- such as
- .B history
- or
- batch files.
- .Ix strlower
- .I strlower
- down-cases an entire string,
- in place.
- .Ix strsave
- .I strsave
- is like
- .I strdup
- but it calls
- .I nemalloc
- rather than
- .I emalloc .
- .Ix str3save
- .I str3save
- takes three strings,
- allocates space for their concatenation
- via
- .I nemalloc ,
- including terminating NUL,
- and concatenates them onto it.
- A
- .I NULL
- argument will be replaced by an empty string.
- .I timestamp
- writes a timestamp on a given stream,
- and returns the current time via an argument
- for later use.
- .SH
- Unix-variant-specific libraries
- .LP
- .Ix Unix variants
- There are several libraries that provide functions
- for talking to specific Unix variants.
- These are basically functions that change from one variant to another.
- .B libfake
- (see above) contains things which simply might not be there in a
- particular system.
- .LP
- These libraries all provide the same virtual interface to
- operating-system-dependent services:
- .Df fclsexec
- .Df fopenexcl
- .Df getcwd
- .Df gethostname
- .I fclsexec ,
- .I fopenexcl ,
- .I getcwd (3),
- and
- .I gethostname (3).
- Implementations for vanilla implementations of these
- .UX
- variants are provided:
- .Ix Unix V7
- Seventh Edition,
- .Ix Unix 4.1BSD
- including 4.1BSD
- (\c
- .B libv7 );
- .Df libv7
- Eighth
- and Ninth Editions
- .Ix Unix V8
- .Ix Unix V9
- .Df libv8
- (\c
- .B libv8 );
- 4.2BSD and later
- .Ix Unix 4.2BSD
- .Df libbsd42
- (\c
- .B libbsd42 );
- System III and System V
- .Ix Unix "System III"
- .Ix Unix "System V"
- .Df libusg
- (\c
- .B libusg ).
- .I fclsexec
- sets the close-on-exec flag
- for a given
- .I stdio
- stream.
- .I fopenexcl
- performs an ``exclusive create'' open:
- the open fails if the file already exists.
- .SH
- Address-space-size-specific libraries
- .LP
- These libraries provide alternate versions of the
- .Ix active
- .Ix files active
- .Ix sys
- .Ix files sys
- .B active
- and
- .B sys
- file code:
- .Df libsmall
- .B libsmall
- should work on any machine,
- but is suboptimally fast;
- .B libbig
- .Df libbig
- has worked even on PDP-11s,
- .Ix machines PDP-11
- and is quite fast,
- but consumes memory without apology.
- .SH
- Include files
- .LP
- .B libh
- .Df libh
- contains include files
- unique to C news.
- .B news.h
- .Df news.h
- .Df files news.h
- defines a few limits,
- some file names,
- some types
- (\c
- .B boolean
- and
- .B statust ),
- some characters,
- some status bits,
- some macros for speed,
- and
- declares functions in
- .B libcnews
- or miscellaneous functions in
- .I relaynews
- (oops!).
- .Df config.h
- .Df files config.h
- .B config.h
- declares the pathname functions in
- .B libcnews .
- .Df fgetmfs.h
- .Df files fgetmfs.h
- .B fgetmfs.h
- declares symbolic values and macros for using
- .B fgetmfs .
- .Df libc.h
- .Df files libc.h
- .B libc.h
- is a start at a V9-like declaration of all of the C library.
- .Df memlist.h
- .Df files memlist.h
- .B memlist.h
- defines the interface to
- .B memlist .
- .LP
- .Df hfake
- .Df files hfake
- .B hfake
- contains a few include files that your system ought to have but might not.
- .Df stdlib.h
- .Df files stdlib.h
- .B stdlib.h
- is a degenerate ANSI
- .B stdlib.h .
- .Df string.h
- .Df files string.h
- .B string.h
- declares the string functions.
- .Df timeb.h
- .Df files timeb.h
- .B timeb.h
- declares the structure used by
- .I ftime .
-