\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename ../../info/libc.info
@settitle libc.a reference
@c %**end of header

@setchapternewpage odd
@paragraphindent 0

@ifinfo
This is the reference manual for libc.a

Copyright (c) 1996 DJ Delorie
@end ifinfo

@titlepage
@sp 10
@comment The title is printed in a large font.
@center @titlefont{libc.a reference}

@c The following two commands start the copyright page.
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1996 DJ Delorie
@end titlepage

@node    Top,       Introduction,  (dir),    (dir)
@comment node-name, next,          previous, up

@menu
* Introduction::

* Functional Categories::  All public symbols listed by
                           category

* Alphabetical List::      All public symbols in alphabetical
                           order

* Unimplemented::          Compatibility functions that either
                           always fail or do nothing

* Function Index::
* Variable Index::
* Data Type Index::
* Concept Index::
@end menu

@node    Introduction, Functional Categories, Top,      Top
@comment node-name,    next,                  previous, up
@chapter Introduction

The standard C library, @file{libc.a}, is automatically linked into your
programs by the @file{gcc} control program.  It provides many of the
functions that are normally associated with C programs.  This document
gives the proper usage information about each of the functions and
variables found in @file{libc.a}. 

For each function or variable that the library provides, the definition
of that symbol will include information on which header files to include
in your source to obtain prototypes and type definitions relevant to the
use of that symbol. 

Note that many of the functions in @file{libm.a} (the math library) are
defined in @file{math.h} but are not present in libc.a.  Some are, which
may get confusing, but the rule of thumb is this---the C library
contains those functions that ANSI dictates must exist, so that you
don't need the @code{-lm} if you only use ANSI functions.  In contrast,
@file{libm.a} contains more functions and supports additional
functionality such as the @code{matherr} call-back and compliance to
several alternative standards of behavior in case of FP errors.
@xref{libm}, for more details.

Debugging support functions are in the library @file{libdbg.a}; link
your program with @samp{-ldbg} to use them.

@include libc2.tex

@node Unimplemented, Function Index, Alphabetical List, Top
@chapter Unimplemented Functions

The DJGPP standard C library is @sc{ansi}- and @sc{posix}-compliant, and
provides many additional functions for compatibility with Unix/Linux
systems.  However, some of the functions needed for this compatibility
are very hard or impossible to implement using DOS facilities.

Therefore, a small number of library functions are really just stubs:
they are provided because @sc{posix} requires them to be present in a
compliant library, or because they are widely available on Unix systems,
but they either always fail, or handle only the trivial cases and fail
for all the others.  An example of the former behavior is the function
@code{fork}: it always returns a failure indication; an example of the
latter behavior is the function @code{mknode}: it handles the cases of
regular files and existing character devices, but fails for all other
file types.

This chapter lists all such functions.  This list is here for the
benefit of programmers who write portable programs or port Unix packages
to DJGPP.

Each function below is labeled as either ``always fails'' or
``trivial'', depending on which of the two classes described above it
belongs to.  An additional class, labeled ``no-op'', includes functions
which pretend to succeed, but have no real effect, since the underlying
functionality is either always available or always ignored.

@menu
* addmntent::                Always fails.
* cfgetispeed::              No-op.
* cfgetospeed::              No-op.
* cfsetispeed::              No-op.
* cfsetospeed::              No-op.
* chown::                    Trivial.
* fchown::                   Trivial.
* fork::                     Always fails.
* getgrgid::                 Trivial.
* getgrnam::                 Trivial.
* getgroups::                Trivial.
* getpwnam::                 Trivial.
* getpwuid::                 Trivial.
* lchown::                   Trivial.
* mkfifo::                   Always fails.
* mknod::                    Trivial.
* nice::                     No-op.
* setgid::                   Trivial.
* setpgid::                  Trivial.
* setsid::                   Trivial.
* setuid::                   Trivial.
* tcdrain::                  No-op.
* tcsendbreak::              No-op.
* tcsetpgrp::                Trivial.
* umask::                    Trivial.
* vfork::                    Always fails.
* wait::                     Always fails.
* waitpid::                  Always fails.
@end menu

@node Function Index, Variable Index, Unimplemented, Top
@unnumbered Function Index

@printindex fn

@node Variable Index, Data Type Index, Function Index, Top
@unnumbered Variable Index

@printindex vr

@node Data Type Index, Concept Index, Variable Index, Top
@unnumbered Data Type Index

@printindex tp

@node Concept Index, , Data Type Index, Top
@unnumbered Concept Index

@printindex cp

@contents
@bye

