History log of /freebsd-9.3-release/lib/libc/gen/Makefile.inc
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 267654 19-Jun-2014 gjb

Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 254398 16-Aug-2013 davidxu

MFC r239347, 240295, 240296 and 253325:

r239347 | davidxu | 2012-08-17 10:26:31 +0800 (Fri, 17 Aug 2012) | 7 lines

Implement syscall clock_getcpuclockid2, so we can get a clock id
for process, thread or others we want to support.
Use the syscall to implement POSIX API clock_getcpuclock and
pthread_getcpuclockid.

PR: 168417

------------------------------------------------------------------------
r240295 | davidxu | 2012-09-10 13:00:29 +0800 (Mon, 10 Sep 2012) | 2 lines

Add missing prototype for clock_getcpuclockid.

------------------------------------------------------------------------
r240296 | davidxu | 2012-09-10 13:09:39 +0800 (Mon, 10 Sep 2012) | 2 lines

Process CPU-Time Clocks option is supported, define _POSIX_CPUTIME.

------------------------------------------------------------------------
r253325 | kib | 2013-07-14 03:32:50 +0800 (Sun, 14 Jul 2013) | 6 lines

Allow to call clock_gettime() on the clock id for zombie process.

Reported by: Petr Salinger <Petr.Salinger@seznam.cz>
PR: threads/180496
Sponsored by: The FreeBSD Foundation


# 250681 15-May-2013 pluknet

MFC r248250-248251:

- Add the getcontextx prototype to SYNOPSIS.
- Link getcontextx(3) to getcontext(3).


# 249560 16-Apr-2013 brooks

MFC r248302:

Update to the latest (un)vis(3) sources from NetBSD. This adds
multibyte support[0] and the new functions strenvisx and strsenvisx.

Add MLINKS for vis(3) functions add by this and the initial import from
NetBSD[1].

PR: bin/166364, bin/175418
Submitted by: "J.R. Oldroyd" <fbsd@opal.com>[0]
stefanf[1]
Obtained from: NetBSD


# 245439 14-Jan-2013 brooks

MFC r244401,245305,245308:

Replace our implementation of the vis(3) and unvis(3) APIs with
NetBSD's. This output size limited versions of vis and unvis functions
as well as a set of vis variants that allow arbitrary characters to be
specified for encoding.

Finally, MIME Quoted-Printable encoding as described in RFC 2045 is
supported.


# 245267 10-Jan-2013 brooks

MFC r241731:

Replace our version of the pwcache(3) API with NetBSD's implementation.

This adds two features:
* uid_from_user() and gid_from_group() as the reverse of user_from_uid()
and groups_from_gid().
* pwcache_userdb() and pwcache_groupdb() which allow alternative lookup
functions to be used. For example lookups from passwd and group
databases in a non-standard location.


# 244175 13-Dec-2012 kib

MFC r242960:
Implement the waitid() SUSv4 function using wait6() system call.

PR: standards/170346


# 232542 05-Mar-2012 kib

MFC r232392:
Belatedly add dl_iterate_phdr(3) to the list of installed manpages.


# 230410 20-Jan-2012 kib

MFC r229768:
Implement fdlopen(3), an rtld interface to load shared object by file
descriptor.


# 228843 23-Dec-2011 cperciva

Fix a problem whereby a corrupt DNS record can cause named to crash. [11:06]

Add an API for alerting internal libc routines to the presence of
"unsafe" paths post-chroot, and use it in ftpd. [11:07]

Fix a buffer overflow in telnetd. [11:08]

Make pam_ssh ignore unpassphrased keys unless the "nullok" option is
specified. [11:09]

Add sanity checking of service names in pam_start. [11:10]

Approved by: so (cperciva)
Approved by: re (bz)
Security: FreeBSD-SA-11:06.bind
Security: FreeBSD-SA-11:07.chroot
Security: FreeBSD-SA-11:08.telnetd
Security: FreeBSD-SA-11:09.pam_ssh
Security: FreeBSD-SA-11:10.pam


# 225736 22-Sep-2011 kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by: re (implicit)


# 214680 02-Nov-2010 ed

Add a new libc function: cfmakesane(3).

I've noticed various terminal emulators that need to obtain a sane
default termios structure use very complex `hacks'. Even though POSIX
doesn't provide any functionality for this, extend our termios API with
cfmakesane(3), which is similar to the commonly supported cfmakeraw(3),
except that it fills the termios structure with sane defaults.

Change all code in our base system to use this function, instead of
depending on <sys/ttydefaults.h> to provide TTYDEF_*.


# 213153 24-Sep-2010 davidxu

To support stack unwinding for cancellation points, add -fexceptions flag
for them, two functions _pthread_cancel_enter and _pthread_cancel_leave
are added to let thread enter and leave a cancellation point, it also
makes it possible that other functions can be cancellation points in
libraries without having to be rewritten in libthr.


# 211774 24-Aug-2010 imp

Powerpc is special here. powerpc and powerpc64 use different ABIs, so
their implementations aren't in the same files. Introduce LIBC_ARCH
and use that in preference to MACHINE_CPUARCH. Tested by amd64 and
powerpc64 builds (thanks nathanw@)


# 211725 23-Aug-2010 imp

MFtbemd:

Prefer MACHNE_CPUARCH to MACHINE_ARCH in most contexts where you want
to test of all the CPUs of a given family conform.


# 211706 23-Aug-2010 kib

On shared object unload, in __cxa_finalize, call and clear all installed
atexit and __cxa_atexit handlers that are either installed by unloaded
dso, or points to the functions provided by the dso.

Use _rtld_addr_phdr to locate segment information from the address of
private variable belonging to the dso, supplied by crtstuff.c. Provide
utility function __elf_phdr_match_addr to do the match of address against
dso executable segment.

Call back into libthr from __cxa_finalize using weak
__pthread_cxa_finalize symbol to remove any atfork handler which
function points into unloaded object.

The rtld needs private __pthread_cxa_finalize symbol to not require
resolution of the weak undefined symbol at initialization time. This
cannot work, since rtld is relocated before sym_zero is set up.

Idea by: kan
Reviewed by: kan (previous version)
MFC after: 3 weeks


# 211416 17-Aug-2010 kib

Use aux vector to get values for SSP canary, pagesize, pagesizes array,
number of host CPUs and osreldate.

This eliminates the last sysctl(2) calls from the dynamically linked image
startup.

No objections from: kan
Tested by: marius (sparc64)
MFC after: 1 month


# 210323 21-Jul-2010 ed

Also link getutxent.3 to utmpx.3.

If you run `man utmpx', you expect to get some info on it.


# 202275 14-Jan-2010 ed

Add two changes that should have gone into commit r202274.

Phase out ttyslot(3).

The ttyslot() function was originally part for SUSv1, marked LEGACY in
SUSv2 and removed later on. This function only makes sense when using
utmp(5), because it was used to determine the offset of the record for
the controlling TTY. It makes little sense to keep it here, because the
new utmpx file format doesn't index based on TTY slots.


# 202188 13-Jan-2010 ed

Implement <utmpx.h>.

The utmpx interface is the standardized interface of the user accounting
database. The standard only defines a subset of the functions that were
present in System V-like systems.

I'd like to highlight some of the traits my implementation has:

- The standard allows the on-disk format to be different than the
in-memory representation (struct utmpx). Most operating systems don't
do this, but we do. This allows us to keep our ABI more stable, while
giving us the opportunity to modify the on-disk format. It also allows
us to use a common file format across different architectures (i.e.
byte ordering).

- Our implementation of pututxline() also updates wtmp and lastlog (now
called utx.log and utx.lastlogin). This means the databases are more
likely to be in sync.

- Care must be taken that our implementation discard any fields that are
not applicable. For example, our DEAD_PROCESS records do not hold a
TTY name. Just a time stamp, a record identifier and a process
identifier. It also guarantees that strings (ut_host, ut_line and
ut_user) are null terminated. ut_id is obviously not null terminated,
because it's not a string.

- The API and its behaviour should be conformant to POSIX, but there may
be things that slightly deviate from the standard. This implementation
uses separate file descriptors when writing to the log files. It also
doesn't use getutxid() to search for a field to overwrite. It uses an
allocation strategy similar to getutxid(), but prevents DEAD_PROCESS
records from accumulating.

Make sure libulog doesn't overwrite the manpages shipped with our C
library. Also keep the symbol list in Symbol.map sorted.

I'll bump __FreeBSD_version later this evening. I first want to convert
everything to <utmpx.h> and get rid of <utmp.h>.


# 201546 05-Jan-2010 davidxu

Use umtx to implement process sharable semaphore, to make this work,
now type sema_t is a structure which can be put in a shared memory area,
and multiple processes can operate it concurrently.
User can either use mmap(MAP_SHARED) + sem_init(pshared=1) or use sem_open()
to initialize a shared semaphore.
Named semaphore uses file system and is located in /tmp directory, and its
file name is prefixed with 'SEMD', so now it is chroot or jail friendly.
In simplist cases, both for named and un-named semaphore, userland code
does not have to enter kernel to reduce/increase semaphore's count.
The semaphore is designed to be crash-safe, it means even if an application
is crashed in the middle of operating semaphore, the semaphore state is
still safely recovered by later use, there is no waiter counter maintained
by userland code.
The main semaphore code is in libc and libthr only has some necessary stubs,
this makes it possible that a non-threaded application can use semaphore
without linking to thread library.
Old semaphore implementation is kept libc to maintain binary compatibility.
The kernel ksem API is no longer used in the new implemenation.

Discussed on: threads@


# 199606 20-Nov-2009 jhb

Add an internal _once() method. This works identical to pthread_once(3)
with the additional property that it is safe for routines in libc to use
in both single-threaded and multi-threaded processes. Multi-threaded
processes use the pthread_once() implementation from the threading library
while single-threaded processes use a simplified "stub" version internal
to libc. The libc stub-version of pthread_once() now also uses the
simplified "stub" version as well instead of being a nop.

Reviewed by: deischen, Matthew Fleming @ Isilon
Suggested by: alc
MFC after: 1 week


# 198538 28-Oct-2009 kib

Move pselect(3) man page to section 2.

Noted by: jhb
MFC after: 1 month


# 198509 27-Oct-2009 kib

Commit libc files missed in r198508


# 197804 06-Oct-2009 rwatson

Add basename_r(3) to complement basename(3). basename_r(3) which accepts
a caller-allocated buffer of at least MAXPATHLEN, rather than using a
global buffer.

MFC after: 1 month
Sponsored by: Google


# 197331 19-Sep-2009 alc

Add getpagesizes(3). This functions either the number of supported page
sizes or some number of the sizes themselves. It is functionally
compatible with a function by the same name under Solaris.

Reviewed by: jhb


# 195656 13-Jul-2009 trasz

Move msg{snd,recv,get,ctl} manual pages from section 3 to 2.

Approved by: re (kib)


# 191882 07-May-2009 ed

Add tcsetsid(3).

The entire world seems to use the non-standard TIOCSCTTY ioctl to make a
TTY a controlling terminal of a session. Even though tcsetsid(3) is also
non-standard, I think it's a lot better to use in our own source code,
mainly because it's similar to tcsetpgrp(), tcgetpgrp() and tcgetsid().

I stole the idea from QNX. They do it the other way around; their
TIOCSCTTY is just a wrapper around tcsetsid(). tcsetsid() then calls
into an IPC framework.


# 190673 03-Apr-2009 kib

Allow the NULL, RTLD_SELF and RTLD_NEXT handles to work with dlfunc(3).
dlfunc() called dlsym() to do the work, and dlsym() determines the dso
that originating the call by the return address. Due to this, dlfunc()
operated as if the caller is always the libc.

To fix this, move the dlfunc() to rtld, where it can call the internal
implementation of dlsym, and still correctly fetch return address.
Provide usual weak stub for the symbol from libc for static binaries.
dlfunc is put to FBSD_1.0 symver namespace in the ld.so export to
override dlfunc@FBSD_1.0 weak symbol, exported by libc.

Reported, analyzed and tested by: Tijl Coosemans <tijl ulyssis org>
PR: standards/133339
Reviewed by: kan


# 188497 11-Feb-2009 ed

Add two new routines: fdevname() and fdevname_r().

A more elegant way of obtaining a name of a character device by its file
descriptor on FreeBSD, is to use the FIODGNAME ioctl. Because a valid
file descriptor implies a file descriptor is visible in /dev, it will
always resolve a valid device name.

I'm adding a more friendly wrapper for this ioctl, called fdevname(). It
is a lot easier to use than devname() and also has better error
handling. When a device name cannot be resolved, it will just return
NULL instead of a generated device name that makes no sense.

Discussed with: kib


# 180867 28-Jul-2008 davidxu

Add manual pages for posix_spawn() functions.

PR: standards/122051


# 180688 22-Jul-2008 ache

Add arc4random_uniform() function (to avoid "modulo bias")

Obtained from: OpenBSD


# 180659 21-Jul-2008 ache

Add arc4random_buf.3 to MLINKS


# 179947 23-Jun-2008 ed

Turn execvpe() into an internal libc routine.

Adding exevpe() has caused some ports to break. Even though execvpe() is
a useful routine, it does not conform to any standards.

This patch is a little bit different from the patch sent to the mailing
list. I forgot to remove execvpe from the Symbol.map (which does not
seem to miscompile libc, though).

Reviewed by: davidxu
Approved by: philip


# 179838 17-Jun-2008 davidxu

Add POSIX routines called posix_spawn() and posix_spawnp(), which
can be used as replacements for exec/fork in a lot of cases. This
change also added execvpe() which allows environment variable
PATH to be used for searching executable file, it is used for
implementing posix_spawnp().

PR: standards/122051


# 178256 16-Apr-2008 delphij

Implement fdopendir(3) by splitting __opendir2() into two parts, the upper part
deals with the usual __opendir2() calls, and the rest part with an interface
translator to expose fdopendir(3) functionality. Manual page was obtained from
kib@'s work for *at(2) system calls.


# 178219 15-Apr-2008 davidxu

Implement POSIX function tcgetsid() which returns session id.

PR: stand/107561


# 177710 29-Mar-2008 das

Document modff() and modfl(). Technically, modff() and modfl()
live in libm, while modf() lives in libc due to historical
mistakes. I'm claiming in the manpage that they all live in libm,
since programmers should not rely on the mistake.


# 177077 12-Mar-2008 davidxu

Add manual for function sem_timedwait().

Reviewed by: ru, deischen


# 175688 26-Jan-2008 yar

Our fts(3) API, as inherited from 4.4BSD, suffers from integer
fields in FTS and FTSENT structs being too narrow. In addition,
the narrow types creep from there into fts.c. As a result, fts(3)
consumers, e.g., find(1) or rm(1), can't handle file trees an ordinary
user can create, which can have security implications.

To fix the historic implementation of fts(3), OpenBSD and NetBSD
have already changed <fts.h> in somewhat incompatible ways, so we
are free to do so, too. This change is a superset of changes from
the other BSDs with a few more improvements. It doesn't touch
fts(3) functionality; it just extends integer types used by it to
match modern reality and the C standard.

Here are its points:

o For C object sizes, use size_t unless it's 100% certain that
the object will be really small. (Note that fts(3) can construct
pathnames _much_ longer than PATH_MAX for its consumers.)

o Avoid the short types because on modern platforms using them
results in larger and slower code. Change shorts to ints as
follows:

- For variables than count simple, limited things like states,
use plain vanilla `int' as it's the type of choice in C.

- For a limited number of bit flags use `unsigned' because signed
bit-wise operations are implementation-defined, i.e., unportable,
in C.

o For things that should be at least 64 bits wide, use long long
and not int64_t, as the latter is an optional type. See
FTSENT.fts_number aka FTS.fts_bignum. Extending fts_number `to
satisfy future needs' is pointless because there is fts_pointer,
which can be used to link to arbitrary data from an FTSENT.
However, there already are fts(3) consumers that require fts_number,
or fts_bignum, have at least 64 bits in it, so we must allow for them.

o For the tree depth, use `long'. This is a trade-off between making
this field too wide and allowing for 64-bit inode numbers and/or
chain-mounted filesystems. On the one hand, `long' is almost
enough for 32-bit filesystems on a 32-bit platform (our ino_t is
uint32_t now). On the other hand, platforms with a 64-bit (or
wider) `long' will be ready for 64-bit inode numbers, as well as
for several 32-bit filesystems mounted one under another. Note
that fts_level has to be signed because -1 is a magic value for it,
FTS_ROOTPARENTLEVEL.

o For the `nlinks' local var in fts_build(), use `long'. The logic
in fts_build() requires that `nlinks' be signed, but our nlink_t
currently is uint16_t. Therefore let's make the signed var wide
enough to be able to represent 2^16-1 in pure C99, and even 2^32-1
on a 64-bit platform. Perhaps the logic should be changed just
to use nlink_t, but it can be done later w/o breaking fts(3) ABI
any more because `nlinks' is just a local var.

This commit also inludes supporting stuff for the fts change:

o Preserve the old versions of fts(3) functions through libc symbol
versioning because the old versions appeared in all our former releases.

o Bump __FreeBSD_version just in case. There is a small chance that
some ill-written 3-rd party apps may fail to build or work correctly
if compiled after this change.

o Update the fts(3) manpage accordingly. In particular, remove
references to fts_bignum, which was a FreeBSD-specific hack to work
around the too narrow types of FTSENT members. Now fts_number is
at least 64 bits wide (long long) and fts_bignum is an undocumented
alias for fts_number kept around for compatibility reasons. According
to Google Code Search, the only big consumers of fts_bignum are in
our own source tree, so they can be fixed easily to use fts_number.

o Mention the change in src/UPDATING.

PR: bin/104458
Approved by: re (quite a while ago)
Discussed with: deischen (the symbol versioning part)
Reviewed by: -arch (mostly silence); das (generally OK, but we didn't
agree on some types used; assuming that no objections on
-arch let me to stick to my opinion)


# 175220 10-Jan-2008 jhb

Add a feature_present(3) function which checks to see if a named kernel
feature is present by checking the kern.features sysctl MIB.

MFC after: 1 week


# 175164 08-Jan-2008 jhb

Add a new file descriptor type for IPC shared memory objects and use it to
implement shm_open(2) and shm_unlink(2) in the kernel:
- Each shared memory file descriptor is associated with a swap-backed vm
object which provides the backing store. Each descriptor starts off with
a size of zero, but the size can be altered via ftruncate(2). The shared
memory file descriptors also support fstat(2). read(2), write(2),
ioctl(2), select(2), poll(2), and kevent(2) are not supported on shared
memory file descriptors.
- shm_open(2) and shm_unlink(2) are now implemented as system calls that
manage shared memory file descriptors. The virtual namespace that maps
pathnames to shared memory file descriptors is implemented as a hash
table where the hash key is generated via the 32-bit Fowler/Noll/Vo hash
of the pathname.
- As an extension, the constant 'SHM_ANON' may be specified in place of the
path argument to shm_open(2). In this case, an unnamed shared memory
file descriptor will be created similar to the IPC_PRIVATE key for
shmget(2). Note that the shared memory object can still be shared among
processes by sharing the file descriptor via fork(2) or sendmsg(2), but
it is unnamed. This effectively serves to implement the getmemfd() idea
bandied about the lists several times over the years.
- The backing store for shared memory file descriptors are garbage
collected when they are not referenced by any open file descriptors or
the shm_open(2) virtual namespace.

Submitted by: dillon, peter (previous versions)
Submitted by: rwatson (I based this on his version)
Reviewed by: alc (suggested converting getmemfd() to shm_open())


# 172359 28-Sep-2007 scf

Add fts_set_clientptr(3), fts_get_clientptr(3) and fts_get_stream(3) man
page links to fts(3).

Approved by: wes
Approved by: re (hrs)
MFC after: 5 days


# 171219 04-Jul-2007 peter

Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to
call the pad-less versions of the corresponding syscalls if the running
kernel supports it. Check kern.osreldate once per program and cache the
result to select the appropriate syscall. This maintains userland
compatability with kernel.old's from quite a while back.

Approved by: re (kensmith)


# 166239 25-Jan-2007 peter

Retire more remnants of a.out support, as threatened in 2002.

Laughed-at-by: kris


# 156613 12-Mar-2006 deischen

Add each directory's symbol map file to SYM_MAPS.


# 152985 01-Dec-2005 jhb

Add MLINK for execvP(3).

PR: docs/89783
Submitted by: Andreas Kohn andreas at syndrom23 dot de
MFC after: 3 days


# 149941 10-Sep-2005 stefanf

Add an MLINK for devname_r().


# 149004 12-Aug-2005 simon

Add missing links from getgrent_r.3, getgrnam_r.3, and getgrgid_r.3 to
getgrent.3.

Submitted by: Ulf Lilleengen <lulf@kerneled.org>
MFC after: 3 days


# 146099 11-May-2005 delphij

Connect MLINKS for ttyname_r(3), and add prototype into unistd.h.


# 143229 07-Mar-2005 das

Add manpage links for frexpf, frexpl, ldexpf, and ldexpl.


# 140890 27-Jan-2005 das

- Move the functions presently described in in ieee(3) to their own
manpages. They are not very related, so separating them makes it
easier to add meaningful cross-references and extend some of the
descriptions.
- Move the part of math(3) that discusses IEEE 754 to the ieee(3)
manpage.


# 137878 18-Nov-2004 marks

Remove ntp_gettime.c which was a wrapper around sysctlbyname(3).
This is now a native system call.

Reviewed by: imp, phk, njl, peter
Approved by: njl


# 134244 24-Aug-2004 tjr

Replace the current implementations of ftw() and nftw() with the OpenBSD
implementations written by Todd C. Miller. These are cleaner, less buggy
and actively maintained.


# 133064 03-Aug-2004 dfr

Add stubs for TLS functions. These will be replaced at runtime by the
functional versions in rtld.


# 132632 25-Jul-2004 tjr

Add an nftw(3) link.


# 132382 19-Jul-2004 das

Fix two bugs in the signbit() macro, which was implemented last year:

- It was added to libc instead of libm. Hopefully no programs rely
on this mistake.

- It didn't work properly on large long doubles because its argument
was converted to type double, resulting in undefined behavior.


# 132366 18-Jul-2004 das

Replace seven nominally MD implementations of frexp() that are broken
for subnormals with one implementation that works.


# 131852 09-Jul-2004 das

Implement the classification macros isfinite(), isinf(), isnan(), and
isnormal() the hard way, rather than relying on fpclassify(). This is
a lose in the sense that we need a total of 12 functions, but it is
necessary for binary compatibility because we have never bumped libm's
major version number. In particular, isinf(), isnan(), and isnanf()
were BSD libc functions before they were C99 macros, so we can't
reimplement them in terms of fpclassify() without adding a dependency
on libc.so.5. I have tried to arrange things so that programs that
could be compiled in FreeBSD 4.X will generate the same external
references when compiled in 5.X. At the same time, the new macros
should remain C99-compliant.

The isinf() and isnan() functions remain in libc for historical
reasons; however, I have moved the functions that implement the macros
isfinite() and isnormal() to libm where they belong. Moreover,
half a dozen MD versions of isinf() and isnan() have been replaced
with MI versions that work equally well.

Prodded by: kris


# 131661 05-Jul-2004 das

Add implementations of ftw(3) and nftw(3) and the corresponding header
ftw.h. This is the implementation written by Joel Baker
<fenton@debian.org> for inclusion in NetBSD, but with several
bugfixes.

Obtained from: Debian


# 128143 11-Apr-2004 mux

Belatedly remove the getvfsent(3) API. All the consumers have been
updated to use getvfsbyname(3) or the vfs.conflist sysctl since a
long time, except mount_smbfs(8) which has just been fixed.


# 124568 15-Jan-2004 ru

Fixed style of previous commit.

Submitted by: bde


# 124530 14-Jan-2004 ru

- libc/sys/sem.c was repocopied to libc/gen/sem.c.
- sem_*(3) manpages were repocopied from libc_r.

Reviewed by: deischen
Repocopy by: markm


# 118684 09-Aug-2003 bms

Add the POSIX 1003.1-2001 posix_madvise() interface.

PR: standards/54634
Reviewed by: das
Approved by: jake (mentor)


# 113595 17-Apr-2003 nectar

= Implement name service switch modules (NSS modules). NSS modules
may be built into libc (`static NSS modules') or dynamically loaded
via dlopen (`dynamic NSS modules'). Modules are loaded/initialized
at configuration time (i.e. when nsdispatch is called and nsswitch.conf
is read or re-read).

= Make the nsdispatch(3) core thread-safe.

= New status code for nsdispatch(3) `NS_RETURN', currently used to
signal ERANGE-type issues.

= syslog(3) problems, don't warn/err/abort.

= Try harder to avoid namespace pollution.

= Implement some shims to assist in porting NSS modules written for
the GNU C Library nsswitch interface.

Sponsored by: DARPA, Network Associates Laboratories


# 113219 07-Apr-2003 mdodd

- Add setfstab() and getfstab().
- Use the environment variable 'PATH_FSTAB' if set rather than the
hardcoded '/etc/fstab' (fstab.h:_PATH_FSTAB)


# 110932 15-Feb-2003 phantom

Add dlinfo(3) manual page to the rank of base system manpages


# 110769 12-Feb-2003 mike

o Implement C99 classification macros isfinite(), isinf(), isnan(),
isnormal(). The current isinf() and isnan() are perserved for
binary compatibility with 5.0, but new programs will use the macros.
o Implement C99 comparison macros isgreater(), isgreaterequal(),
isless(), islessequal(), islessgreater(), isunordered().

Submitted by: David Schultz <dschultz@uclink.Berkeley.EDU>


# 110734 11-Feb-2003 mike

Implement C99's signbit() macro.


# 110566 08-Feb-2003 mike

Implement fpclassify():
o Add a MD header private to libc called _fpmath.h; this header
contains bitfield layouts of MD floating-point types.
o Add a MI header private to libc called fpmath.h; this header
contains bitfield layouts of MI floating-point types.
o Add private libc variables to lib/libc/$arch/gen/infinity.c for
storing NaN values.
o Add __double_t and __float_t to <machine/_types.h>, and provide
double_t and float_t typedefs in <math.h>.
o Add some C99 manifest constants (FP_ILOGB0, FP_ILOGBNAN, HUGE_VALF,
HUGE_VALL, INFINITY, NAN, and return values for fpclassify()) to
<math.h> and others (FLT_EVAL_METHOD, DECIMAL_DIG) to <float.h> via
<machine/float.h>.
o Add C99 macro fpclassify() which calls __fpclassify{d,f,l}() based
on the size of its argument. __fpclassifyl() is never called on
alpha because (sizeof(long double) == sizeof(double)), which is good
since __fpclassifyl() can't deal with such a small `long double'.

This was developed by David Schultz and myself with input from bde and
fenner.

PR: 23103
Submitted by: David Schultz <dschultz@uclink.Berkeley.EDU>
(significant portions)
Reviewed by: bde, fenner (earlier versions)


# 110122 30-Jan-2003 trhodes

Add getosreldate.3 to the Makefile.


# 108288 26-Dec-2002 tjr

Add an implementation of the POSIX wordexp() and wordfree() functions,
which perform shell-style word expansion on strings. This is still a
little rough around the edges.

PR: 13420


# 107052 18-Nov-2002 ru

libc_r wasn't so tied to libc for 22 months.


# 106065 27-Oct-2002 wollman

Create a small library function, check_utility_compat(3), to determine
whether a named utility should behave in FreeBSD 4.x-compatible mode
or in a standard mode (default standard). The configuration is done
malloc(3)-style, with either an environment variable or a symlink.

Update expr(1) to use this new interface.


# 104704 09-Oct-2002 peter

Drop almost 3k from /bin/sync by moving errno to a seperate file
to avoid all syscalls pulling in sys_errlst[].

Noted by: bde


# 103239 11-Sep-2002 archie

Add man pages for getcontext()/setcontext(), makecontext()/swapcontext(),
and ucontext_t.

Reviewed by: mini
MFC after: 3 days


# 101497 08-Aug-2002 mike

Implement POSIX.1-2001 (XSI)'s ulimit(3).

Submitted by: Kyle Martin <mkm@ieee.org>


# 101353 05-Aug-2002 mike

Implement POSIX.1-2001 (XSI)'s fmtmsg(3).


# 99922 13-Jul-2002 wollman

Add statvfs(3) to the build.

Tested by: Steve Kargl


# 98315 17-Jun-2002 wollman

Actually document pselect(3) so that Bruce can mention it in the release
notes. :-)


# 98273 15-Jun-2002 wollman

Add pselect(3) to the build. Need to figure out the most appropriate
way to document this interface.


# 97490 29-May-2002 wollman

Add link dlopen(3) -> dlfunc(3).

Reminded by: mike


# 97475 29-May-2002 wollman

Reorganize dlfcn.h slightly to separate out XSI and BSD interfaces.
Add new dlfunc() interface, which is a version of dlsym() with a
return type that can be cast to a function pointer without turning
your computer into a frog.

Reviewed by: freebsd-standards


# 97191 23-May-2002 jake

Generate the normal asm stubs for all sysv system calls. Use these instead
of C wrappers for the *sys indirect system calls. The indirect system calls
are horribly broken on sparc64.

Submitted by: tmm


# 92862 21-Mar-2002 peter

Move swapcontext.c to the ${MACHINE_ARCH}/gen/Makefile.inc area, otherwise
it causes undefined references to getcontext() and setcontext() on
platforms other than i386 and alpha.


# 89264 11-Jan-2002 bde

Fixed missing backslash in previous commit.


# 89262 11-Jan-2002 bde

Fixed accumulated unsorting and some other style bugs (long lines).


# 89177 10-Jan-2002 deischen

Add getcontext, setcontext, makecontext, and swapcontext. These
functions are defined in SUSv2 and the latest POSIX spec.

Thanks to Bernd Walter <ticso@cicely8.cicely.de> for helping debug my
alpha assembly.

Approved by: -arch


# 86669 20-Nov-2001 green

Introduce readpassphrase(3), a superset of getpass(3). This
comes originally from Todd Miller.

Obtained from: OpenBSD


# 86457 16-Nov-2001 dd

Create link from directory.3 to readdir_r.3.

PR: 32028
Submitted by: andrew@ugh.net.au


# 81861 17-Aug-2001 dd

Implement getpeereid(3), a front-end to the LOCAL_PEERCRED
socket option for the Unix domain. It's weaker than the
socket option (this only returns the uid and gid, while the
socket opt. can return the entire group list), and is
implemented mostly for compatibility with OpenBSD.


# 80743 31-Jul-2001 mp

Only pull in the MD files if they exist. This allows for progressive
implementation and compilation when bringing up a new architecture.


# 76653 15-May-2001 dd

Introduce getprogname(3) and setprogname(3) library calls. These get
and set __progname, respectively.

Discussed on: -arch (Feb 2001), -audit
Reviewed by: -audit
Approved by: kris
Obtained from: (mostly) NetBSD


# 75578 17-Apr-2001 kris

Add fmtcheck(), a function for checking consistency of format string
arguments where the format string is obtained from user data, or
otherwise difficult to verify statically.

Example usage:

printf(fmtcheck(user_format, standard_format), arg1, arg2);

checks the format string user_format for consistency (same number/order/
type of format operators) with standard_format. If they differ,
standard_format is used instead to avoid potential crashes or security
violations.

Obtained from: NetBSD
Reviewed by: -arch


# 74870 27-Mar-2001 ru

MAN[1-9] -> MAN.


# 74729 24-Mar-2001 peter

This is kind of a hack, but it should work. Currently, world is broken
because libc/rpc/key_call.c references uname(), and ps/print.c also
defines uname(), and ps is linked statically. This leads to a symbol
clash. The userland uname(3) kinda sucked anyway as the hostname
etc was too short. And since the libc rpc interface now uses
the utsname.nodename which gets truncated, I was tempted into doing
something about it. Create a new userland uname function, called
__xuname() which takes an extra argument that allows you to change
the size of the fields. uname() becomes a static inline function
in sys/utsname.h that passes the extra argument in. struct utsname
has its field members expanded by default now in userland.
We still provide a 'uname' externally linkable function for things
that either think that they ``know'' the utsname format and assume
32 character strings and bypass the include file, or objects that
are linked against old libcs. ie: just about every plausible
case that I can think of is covered. Should we ever change the
default lengths again, a libc major bump should not be required
as the size is now passed to the function.

XXX the uname(2) in the kernel is for FreeBSD 1.1 binary compatability!
All the uname(3) functions that are exported to userland are actually
implemented in libc with sysctl. uname(1) uses sysctl directly and
does not call uname(3).

PR: bin/4688


# 72044 05-Feb-2001 bde

Don't install links for crypt.3 here. There is no crypt.3 here...

Forgotten in: rev.1.58, which was not Submitted by: bde (I requested
untangling parts of the crypto mess).


# 71579 24-Jan-2001 deischen

Remove _THREAD_SAFE and make libc thread-safe by default by
adding (weak definitions to) stubs for some of the pthread
functions. If the threads library is linked in, the real
pthread functions will pulled in.

Use the following convention for system calls wrapped by the
threads library:
__sys_foo - actual system call
_foo - weak definition to __sys_foo
foo - weak definition to __sys_foo

Change all libc uses of system calls wrapped by the threads
library from foo to _foo. In order to define the prototypes
for _foo(), we introduce namespace.h and un-namespace.h
(suggested by bde). All files that need to reference these
system calls, should include namespace.h before any standard
includes, then include un-namespace.h after the standard
includes and before any local includes. <db.h> is an exception
and shouldn't be included in between namespace.h and
un-namespace.h namespace.h will define foo to _foo, and
un-namespace.h will undefine foo.

Try to eliminate some of the recursive calls to MT-safe
functions in libc/stdio in preparation for adding a mutex
to FILE. We have recursive mutexes, but would like to avoid
using them if possible.

Remove uneeded includes of <errno.h> from a few files.

Add $FreeBSD$ to a few files in order to pass commitprep.

Approved by: -arch


# 71409 23-Jan-2001 mckusick

Add the function sysctlnametomib to libc. Details on the semantics
and use of this function have been added to the sysctl.3 manual page.


# 70412 27-Dec-2000 ben

Link stringlist.3 to sl_{add,find,free,init}.3


# 65532 06-Sep-2000 nectar

Add nsswitch support. By creating an /etc/nsswitch.conf file, you can
configure FreeBSD so that various databases such as passwd and group can be
looked up using flat files, NIS, or Hesiod.

= Hesiod has been added to libc (see hesiod(3)).

= A library routine for parsing nsswitch.conf and invoking callback
functions as specified has been added to libc (see nsdispatch(3)).

= The following C library functions have been modified to use nsdispatch:
. getgrent, getgrnam, getgrgid
. getpwent, getpwnam, getpwuid
. getusershell
. getaddrinfo
. gethostbyname, gethostbyname2, gethostbyaddr
. getnetbyname, getnetbyaddr
. getipnodebyname, getipnodebyaddr, getnodebyname, getnodebyaddr

= host.conf has been removed from src/etc. rc.network has been modified
to warn that host.conf is no longer used at boot time. In addition, if
there is a host.conf but no nsswitch.conf, the latter is created at boot
time from the former.

Obtained from: NetBSD


# 65353 01-Sep-2000 brian

Move setproctitle() from libutil to libc (after a repo-copy)
and bump __FreeBSD_version to 500012 to mark the occasion.

setproctitle() is prototyped in unistd.h as opposed to stdlib.h
where OpenBSD and NetBSD have it.

Reviewed by: peter


# 65294 31-Aug-2000 des

Import XPG4-compliant basename(3) and dirname(3) from OpenBSD.
The man pages need some adjustments.

PR: 12960, 12962
Submitted by: James Howard <howardjp@wam.umd.edu>
Obtained from: OpenBSD


# 64006 29-Jul-2000 peter

Add a skeleton rfork_thread(3) man page.


# 62430 03-Jul-2000 green

Re-pair the MLINKS of unvis.3 with strunvisx.3. This undoubtedly was a
world breakage.


# 62424 02-Jul-2000 alex

Add strunvisx.3 MLINK.


# 61747 17-Jun-2000 joe

Add strtofflags and fflagstostr to libc.


# 59497 22-Apr-2000 wollman

Add shm_open(3) and shm_unlink(3). The documentation could use a good
bit of work (and is stylistically probably the worst manual page
I've ever written).


# 57003 05-Feb-2000 joe

Revert part of the last commit, remove {g|s}etflags from the libc
interface, and statically link them to the programs using them.
These functions, upon reflection and discussion, are too generically
named for a library interface with such specific functionality.
Also the api that they use, whilst ok for private use, isn't good
enough for a libc function.

Additionally there were complications with the build/install-world
process. It depends heavily upon xinstall, which got broken by
the change in api, and caused bootstrap problems and general mayhem.

There is work in progress to address future problems that may be
caused by changes in install-chain tools, and better names for
{g|s}etflags can be derived when some future program requires them.
For now the code has been left in src/lib/libc/gen (it started off
in src/bin/ls).

It's important to provide library functions for manipulating file
flag strings if we ever want this interface to be adopted outside
of the source tree, but now isn't necessarily the right moment
with 4.0-release just around the corner.

Approved: jkh


# 56726 28-Jan-2000 bde

Install setflags.3 and its link to getflags.3.


# 56692 27-Jan-2000 joe

Historically file flags (schg, uschg, etc) have been converted from
string to u_long and back using two functions, flags_to_string and
string_to_flags, which co-existed with 'ls'. As time has progressed
more and more other tools have used these private functions to
manipulate the file flags.

Recently I moved these functions from /usr/src/bin/ls to libutil,
but after some discussion with bde it's been decided that they
really ought to go in libc.

There are two already existing libc functions for manipulating file
modes: setmode and getmode. In keeping with these flags_to_string
has been renamed getflags and string_to_flags to setflags.

The manual page could probably be improved upon ;)


# 56266 19-Jan-2000 chris

Document isnanf() for checking if a float is NaN (``Not-a-Number'') and
create a link from isnanf.3 to isinf.3.

PR: 13878


# 56252 18-Jan-2000 markm

This man page is not needed; it just gets jumped on later when libcrypt
is installed.
Submitted by: bde


# 55122 27-Dec-1999 jdp

Add a new function dllockinit() for registering thread locking
functions to be used by the dynamic linker. This can be called by
threads packages at start-up time. I will add the call to libc_r
soon.

Also add a default locking method that is used up until dllockinit()
is called. The default method works by blocking SIGVTALRM, SIGPROF,
and SIGALRM in critical sections. It is based on the observation
that most user-space threads packages implement thread preemption
with one of these signals (usually SIGVTALRM).

The dynamic linker has never been reentrant, but it became less
reentrant in revision 1.34 of "src/libexec/rtld-elf/rtld.c".
Starting with that revision, multiple threads each doing lazy
binding could interfere with each other. The usual symptom was
that a symbol was falsely reported as undefined at start-up time.
It was rare but not unseen. This commit fixes it.


# 55037 23-Dec-1999 bde

Fixed missing installation of a link to ctermid_r.3.


# 51605 23-Sep-1999 phantom

Nuke dlopen.3 -> dlversion.3 link.
This function was removed by jdp in rev.1.5 of dlopen.3

Forgoten by: jdp


# 51571 22-Sep-1999 phantom

Add links for errc.3, verrc.3, warnc.3, vwarnc.3.

PR: docs/13222
Submitted by: Ben Smithurst <ben@scientia.demos.co.uk>


# 50476 27-Aug-1999 peter

$Id$ -> $FreeBSD$


# 47320 19-May-1999 bde

Fixed disordering and duplication of MLINKS in previous commit to
libc/string/Makefile.inc. psignal.3 doesn't live in libc/string.


# 45401 07-Apr-1999 jdp

Add manpage link for dlversion(3).


# 38960 08-Sep-1998 jdp

Add a new library function getobjformat(). It checks all the
standard places ("/etc/objformat", ${OBJFORMAT}, argv) for an
indication of the user's preferred object file format. This
consolidates some code that was starting to be duplicated in more
and more places.

Use the new function in ldconfig.

Note: I don't think that gcc should use getobjformat(), even though
it could. The compiler should limit itself to functions that are
widespread, to ease porting and cross-compilation.


# 38054 03-Aug-1998 bde

isnetworktty -> isnettty. ttyent.h has already gone through 3
revisions to match the confusing spelling in getttyent.c (1 to
break it to match the man page and 1 in each of 2 branches to fix
it). This function seems to be orphaned and unused.


# 37515 08-Jul-1998 dt

Add lockf().


# 36919 12-Jun-1998 peter

Make nlist() understand elf unconditionally


# 36859 10-Jun-1998 jdp

Move ftok() from libcompat to libc, so that it can be closer to its
friend shmget().

PR: closes misc/6763


# 34379 09-Mar-1998 jb

Change MACHINE to MACHINE_ARCH.

Add _spinlock.c (stubs) to sources.

Nuke tahoe and vax.


# 33899 28-Feb-1998 steve

Remove the config_* routines with permission from Poul-Henning Kamp,
the original author.

PR: 5834
Discussed with: phk, jkh


# 33287 12-Feb-1998 bde

Fixed disordering of MLINKS in previous commit. Fixed old disorder in
MLINKS.


# 33180 09-Feb-1998 jdp

Move the trampolines for dlopen and related functions from crt0.o
into libc. This reduces the size of every dynamically linked
executable by 248 bytes, and it reduces the size of static executables
by a lesser amount. It also eliminates some global namespace
pollution.

With this change in place, the source for dlfcn.h should probably
be moved to "/usr/src/include". I'll save that for another day.

Compatibility note: Programs which use dlopen, if compiled on
systems with this change, will not run on systems with a libc from
prior to this change. Very few programs use dlopen, so I think
that is OK.


# 30624 21-Oct-1997 bde

Sorted lists.


# 30447 15-Oct-1997 bde

Removed the subdirectory paths from the definitions of MAN[1-9]. They
were a workaround for limitations in bsd.man.mk that were fixed about
2 years ago.


# 30400 14-Oct-1997 bde

Moved `SRCS+= frexp.c' to the correct Makefile.inc.


# 28947 30-Aug-1997 peter

Initial elf nlist support, mostly stolen from OpenBSD (they use standard
#defines that are compatable with ours). I made some some minor tweaks
to the leading '_' tests.

Again, this is off by default for the moment. This probably should be
split into seperate files (like some of our other libc files that could
do with some splitting).

Obtained from: OpenBSD (plus some minor tweaks)


# 27344 12-Jul-1997 peter

Add a quick description of sysctlbyname() and link sysctl.3 to
sysctlbyname.3


# 26925 25-Jun-1997 msmith

Add stringlist functions from NetBSD. (required for the new ftp(1)
Obtained from: NetBSD


# 26628 13-Jun-1997 ache

Add arc4random() functions from OpenBSD. They are almost same as our
srandomdev(), but can be used inside libraries. random() can't be used
inside libraries because it breaks its possible predictable sequence.
arc4random() is true random as designed, so its usage is library-safe.
Obtained from: OpenBSD


# 26285 30-May-1997 phk

sysctlbyname allows acces to sysctl variables by name.

The manpage has been sent to linquistic decontamination and will arrive
when released from the quarantine

Reviewed by: peter


# 25401 03-May-1997 jb

Changed all paths to be relative to src/lib instead of src/lib/libc
so that all these makefiles can be used to build libc_r too.

Added .if ${LIB} == "c" tests to restrict man page builds to libc
to avoid needlessly building them with libc_r too.

Split libc Makefile into Makefile and Makefile.inc to allow the
libc_r Makefile to include Makefile.inc too.


# 25398 03-May-1997 jb

This stub has not been required by libc for a long time. Nuke it.


# 24892 13-Apr-1997 davidn

Add MLINKS for isdialuptty(3) & isnetworktty(3).


# 23832 13-Mar-1997 peter

Back out a dubious Lite2 change to "optimise" getcwd() to look at $PWD
because it's potentially dangerous (think: symlink races). Move
realpath() back to it's original location, and remove getcwd_physical()
by renaming it back to getcwd() and zapping the original getcwd wrapper.

Noticed by: bde


# 23733 11-Mar-1997 bde

Install the Lite2 getvfsbyname.3. The old getvfsbyname() interface is
still available and described in getvfsent.3.


# 23665 11-Mar-1997 peter

Merge from Lite2 (+realpath.3)


# 23334 03-Mar-1997 bde

Enabled the Lite2 getvfsbyname(). It's actually named new_getvfsbyname()
for now so that we don't lose library compatibility. Applications should
define _NEW_VFSCONF and use getvfsbyname() instead of new_getvfsbyname()
if they want the new vfsconf interface. Parts of the old interface
(enough to load vfs modules, I hope) are still available.


# 22993 22-Feb-1997 peter

Revert $FreeBSD$ to $Id$


# 22812 16-Feb-1997 wosch

Add forgotten man page link fts_set.3 -> fts.3


# 22138 30-Jan-1997 mpp

Dont' mlink getgrent.3 to setgrfile.3, since there is no
setgrfile() function.


# 21673 14-Jan-1997 jkh

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


# 15968 28-May-1996 wosch

add manpage links:

des_setkey.3 -> crypt.3
des_cipher.3 -> crypt.3
err_set_exit.3 -> err.3
err_set_file.3 -> err.3
strunvis.3 -> unvis.3


# 14136 17-Feb-1996 wosch

man page links

fts_open.3 -> fts.3
fts_read.3 -> fts.3
fts_children.3 -> fts.3
fts_close.3 -> fts.3


# 14053 12-Feb-1996 mpp

Added man pages for msgctl(3), msgget(3), msgrcv(3) and msgsnd(3).

Obtained from: NetBSD


# 14045 12-Feb-1996 mpp

Another round of man page cleanups.

Down to only about 100 items left to cleanup! :-)


# 14038 11-Feb-1996 mpp

Correct a bunch of man page cross references and generally
try and silence "manck".

ncurses, rpc, and some of the gnu stuff are still a big mess, however.


# 13545 21-Jan-1996 julian

Reviewed by: julian and (hsu?)
Submitted by: John Birrel(L?)

changes for threadsafe operations


# 8870 30-May-1995 rgrimes

Remove trailing whitespace.


# 5152 18-Dec-1994 guido

Add missing getdomainname manual page.
Reviewed by:
Submitted by:
Obtained from: 1.1.5.1 with a few modifictaions.


# 4441 13-Nov-1994 phk

Added routines to read the canonical UNIX configuration file. This will
later be applied to a number of programs (inetd for instance) to clean
out the bogus code doing the same thing, modulus all the bugs.

If you need to read a '#'-is-a-comment-file, please use these routines.

I realize that the shlib# should be bumped (for the non-US world:
increased by something), but will defer this until something significant
happens.


# 3850 25-Oct-1994 bde

Nuke sigsetjmp.c. sigsetjmp() can't be implemented as a C function
that calls setjmp(), since returning from the function usually
clobbers the saved environment.


# 3062 24-Sep-1994 wollman

Document getvfsent() and kin.


# 3040 23-Sep-1994 wollman

Added getbootfile(3), for an easy C interface to the kern.bootfile MIB
variable. This one's even documented!


# 3016 22-Sep-1994 wollman

Added *ran48 functions, and put them in the correct place this time.

Obtained from: 1.1.5


# 2963 21-Sep-1994 wollman

Added VFS functions: getvfsvbyname, getvfsbytype, getvfsent, setvfsent,
endvfsent, vfsisloadable, vfsload.
Someday these will even be documented.


# 2857 18-Sep-1994 wollman

Redo kernel NTP PLL support, user-mode interface.


# 2741 13-Sep-1994 wollman

Use latest Arthur Olson timezone code rather than that supplied with
4.4. The code is almost identical to the 4.4 versions, but this organization
should make it easier to merge new versions in the future.


# 2730 13-Sep-1994 dfr

Added SYSV ipc system calls.


# 2004 10-Aug-1994 wollman

Make it easier for programs to figure out what revision of FreeBSD they
are running under. Here's how to bootstrap (order is important):

1) Re-compile gcc (just the driver is all you need).
2) Re-compile libc.
3) Re-compile your kernel. Reboot.
4) cd /usr/src/include; make install

You can now detect the compilation environment with the following code:

#if !defined(__FreeBSD__)
#define __FreeBSD_version 199401
#elif __FreeBSD__ == 1
#define __FreeBSD_version 199405
#else
#include <osreldate.h>
#endif

You can determine the run-time environment by calling the new C library
function getosreldate(), or by examining the MIB variable kern.osreldate.

For the time being, the release date is defined as 199409, which we have
already established as our target.


# 1950 08-Aug-1994 jkh

Add a missing backslash to get this to work again.
Reviewed by:
Submitted by: jkh


# 1926 07-Aug-1994 wollman

Added YP domain name getting/setting support, for SunOS/old program
compatibility.


# 1849 04-Aug-1994 wollman

First crack at making libc work with the new make macros. It compiles on
my machine, and a simple static (genassym) and shared (sysctl) executable
both work. Still to be done: RPCand YP merge.


# 1574 27-May-1994 rgrimes

This commit was generated by cvs2svn to compensate for changes in r1573,
which included commits to RCS files with non-trunk default branches.


# 1573 27-May-1994 rgrimes

BSD 4.4 Lite Lib Sources