Mon Jan 17 17:31:28 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.07 released.

	* Makerules (install-lib rules): Fix typos: missing / after $(libdir).

	* posix/Makefile (lib): Depend on $(objpfx)libposix.a
	* malloc/Makefile (lib): Depend on $(objpfx)libmcheck.a.
	* math/Makefile (lib): Depend on $(objpfx)libm.a.
	* misc/Makefile (lib): Depend on $(objpfx)libbsd-compat.a.

	* sysdeps/unix/sysv/sco3.2.4/__setpgid.c: New file.

	* stdio/internals.c (flushbuf): Don't try aligned-block writing
	calculation when FP->__buffer is nil.

Mon Jan 17 17:27:56 1994  Jim Meyering  (meyering@comco.com)

	* sysdeps/generic/memcmp.c [!_LIBC]: Include <sys/types.h> for
	definition of size_t.

Mon Jan 17 17:13:11 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/syscall.h:	Add SYS_[gs]etitimer and
	SYS_pgrpsys (from scottb).

	* sysdeps/unix/configure: Check for getitimer and setitimer syscalls.

	* sysdeps/unix/bsd/sequent/i386/syscall.S: New file from jason.

Sun Jan 16 00:41:03 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* string/strerror.c (strerror): Declare BUF to be array of char.

	* Version 1.06.13.

Sat Jan 15 17:27:26 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdlib/testsort.c (main): Rewrite not to read any input; instead
	generate some random alphabetic strings.

	* stdlib/Makefile (testsort.input): Rules removed.

	* sysdeps/unix/sysv/i386/__sigret.S: New file.

	* stdio/Makefile (distribute): Add mpn-copy.mk.
	Remove 68k rules; include mpn-copy.mk for dir names needing
	translation, and rewrite no-68k rules to be generic for the rest.
	(mpn-copy-sysdep): New variable.
	(mpn-stuff): Include $(mpn-copy-sysdep).
	(clean-mpn): Use rm -f.

	* configure.in (machine): Match m68... and m88..., not mc[68]8....

	* stdio/printf_fp.c: For length arg to __mpn_extract_double, pass
	actual number of limbs allocated for F, not LDBL_MANT_DIG.

Fri Jan 14 19:09:29 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/i386/sysdep.S: Fixed typo: `movl', not `move'.

	* sysdeps/unix/sysv/sco3.2.4/__sysconf.S: Swap args in cmpl insn.

Thu Jan 13 17:09:19 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.12.

	* sysdeps/mips/sqrt.c: File removed.  Ian says only the r[46]00
	have `sqrt.d' and GCC open codes it anyway.  Perhaps someday
	Brendan will be able to explain his rationale for writing this. :(

Tue Jan 11 18:10:17 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/sys/wait.h (__WAIT_STATUS, __WAIT_STATUS_DEFN): Use snazzy
	version only for GCC >= 2.6 (was 2.4); 2.5.7 produces bad code on
	sparc when the union arg type is used.

	* Makeconfig (libprefix): New variable.
	* Makerules ($(libdir)/libc.a, install): Insert $(libprefix)
	between `lib' and `c' in the file name.
	[install-lib] (install-lib.a, install-lib-non.a): New variables
	separate out $(install-lib) elts which do or don't match lib%.a.
	($(libdir)/...): Split into two rules for above two cases.  Put
	$(libprefix) on installed files; for lib%.a insert it before %
	rather than at beginning of file name.

	* Version 1.06.11.

	* Makerules (compilation rules): Move directoryless rules (for
	finding sources in .) before include sysd-rules.  Omit rules to
	compile from sources in $(objpfx) if not using $(objdir).

	* sysdeps/stub/errlist.c [! HAVE_GNU_LD]: #define _sys_errlist to
	sys_errlist and _sys_nerr to sys_nerr.

Mon Jan 10 15:01:32 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/Makefile (z.%): In generated rules, depend on yearistype.
	(tzcompile): Pass -y flag with file name of yearistype.

Sun Jan  9 17:51:43 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* misc/bsd-compat.c (longjmp): Use __NORETURN in type.

	* sysdeps/ieee754/dbl2mpn.c [N == 2]: For denormal, when
	RES_PTR[1] is zero, return 1 instead of 2.

Sun Jan  9 13:10:25 1994  Torbjorn Granlund  (tege@adder.cygnus.com)

	* stdio/printf_fp.c: Solve 10+ problems.
	* ieee754/dbl2mpn.c: Correctly detect denorms.  Get the denom
	exponent right.

Sun Jan  9 00:40:48 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/ieee754/dbl2mpn.c: Test BITS_PER_MP_LIMB and handle
	either 32 or 64; #error if not one of those.

	* sysdeps/stub/udiv_qrnnd.c: Renamed from udiv_qrnnd.S.

Sat Jan  8 00:25:15 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.10.

	* Makerules ($(libdir)/libc.a): Depend on subdir_install.

Thu Jan  6 02:17:07 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules ($(bindir)/$(install)): Use $(INSTALL_PROGRAM), not
	$(INSTALL).
	($(libdir)/libc.a): Don't depend on lib-noranlib; on libobjs and
	ar-it instead.  Run ranlib on target after installing.
	(installdirs): Target removed; deps on it removed.
	(install-{bin,lib,data,headers,others,no-libc.a}): Renamed to
	`install-*-nosubdir'.
	(install-%): New pattern rule.
	(install): Depend only on install-no-libc.a-nosubdir.
	* Rules (subdir_install): Depend on lib-noranlib and stubs.
	* Makefile (headers): Remove stubs.h.
	(install-others): Define to include $(includedir)/stubs.h.
	($(includedir)/stubs.h): New target for $(objpfx)stubs.h rule.
	Depend only on subdir_install, and install directly.

	* Makerules (sed-remove-objpfx): Require SPC before $(objpfx) to match.

	* time/zic.c (mkdirs): Duplicate passed string in allocated memory
	and free it when done.

	* dirent/dirent.h [__USE_BSD || __USE_MISC]: Get size_t from stddef.h.

	* sysdeps/ieee754/dbl2mpn.c: For zero value, return 1 limb not 0.

	* Makerules (make-dummy-dep): Use filter-out to invert sense of
	wildcard match, so we produce a command if $@ does *not* exist.c

	* stdio/Makefile (routines): Add dbl2mpn.

Wed Jan  5 17:52:43 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/i386/sysdep.S (syscall_error): Reverse args in
	`cmpl' insn; non-GNU assembler is feeble-minded.

Mon Jan  3 18:53:45 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (sysnames): Remove / before $mach; it is prepended
	already by the loop constructing $mach from $machine.

Tue Dec 28 07:38:23 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/Makefile [gmp-srcdir] (clean-mpn): New target.

	* configure.in (machine): Turn i[34]86 into i386/&, sparc* into
	sparc/&, m68k into m68k/mc68020, mc680?0 into m68k/&, mips or
	r2000 into mips/r3000, r[34]000 into mips/&.
	(mach): New variable; processed from $machine as $base from $base_os.
	Use that in place of $machine in loop finding sysdep directories.

	* stdio/Makefile (aux): Add mp_clz_tab.
	(mpn-copy): Add mp_clz_tab.c.
	(mpn-routines): Add udiv_qrnnd.
	(mpn-sysdep): Look for .s files too.
	* sysdeps/stub/udiv_qrnnd.S: New file.

Sat Dec 25 00:20:07 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.9.

	* Makefile (distribute): Add install.sh.
	* install.sh: New file.

	* sysdeps/i386/Makefile: New file.
	(asm-CPPFLAGS): Add -DGAS_SYNTAX.

	* stdio/printf_fp.c: Major rewrite of sysdeps/generic/printf_fp.c,
	working with the fractional parts as multiprecision integers
	instead of doubles, using mpn functions from GNU MP.  Done with
	much help from tege@cygnus.com.
	* sysdeps/generic/printf_fp.c, sysdeps/ieee754/printf_fp.c,
	sysdeps/m68k/fpu/printf_fp.c: Files removed.

Fri Dec 24 23:09:44 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/dbl2mpn.c, sysdeps/iee754/dbl2mpn.c: New files.
	* sysdeps/stub/asm.h: New file.
	* sysdeps/m68k/add_n.S, sysdeps/m68k/addmul_1.S,
	sysdeps/m68k/mul_1.S, sysdeps/m68k/sub_n.S,
	sysdeps/m68k/submul_1.S, sysdeps/m68k/asm.h,
	sysdeps/generic/add_1.c, sysdeps/generic/add_n.c,
	sysdeps/generic/addmul_1.c, sysdeps/generic/cmp.c,
	sysdeps/generic/divmod.c, sysdeps/generic/divmod_1.c,
	sysdeps/generic/lshift.c, sysdeps/generic/rshift.c,
	sysdeps/generic/mod_1.c, sysdeps/generic/mul.c,
	sysdeps/generic/mul_1.c, sysdeps/generic/mul_n.c,
	sysdeps/generic/sub_n.c, sysdeps/generic/submul_1.c,
	sysdeps/generic/get_str.c, sysdeps/i386/addmul_1.S,
	sysdeps/i386/mul_1.S, sysdeps/i386/submul_1.S,
	sysdeps/alpha/gmp-mparam.h, sysdeps/generic/gmp-mparam.h,
	sysdeps/i386/asm.h, stdio/longlong.h, stdio/gmp.h,
	stdio/gmp-impl.h: New files, taken from GNU MP.
	* stdio/Makefile (mpn-headers, mpn-routines): New variables.
	(routines): Include $(mpn-routines).
	(distribute): Include $(mpn-headers).
	[gmp-srcdir]: Much code to copy mpn source from $(gmp-srcdir).
	* configure.in: Check for a --with-gmp argument and set gmp-srcdir
	in config.make to its value (error if no arg given).  Move
	config_vars initialization before this (right after arg parsing).

Thu Dec 23 01:44:12 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/m68k/Makefile (m68k-syntax-flag): New variable.
	(compile-command.S): Include $(m68k-syntax-flag) in cpp flags.

	* manual/Makefile (install-data): New target.
	(install-%): New pattern rule.

	* Makerules ($(bindir)/...): Do $(make-target-directory) first.

Thu Dec 23 01:03:19 1993  Brendan Kehoe  (brendan@zen.org)

	Port to the DEC Alpha running OSF/1. (75% done)
	* sysdeps/unix/bsd/osf1/alpha/start.S: New file.
	* sysdeps/unix/bsd/osf1/alpha/sysdep.h: New file.
	* sysdeps/unix/bsd/osf1/alpha/sysdep.S: New file.
	* sysdeps/unix/bsd/osf1/alpha/__brk.S: New file (incomplete).
	* sysdeps/unix/bsd/osf1/alpha/__fork.S: New file.
	* sysdeps/unix/bsd/osf1/alpha/__pipe.S: New file.
	* sysdeps/unix/bsd/osf1/alpha/__getdents.S: New file.
	* sysdeps/unix/bsd/osf1/alpha/__waitpid.c: New file.
	* sysdeps/unix/bsd/osf1/alpha/__wait4.S: New file.
	* sysdeps/unix/bsd/osf1/dirstream.h: New file.
	* sysdeps/unix/bsd/osf1/alpha/statbuf.h: New file.
	* sysdeps/unix/bsd/osf1/direct.h: New file.
	* sysdeps/unix/bsd/osf1/dirstream.h: New file.
	* sysdeps/unix/bsd/osf1/Makefile: New file, defining LDFLAGS.

	* sysdeps/unix/ioctls-tmpl.c [__osf1__ && __alpha__]: Clean up the
	ioctls that we get for an Alpha running OSF/1.

	* sysdeps/unix/common/glue-ctype.c: Add code for HAVE__LOCP.
	(main): If new macro TABLE_NAME is defined, use that for the name
	of the array we're writing out, rather than what's defined in TABLE.
	* sysdeps/unix/common/configure.in (AC_HAVE_FUNCS): Add `_locp'.

	* sysdeps/unix/bsd/osf1/sigaction.h: Add SA_ONSTACK, SA_RESTART,
	and SA_DISABLE.
	* sysdeps/alpha/setjmp.S: Add .end directive.

	* time/sys/time.h (struct timeval): Make members TV_SEC and
	TV_USEC be `int', not `long', since it won't hurt other hosts, but
	kills the Alpha.
	* resource/sys/resource.h (struct rusage): Make all non-timeval
	members be `long', not `int'.

	* sysdeps/alpha/strlen.c (strlen): Go from 0 to 7, not 3, since
	there are 8 bytes in a long on the Alpha.  Check for '\0' after
	checking for C in initial byte-by-byte loop.
	* sysdeps/alpha/strchr.c (strchr): Likewise. Shift out to 64 when
	setting CHARMASK.
	* sysdeps/alpha/memchr.c (memchr): Likewise.  Return NULL if we
	didn't find it in N characters, or N == 0.  Declare CP to be an
	unsigned char*.

	* sysdeps/alpha/Makefile: Add divrem stuff.
	* sysdeps/alpha/DEFS.h: New file.
	* sysdeps/alpha/divrem.m4: New file.
	* sysdeps/alpha/macros.m4: New file.
	* sysdeps/alpha/Dist: Add .S files, divrem.m4, macros.m4, and DEFS.h.

	* sysdeps/unix/bsd/osf1/alpha/vhangup.S: New file.  (Only a
	temporary workaround, until we figure out how to deal with the
	SYS_ult syscalls better.)
	* sysdeps/unix/bsd/osf1/alpha/killpg.S: Likewise.
	* sysdeps/unix/bsd/osf1/alpha/__sigvec.S: Likewise.
	* sysdeps/unix/bsd/osf1/alpha/__sigpause.S: Likewise.
	* sysdeps/unix/bsd/osf1/alpha/__sigstmsk.S: Likewise.
	* sysdeps/unix/bsd/osf1/alpha/recv.S: Likewise.
	* sysdeps/unix/bsd/osf1/alpha/send.S: Likewise.

	* sysdeps/alpha/__math.h (__copysign): Add __CONSTVALUE.
	* sysdeps/alpha/__copysign.c: Define __NO_MATH_INLINES.
	* sysdeps/alpha/fabs.c: Likewise.

Wed Dec 22 17:55:49 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* crypt/*: New version from glad.

	* sysdeps/unix/sysv/sysv4/Dist: Add __getpgid.c and __setpgid.c.

	* dirent/Makefile (headers): Define; include dirent.h & dirstream.h.

Tue Dec 21 14:24:38 1993  Brendan Kehoe  (brendan@zen.org)

        * sysdeps/unix/sysv/sysv4/i386/statbuf.h (struct stat): Add
        missing member ST_FSTYPE.  Fixup types on various members to make
        this properly reflect what the system has.

	* misc/ioctl.c (ioctl): Declare 2nd arg to be unsigned long int to
	match the change in ioctl.h.

Tue Dec 21 00:01:01 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.8.

	* dirent/dirent.h (struct dirent): Add `d_reclen'; make `d_namlen'
	an `unsigned short int' instead of `size_t'.
	(DIR): Move typedef to sysdep file dirstream.h.
	* sysdeps/unix/dirstream.h: New file, broken out of dirent.h.
	* sysdeps/stub/dirstream.h: New file.
	* sysdeps/unix/bsd/dirstream.h: New file.
	* sysdeps/unix/bsd/readdir.c: New file.

Mon Dec 20 23:29:07 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/start.c: Include <sysdep.h>.
	* sysdeps/unix/sysv/sysv4/i386/start.c: File removed.

Sat Dec 18 01:37:25 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/i386/start.c: New file.  Same as
	sysdeps/unix/i386/start.c, but defines NO_UNDERSCORES.

	* sysdeps/unix/sysv/sysv4/waitflags.h: New file, with non-standard
	WEXITED and WTRAPPED macros defined.
	* sysdeps/unix/sysv/sysv4/__waitpid.c: New file.
	* sysdeps/unix/sysv/sysv4/siginfo.h: New file.
	* sysdeps/unix/sysv/sysv4/__waitid.S: New file.
	* sysdeps/unix/sysv/sysv4/Makefile (sysdep_routines): Mention __waitid.
	* sysdeps/unix/sysv/sysv4/pipestream.c: New file, to avoid having
	NO_WAITPID set.
	* sysdeps/unix/sysv/sysv4/Dist: Added __waitid.S and siginfo.h.

	* sysdeps/unix/sysv/sysv4/__getpgid.c: New file.
	* sysdeps/unix/sysv/sysv4/__setpgid.c: New file.
	* sysdeps/unix/sysv/sysv4/Makefile (sysdep_routines): Add them.

	* sysdeps/unix/sysv/sysv4/__getpgrp.c (__getpgrp): It's the 0th
	subcall for getpgrp, not 4th.
	* sysdeps/unix/sysv/sysv4/__setpgrp.c (__setpgrp): Likewise, it's
	the 1st, not the 5th.

Fri Dec 17 15:05:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* misc/sys/ioctl.h (__ioctl, ioctl): Make second arg `unsigned
	long int' instead of `int' (4.4 uses unsigned long).

	* string/string.h (strcat): Parameters names were swapped.

Fri Dec 17 01:18:27 1993  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* Made the Hurd error system 0x10 again; this undid many
	of the changes of Nov 23.  Affected all the err_ files in
	mach; recreated sysdeps/hurd/err_hurd.sub; changed back
	err_kern.sub to have the Unix error codes.

Thu Dec 16 15:40:25 1993  Brendan Kehoe  (brendan@zen.org)

	* stdio/temptest.c (main): Remove the files we created once we're
	done.  Make return type int, and exit with 0 status.

	* sysdeps/posix/tempname.c (__stdio_gen_tempname): Fix typo of
	extra comma in sprintf call.

Tue Dec 14 13:08:35 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/tempname.c (__stdio_gen_tempname): Rewrote main
	logic.  Removed INFOS structure array and replaced it with
	INDICES, an array of size_t.  Removed INFO ptr and replaced it
	with IDX, which points to either elt of INDICES.  Rewrite main
	loop to increment *IDX until it hits 62*62*62.  Construct file
	name by dividing out two powers of 62 from *IDX and using the
	modulus as an index into `letters'.

	* sysdeps/unix/common/Makefile (sysdep_routines): Only add
	bsd_getgrp here if the sysdep __getgrps.? chosen is unix/common's.

	* posix/fnmatch.h: #undef FNM_PATHNAME, FNM_NOESCAPE, and
	FNM_PERIOD before defining them.

	* time/__tzset.c (compute_change): In M case when tallying time in
	months before specified month, count to RULE->m - 1, not ...+1.

	* manual/Makefile (realclean): Remove index, aux, and toc files
	created by TeX.

Mon Dec 13 19:33:33 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/__wait3.c: Use __WAIT_STATUS_DEFN in place of
	__WAIT_STATUS in arg type.

Wed Dec  8 15:59:45 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/memalign.c: Set L->next and _aligned_blocks only when L
	is newly allocated, not when we reuse an old one.

Tue Dec  7 16:04:22 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* io/fcntl.c: Replace function_alias use with:
	[HAVE_GNU_LD]: Use symbol_alias.
	[! HAVE_GNU_LD]: Define fcntl to use stdarg and call __fcntl.

Mon Dec  6 17:50:05 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/i386/sysdep.S (syscall_error): Fix labels so
	they'll compile.

	Make the Solaris port work dammit.
	* sysdeps/unix/sysv/sysv4/solaris2/statbuf.h (struct stat): Make
	ST_DEV member be unsigned long, not short.

	* sysdeps/unix/sysv/sysv4/solaris2/direct.h: New file, same as
	sysv4/direct.h but uses strlen instead of the offset-based
	computation of the name length, since that doesn't reliably work
	for Solaris.

        * sysdeps/unix/sysv/sysv4/solaris2/sysdep.h (PSEUDO): Don't move
        %g0 into %o0, since that will clobber the real return value. Take
        out the retl at the end, why in the world did I put it in there?

Mon Dec  6 17:27:26 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile ($(objpfx)crt1.o): Add target to $(objpfx)Mcrt1.o
	rule; generalize commands.
	(install-lib): Add crt1.o.

	* sysdeps/unix/Makefile ($(common-objpfx)ioctls): Use -x flag to
	fgrep to match only entire lines.

Sun Dec  5 01:53:43 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/bsd/ultrix4/mips/start.S: New file.
	* sysdeps/unix/bsd/ultrix4/mips/start.c: Deleted.

Thu Dec  2 18:29:01 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/bsd/ultrix4/mips/sysdep.S: Don't use dollar signs
	with the errnos.

	* sysdeps/stub/{__wait, __wait3, __wait4}.c,
	sysdeps/unix/bsd/bsd4.4/{__wait, __wait3}.c,
	sysdeps/unix/bsd/sun/sunos4/__wait4.c,
	sysdeps/posix/{__wait, __wait3}.c, posix/{wait, wait3, wait4}.c: Use
	__WAIT_STATUS_DEFN, not __WAIT_STATUS.

	* sysdeps/posix/killpg.c (killpg): Make arg PGRP __pid_t, not pid_t.
	* sysdeps/stub/killpg.c (killpg): Likewise.

	* setjmp/longjmp.c (longjmp): Only use __NORETURN if !HAVE_GNU_LD.
	* setjmp/_longjmp.c (_longjmp): Likewise.

Thu Dec  2 17:31:19 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/sys/wait.h (__WAIT_STATUS_DEFN): Define new macro.

	* Makerules (+install): Variable removed.
	(install-bin, install-lib, install-data, install-headers,
	install-others): New targets.
	(install-no-libc.a): Depend on them instead of $(+install).

	* Makefile (+subdir_targets): Add
	install-{no-libc.a,bin,lib,data,headers,others}.
	(install-no-libc.a): Don't depend on subdir_install.

Thu Dec  2 17:14:39 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/ieee754/__isnan.c (__isnan): Return __CONSTVALUE, to
	match declaration in math/math.h.

Thu Dec  2 15:48:19 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/africa, time/antarctica, time/asia, time/australasia,
	time/emkdir.c, time/europe, time/ialloc.c, time/northamerica,
	time/pacificnew, time/private.h, time/solar87, time/solar88,
	time/southamerica time/systemv, time/tzfile.h, time/zdump.c,
	time/zic.c: New data and code from ADO.
	* time/Makefile (tzfiles): Added backward.
	* time/backward: New file from ADO.

	* locale/C-ctype_ct.c: Remove _ISspace bit from BS (8).

Wed Dec  1 00:01:30 1993  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* mach/err_kern.sub: Frob around lack of GNU ld.

	* mach/errsystems.awk: The declaration of __mach_error_systems
	should not be static, but it should be const.

	* sysdeps/mach/hurd/errlist.awk (BEGIN): Deal with the case
	where you don't have GNU ld.

	* sysdeps/mach/hurd/Makefile: Define mib_hacks to make.

Tue Nov 30 23:24:07 1993  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* Makefile: install-no-libc.a needs to depend on subdir_install.

Mon Nov 29 16:21:38 1993  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/_strerror.c: Include <mach/errorlib.h>.

	* hurd/setuids.c: Put entire file inside #ifndef MIB_HACKS;
	it uses the old auth_makeauth call.

	* hurd/__setauth.c: Put entire file inside #ifndef MIB_HACKS;
	it depends on cthreads to compile, which is not yet integrated.

	* hurd/hurdpath.c (__hurd_path_lookup): cast to avoid GCC warning.

Wed Nov 24 00:59:15 1993  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* hurd/Makefile: Commented out hurdauth; recent changes to
	auth.defs prevent it from working now.

	* mach/mach_error_string.c (do_compat): Change name to
	__mach_error_map_compat; make it no longer static.
	(mach_error_type, mach_error_string_int): Use
	__mach_error_map_compat instead of do_compat.
	* sysdeps/mach/_strerror.c: Use __mach_error_map_compat.

	* mach/devstream (output/write_some): Cast fourth argument to
	device_write_inband to char * to avoid warning.
	(output): Call to write_some mentioned variable `start' from
	a previous version of the function; changed this to f->__buffer.

Tue Nov 23 23:16:13 1993  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	[ The net effect of the following change is to eliminate error
	systems which are specific to single-server Mach systems, and
	to put the Hurd errors where the Unix errors were. ]
	* mach/{err_bootstrap.sub,err_ipc.sub,err_server.sub,err_us.sub}:
	None of these are used for the Hurd; we shouldn't pretend that
	they are meaningful in our environment.  The files have been
	renamed to equivalent names with an equal sign prepended; this
	will inhibit distribution and prevent the Makefile from looking at
	them.
	* mach/err_kern.sub: Deleted the definitios of err_codes_unix;
	get the strings from _sys_errlist.  Rename `unix' to `hurd'.
	Rename err_os_sub to be err_kern_sub to match what errsystems.awk
	expects.
	* sysdeps/mach/hurd/err_hurd.sub: Deleted this file.
	* sysdeps/mach/hurd/errnos.awk: Changed definition of _HURD_ERRNO
	to be correct.

	* sysdeps/mach/hurd/Makefile: use gawk, not awk.

	* mach/errsystems.awk: Generally rewrote the printf.  It's now
	closer to Roland's original, but without the $i mistake at all,
	in any form.

Tue Nov 23 20:21:06 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/{i386,sysv/sysv4/solaris2,sysv/i386/linux,bsd/m68k,
	bsd/ultrix4/mips,bsd/vax}/sysdep.S: Define _ERRNO_H before
	including <errnos.h>; otherwise <errnos.h> does not define most
	macros (importantly, EAGAIN!).

Tue Nov 23 12:43:38 1993  Michael I. Bushnell  (mib at ernst.gnu.ai.mit.edu)

	* mach/errsystems.awk: $i is not an index; make i a variable and
	increment it properly.  Don't call `err_get_system'; use the
	system number as the index in the array directly.

        * mach/errorlib.h: Added `const' in all the right places.
        * sysdeps/mach/hurd/err_hurd.sub: Cast _sys_errlist to
	the right type.  Better to declare it right in stdio/stdio.h, but
	I don't dare change that file lest Roland call me a twit.
	* mach/err_us.sub: Add more brackets to initializer to shut GCC up.

	* sysdeps/mach/hurd/err_hurd.sub: Delete keyword `const'; this
	is taken care of by the `#define static static const' found in
	errsystems.c as created by mach/errsystems.awk.
	* mach/errsystems.awk: Ditto for declaration of __mach_error_systems.

	* sysdeps/mach/hurd/err_hurd.sub: Change <errnos.h> to <errno.h>;
	errnos.h doesn't define most stuff unless it is included from errno.h.

	* mach/mach_error_string.c (mach_error_string_int): Delete unused
	variable `err_str'.

	* mach/mach_error_string.c (do_compat): Declare to be void.
	(mach_error_string,mach_error_type, mach_error_string_int):
	Declare return type as const char *.
	* mach/mach_error.h: Change declarations to match.

	* mach/errsystems.awk: The array that split creates is origin 1,
	not origin 0; fixed loop to match.

	* sysdeps/mach/hurd/errnos.awk: Ernst's awk doesn't grok
	backslash-newline inside strings.

Sat Nov 20 19:02:25 1993  Brendan Kehoe  (brendan@zen.org)

	* math/__finite.c (__finite): Return __CONSTVALUE, to match math.h.
	* math/__scalb.c (__scalb): Likewise.
	* math/copysign.c (copysign): Likewise.
	* math/drem.c (drem): Likewise.
	* math/expm1.c (expm1): Likewise.
	* math/finite.c (finite): Likewise.
	* math/infnan.c (infnan): Likewise.
	* math/isinf.c (isinf): Likewise.
	* math/isnan.c (isnan): Likewise.
	* math/logb.c (logb): Likewise.
	* math/rint.c (rint): Likewise.
	* math/scalb.c (scalb): Likewise.
	* sysdeps/generic/atan.c (atan): Likewise.
	* sysdeps/ieee754/__copysign.c (__copysign): Likewise.
	* sysdeps/ieee754/__drem.c (__drem): Likewise.
	* sysdeps/ieee754/__isinf.c (__isinf): Likewise.
	* sysdeps/ieee754/__logb.c (__logb): Likewise.
	* sysdeps/ieee754/ldexp.c (ldexp): Likewise.
	* sysdeps/ieee754/log10.c (log10): Likewise.

        * setjmp/_longjmp (_longjmp): Add __NORETURN.
	* setjmp/longjmp (longjmp): Likewise.

Thu Nov 18 04:16:34 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* string/strerror.c (strerror): Call _strerror_internal to do the
	work, passing it a scratch buffer.
	* stdio/perror.c: Likewise.
	* string/Makefile (routines): Add _strerror.
	* sysdeps/generic/_strerror.c (_strerror_internal): New file.

	* configure.in (config.status): Make it pass its args to configure.

Thu Nov 18 03:52:32 1993  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* stdio/__vfscanf.c (__vfscanf): Put the floating point cases
	(e,E,f,g,G) inside #ifndef MIB_HACKS; roland thikgs strtod crashes
	the compiler.  Wheee.

Thu Nov 18 03:21:51 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* errno.h [__USE_GNU__]: Declare program_invocation_name and
	program_invocation_short_name.

Thu Nov 18 00:07:37 1993  Michael I. Bushnell  (mib at ernst.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/start.c (start1): Don't add one to
	the return value of split_args; it counts them just fine by
	itself.  Do add one when sizing the arrays.

Mon Nov 15 00:19:48 1993  Noel Cragg  (noel@geech.gnu.ai.mit.edu)

	* time/mktime.c: add TIMES_THROUGH_SEARCH variable to make sure
	that we don't get caught in an infinite loop (would be bad,
	indeed, for a library routine).

Sun Nov 14 18:48:28 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* misc/sys/cdefs.h (__NORETURN, __CONSTVALUE): Use
	`__attribute__', not `__attributes__'.
	Test __GNUC_MINOR__ < 6, not < 5.

Wed Nov 10 05:39:15 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/morecore.c: Only declare sbrk #ifdef __GNU_LIBRARY__.
	Cast its return value.

	* sysdeps/unix/bsd/m68k/syscall.S: Use movel in place of moveal.

	* configure.in (signed size_t check): Don't use AC_DEFINE; do it
	by hand and insert -U__SIZE_TYPE__ before -D.

	* posix/unistd.h: Declare syscall.

	* sysdeps/m68k/fpu/__math.h (__isnan, __isinf): Use __CONSTVALUE
	in prototypes.

	* configure.in (Makefile): Write ARCH=`pwd`, rather than
	substituting in the directory name at configure time.

	* sysdeps/mach/i386/syscall.S: New file.

Tue Nov  9 06:29:15 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (os = netbsd* | 386bsd*): base_os=unix/bsd/bsd4.4.
	Set --with-gnu-{ld,as} implicitly when base_os is bsd4.4.

	* Version 1.06.7.

	* misc/Makefile (routines): Add syscall.
	* sysdeps/unix/syscall.S, sysdeps/stub/syscall.c,
	sysdeps/unix/bsd/sun/m68k/syscall.S, sysdeps/unix/bsd/m68k/syscall.S,
	sysdeps/unix/i386/syscall.S: New files.
	* sysdeps/unix/bsd/hp/m68k/sysdep.h (DO_CALL): First arg
	is syscall number, not name.
	(PSEUDO): Pass POUND (SYS_ify (syscall_name)) to DO_CALL.
	* sysdeps/unix/bsd/sony/newsos/m68k/sysdep.h (DO_CALL, PSEUDO):
	Likewise.  Also, do movel into d0 before linkw, so the argument
	could conceivably pop the stack.
	* sysdeps/unix/bsd/hp/m68k/__brk.S: Pass complete number to DO_CALL.

	* sysdeps/unix/sysv/Dist: sys_getdents.S was renamed s_getdents.S.

Thu Nov  4 01:23:59 1993  Michael I. Bushnell  (mib at ernst.gnu.ai.mit.edu)

	* string/stpncpy: Fix typo; according to gnu-stabs.h the name
	inside the DEFUN should be the *non* __ version.
	* sysdeps/generic/__stpncpy.c: Missing declaration of s.

Wed Nov  3 09:35:30 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/Makefile ($(objpfx)errlist.c): Conditionalize these
	rules to be used only when errlist.c is otherwise a stub.

Fri Oct 29 17:29:20 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* string/stpncpy.c: New file.
	* sysdeps/generic/__stpncpy.c: New file.
	* string/Makefile (routines): Add stpncpy and __stpncpy.
	* string/string.h [__USE_GNU__]: Declare them.

Thu Oct 28 17:13:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/errnos-tmpl.c (DO): If NAME is "EWOULDBLOCK",
	write "#define EWOULDBLOCK EAGAIN" and change NAME to
	"EWOULDBLOCK_sys".
	* sysdeps/unix/{i386,sysv/sysv4/solaris2,sysv/i386/linux,bsd/m68k,
	bsd/ultrix4/mips,bsd/vax}/sysdep.S [EWOULDBLOCK_sys]: Translate
	EWOULDBLOCK_sys into EAGAIN.
	* Makefile (distribute): Add move-if-change.
	* move-if-change: New file.

Tue Oct 26 18:19:34 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* misc/sys/cdefs.h: Define __NORETURN and __CONSTVALUE.
	For GCC 2.5 and later, use __attributes__ (({volatile,const})).
	* stdlib/stdlib.h: Don't define either here.
	* math/math.h: Likewise.
	* posix/unistd.h: Likewise.
	* time/time.h: Likewise.
	* stdio/stdio.h: Likewise.
	* setjmp/setjmp.h: Likewise.

	* posix/sys/wait.h (__WAIT_STATUS): Use union hack defn for GCC
	2.4 and up (testing __GNUC__ and __GNUC_MINOR__).

	* sysdeps/unix/sysv/sco3.2.4/__sysconf.S: Don't include <limits.h>.

	* Makerules [inhibit-sysdep-asm]
	(open-check-inhibit-asm, close-check-inhibit-asm): New variables.
	($(+sysdir_pfx)sysd-rules): Use them around .s and .S rules.
	Depend on existing sysdep makefiles.

Mon Oct 25 15:56:41 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/killpg.c: Include <sys/types.h> for pid_t.

	* sysdeps/posix/tempname.c (__stdio_gen_tempname): Take new arg
	STREAMPTR.  When non-nil, use __open with O_EXCL to test for
	existence, and set *STREAMPTR to new stream on returned fd.
	* stdio/stdio.h: Update prototype.
	* sysdeps/stub/tempname.c: Here too.
	* stdio/tmpfile.c: Pass &F to __stdio_gen_tempname instead of
	using fopen.
	* stdio/tmpnam.c: Pass extra NULL arg.
	* stdio/tempnam.c: Likewise.

	* configure.in (switches): Only put --os-{release,version} here.
	(config.status): Write $configure_args in place of $config $switches.

	* signal/Makefile (routines): Renamed sigaltstack to sigaltstk.
	* sysdeps/stub/sigaltstack.c: Renamed to sigaltstk.c.
	* sysdeps/unix/bsd/bsd4.4/sigaltstack.S: Renamed to sigaltstk.S.
	* sysdeps/unix/sysv/sys_getdents.S: Renamed to s_getdents.S.
	* sysdeps/unix/sysv/Makefile (sysdep_routines): Changed reference.

Fri Oct 22 03:47:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/realloc.c [MEMMOVE_MISSING]: Test this to use safe_bcopy.
	[emacs]: Don't define safe_bcopy.

	* time/zdump.c, time/europe: New versions from ADO.

	* Rules (dont_distribute): Export this variable.
	(subdir_echo-distinfo): Echo its value for +nodist+.

Thu Oct 21 15:58:08 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/__dup2.c: Include <limits.h>.
	[OPEN_MAX]: Fail with EBADF if FD2>=OPEN_MAX.

	* sysdeps/unix/Makefile (sys/param.h): Conditionalize all this
	code to happen only when there is no sysdep sys/param.h.

Wed Oct 20 03:35:41 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (make-dummy-dep): Change to `ln $(objpfx)dummy.dep $@'.
	($(objpfx)dummy.dep): Create new file containing comment.
	($(objpfx)%.dep: $(objpfx)%.s): Depend on $(objpfx)dummy.dep.
	($(+sysdir_pfx)sysd-rules): Likewise in generated rule.

Mon Oct 18 04:22:42 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* signal/signal.h (killpg): Make PGRP arg pid_t.
	* sysdeps/posix/killpg.c (killpg): Likewise.
	* sysdeps/stub/killpg.c (killpg): Here too.

	* posix/glob/configure.in: Use AC_HAVE_HEADERS instead of
	AC_MEMORY_H and AC_UNISTD_H; omit AC_USG (not needed).

	* Rules (generated): New target.

	* Makefile (subdirs): Use filters to put mach and hurd first in
	the list if they are in it at all.
	* Makerules (before-compile): Reorder similarly, matching any
	generated mach or hurd files.

Fri Oct 15 17:57:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/mk-stdiolim.c [! OPEN_MAX]: Use _POSIX_OPEN_MAX
	for FOPEN_MAX value.
	[! PATH_MAX]: Use 1024 (twice _POSIX_PATH_MAX) for FILENAME_MAX value.

	* Makerules (in-Makerules): Define this variable before including
	sysd-Makefile.

Sun Oct 10 14:31:35 1993  Jim Meyering  (meyering@comco.com)

	* posix/fnmatch.c [CONFIG_BROKETS]: Include <config.h> only under
	this condition, else "config.h".

Tue Oct 05 16:08:39 1993  Jim Meyering  (meyering@comco.com)

	* time/mktime.c [CONFIG_BROKETS]: Include <config.h> only under
	this condition, else "config.h".

Thu Sep 23 15:14:08 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/__dup2.c: New file.

Wed Sep 22 16:58:29 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/solaris2/statbuf.h: New file.
	* sysdeps/unix/sysv/sysv4/i386: New directory.
	* sysdeps/unix/sysv/sysv4/i386/statbuf.h: New file.

Fri Sep 17 04:03:26 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (+make-deps): Put output in temp file and use atomic mv.

	* Makerules ($(+sysdir_pfx)sysd-rules): New target, the rule part
	of what was in sysd-Makefile.  Include it.
	($(+sysdir_pfx)sysd-Makefile): Do just includes here.  Move the
	generated implicit rules to sysd-rules.  Put the output into a
	temp file and use atomic mv to final target.
	(before-compile): Filter out existing files from value, after
	sysd-Makefile but before sysd-rules.

Thu Sep  9 22:28:13 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile (%/configure): Copy rule from Make-dist.

Mon Sep  6 19:57:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (sources, objects): Move override definitions to
	before +depfiles calculation.

	* time/{asia,australasia,europe,zdump.c}: New versions from ADO (93e).

Mon Aug 30 13:40:34 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* string/string.h (memmem): Reverse argument order, to be like strstr.
	* sysdeps/generic/memmem.c: Here too.

	* dirent/scandir.c: For error return, save errno around closedir.
	Call closedir (DP) before returning successfully.

Thu Aug 26 19:26:06 1993  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/solaris2/sysdep.h: Rewritten to not use
	the generic sparc sysdep.h.
	(PSEUDO): Use trap 8, not 0. Also just put %g0 in %o0, without
	subtracting 1.
	(ENTRY): Align on 4, and add a `.type' directive.
	* sysdeps/unix/sysv/sysv4/solaris2/sysdep.S: New file.

Fri Aug 20 19:37:55 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/generic/abort.c: Remove unused variable ABORTING.

Thu Aug 19 17:45:34 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makeconfig [!objdir] [!..] (common-objdir): Set to `.'.

Wed Aug 18 15:10:13 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/__vfscanf.c (__vfscanf: number): Reverse sense of
	NUMBER_SIGNED conditional in assignment code.

Mon Aug 16 15:49:13 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/Makefile (syscall.h): Add sed
	s/SYS_syscall_basenum/syscall_basenum/g.  SYSCALL_BASENUM is a
	macro both defined and used in <syscall.h>; we must undo our
	prependation of `SYS_'.

	* Version 1.06.6.

Fri Aug 13 16:53:02 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/__vfscanf.c: New local variable NUMBER_SIGNED.
	(%x, %X, %o, %u): Set it to zero.
	(%d, %i): Set it to one.
	(number): If NUMBER_SIGNED is set, use strtol and store in ...int*.
	If clear, use strtoul an store value in unsigned ...int*.

	* malloc/malloc.h: Undo last change (_AIX32).
	(memory_warnings): Use const instead of __const in prototype.

Fri Aug 13 00:22:01 1993  John Grabowski  (johng@whiskey.media.mit.edu)

	* configure.in (os = osf1*): base_os=unix/bsd.

Thu Aug 12 16:37:13 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/valloc.c [__GNU_LIBRARY__ || _LIBC]: Include <stddef.h>
	before trying to use size_t to declare __getpagesize.
	Include <sys/cdefs.h> before trying to use __P.

	* posix/{fnmatch,glob}.c, malloc/malloc.h [HAVE_CONFIG_H]: Include
	<config.h> instead of "config.h".  This is so that a compilation
	using -I. -I$srcdir will use ./config.h rather than
	$srcdir/config.h (which it would do when glob.c was found in $srcdir).

	* malloc/malloc.h [_AIX32]: Use !__STDC__ defns of __P, const, __ptr_t.

Mon Aug  9 16:56:31 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (-e check): Don't rely on $(findstring e,$(MAKEFLAGS))
	since that also trips for --no-print-directory.
	Instead actually see if -e's functionality is taking place.

	* malloc/realloc.c: Call _free_internal instead of free in most places.

	* configure.in (arg parsing): No spaces around = in eval.

	* sysdeps/i386/abort.c: New file.
	* stdlib/abort.c: Moved to sysdeps/generic/abort.c.
	(abort): Don't try to do stdio cleanup, since we can't guarantee
	it anyway.

Fri Aug  6 17:59:56 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules ($(+install)): Don't depend on installdirs.
	(make-target-directory): New define.
	(do-install): Do $(make-target-directory) beforehand.

Tue Aug  3 02:22:41 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/sys/reboot.h: New file.
	* sysdeps/unix/bsd/sys/reboot.h: New file, snarfed from 4.4.
	* misc/Makefile (headers): Add sys/reboot.h.

	* stdio/stdio.h (__io_{read,write,seek,close,fileno}): Renamed to
	__io_*_fn, so as not to conflict with the Hurd mig stubs.
	* internals.c: Changed uses.

	* sysdeps/unix/bsd/signum.h (SIGINFO): Define as 29.

	* Makerules (+includes): Don't set this here.
	* Makeconfig (+includes): Put $(+sysdep-includes) in the value here.

	* posix/unistd.h [__USE_MISC]: Declare mktemp and mkstemp.

Mon Aug  2 16:59:12 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/valloc.c: Move getpagesize goop to before malloc.h.
	[_LIBC]: Test this as well as __GNU_LIBRARY__ (either one) to use
	__getpagesize instead of "getpagesize.h".

Sun Aug  1 16:55:18 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (arg parsing): For `--with-foo=bar', do
	"with_foo='bar'".  For `--with-fnord', do "with_fnord=yes".
	* sysdeps/mach/configure: New file, groks `--with-mach=DIR'.

Fri Jul 30 00:01:00 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (os = gnu*): Set $base_os, not $os, to mach/hurd.

Thu Jul 29 17:46:02 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* ctype/ctype.h (__isctype): Don't test !=0, to avoid possible
	extra test insn.

Sun Jul 25 22:19:04 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* setjmp/setjmp.h [! __FAVOR_BSD] (_longjmp): Define as longjmp.

Thu Jul 22 14:57:15 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/osf1/sigaction.h: New file.

	* sysdeps/stub/signum.h: Deansideclized.
	* sysdeps/stub/pipestream.c (pclose): Test STREAM->__ispipe
	instead of __ispipe (STREAM).
	* sysdeps/stub/__wait3.c: Fix arg types.
	* sysdeps/stub/__ioctl.c: Add missing close paren.
	* sysdeps/stub/__getpgsz.c: Include <stddef.h> for size_t.
	* sysdeps/stub/__get[gu]id.c: Include <sys/types.h>; fix return type.
	* sysdeps/stub/__set[gu]id.c: Include <sys/types.h>; fix arg type.
	* sysdeps/stub/__mknod.c: Include <sys/types.h>; fix arg types.

	* sysdeps/generic/termbits.h (INLCR, ISTRIP): Fixed typo'd values.

	* stdio/stdio.h (vprintf): Fix last arg type to __gnuc_va_list.
	* stdio/vprintf.c (vprintf): Here too.

	* malloc/malloc.c (malloc) [SUNOS_LOCALTIME_BUG]: Put this crap
	after hook and initialization.

	* stdio/stdio.h (__validfp): Use a little anonymous struct to find
	the real stream ptr from in glue stream.  It used to rely on using
	`((int *) STREAM)[1]'; but that assumes no struct padding, and
	there will be some when int is 32 bits and pointers are 64.

	* malloc/mtrace.c: Use %lx instead of %x for `size_t' formats.

Wed Jul 21 18:20:41 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* malloc/malloc.c (malloc): Handle SUNOS_LOCALTIME_BUG.

Wed Jul 21 16:42:14 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/Makefile (extra-objs): Remove gratuitous - in `z.%'.

	* Makefile [+gnu-stabs] (generated): Add $(objpfx)munch-init.c.
	(distclean): Also remove sysd-Makefile and sysd-dirs in $(objpfx).
	(distclean) [objdir]: Also remove $(objpfx)Makefile.

	* sysdeps/posix/Makefile (generated): Add $(common-objpfx)mk-stdiolim.
	(generated, before-compile): Take defns out of ifeq ($(subdir),posix).

	* sysdeps/unix/common/Makefile (generated): Include ctype-glue.c,
	not glue-ctype.c.

	* sysdeps/unix/configure (unix_generated): New variable; collect
	names of created files in it.
	(config_vars): Write an assignment for `unix-generated' to that list.
	* sysdeps/unix/Makefile (generated): Append $(unix-generated)
	(with either $(objpfx) or $(sysdep_dir)/unix/ prepended to each file).

	* Makefile (clean): Pass no_deps=t to subdir_clean make.

Sun Jul 18 21:42:05 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/malloc.c (malloc): After getting more core, recompute
	BLOCK before adding to _heapinfo[BLOCK].free.size.

Fri Jul 16 16:32:40 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdlib/Makefile (generated): Prepend $(objpfx).
	* sysdeps/unix/sysv/Makefile (generated): Likewise.

	* sysdeps/posix/mktemp.c: Return when stat fails with ENOENT, not
	when it succeeds.

Wed Jul 14 14:51:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* locale/localeconv.c: Fix copying notice to LGPL.

Mon Jul 12 21:58:27 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/mcheck.c (reallochook): Set HDR->magic to MAGICWORD.

Mon Jul  5 15:55:08 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* malloc/realloc.c (memmove): Swap the args when calling safe_bcopy.

Thu Jul  1 16:26:56 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/malloc.c [_LIBC] (_malloc, _free, _realloc): Define these
	functions to just call malloc, free, and realloc, respectively.

Wed Jun 30 16:42:10 1993  Torbjorn Granlund  (tege@gnu.ai.mit.edu)

	* sysdeps/generic/memcmp.c (memcmp_bytes): New function for
	little endian machines.
	(memcmp_common_alignment, memcmp_not_common_alignment): Rework
	code computing return values.

Wed Jun 30 14:42:00 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/Makefile (local_lim.h): Only generate local_lim.h
	if the sysdep version would be stub.

	* sysdeps/unix/mk-local_lim.c: #include <stdio.h> before all else.

	* configure.in (config_{machine,vendor,os}): Store config.sub's
	output in these new variables.
	(machine, vendor, os): Set these from those.
	(config-name.h, config.make): Write $config_* (the original values
	from config.sub).

	* sysdeps/unix/sysv/sysv4/pgrpsys.S: Add arg count (3).

Tue Jun 29 02:47:46 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.4.

Mon Jun 28 00:37:12 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/internals.c (__stdio_check_funcs): New function, broken out
	of init_stream.
	(init_stream): Call it.
	* sysdeps/posix/pipestream.c (popen): Call __stdio_check_funcs
	before frobnicating STREAM's functions.

	* sysdeps/posix/pipestream.c (pclose): Free C, our data structure,
	not STREAM->__cookie after it's been restored.

	* sysdeps/generic/strchr.c: Check for '\0' as well as C, in initial
	byte-by-byte loop.

	* conf/portability.h: #undef BSD.

Sun Jun 27 23:46:05 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/m68k/__wait.S [__motorola__]: Use Motorola syntax.
	* sysdeps/unix/bsd/m68k/sysdep.S: Likewise.
	* sysdeps/unix/bsd/m68k/__pipe.S: Likewise.
	* sysdeps/m68k/__longjmp.c (__longjmp) [__motorola__]: Use
	Motorola syntax in jmp insn.

Fri Jun 25 16:17:07 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/{stub,posix,unix/sysv/sysv4}/__sysconf.c (__sysconf):
	For _SC_TZNAME_MAX, just return __tzname_max ().
	* sysdeps/unix/sysv/sco3.2.4/__sysconf.S: Define __sysconf, not
	sysconf.  For _SC_TZNAME_MAX, just jump to __tzname_max.

	Undo June 21 change that made __tzname_max a variable
	and expected TZNAME_MAX to sometimes be defined.
	POSIX.1 does not require that it be defined; sysconf is enough.
	* time/time.h (__tzname_max): Declare as a function.
	* posix/posix1_lim.h: Don't include <tzname_max.h>.
	* sysdeps/stub/tzname_max.h: File removed.
	* time/Makefile (headers): Remove tzname_max.h.
	(distribute): Remove make-tzlim.c.
	(extra-objs): Remove make-tzlim.o and make-tzlim.
	($(common-objpfx)tzname_max.h): Target removed.
	* time/make-tzlim.c: File removed.
	* time/__tzset.c (__tzname_cur_max): Define this variable instead
	of __tzname_max.
	(__tz_compute): Set __tzname_cur_max, not __tzname_max.
	(__tzname_max): New function.
	* time/tzfile.c (compute_tzname_max): Set __tzname_cur_max, not
	__tzname_max.

	* malloc/malloc.h [_MALLOC_INTERNAL] [! (_LIBC || STDC_HEADERS || USG)]
	(memmove): Don't define.
	* malloc/realloc.c [!_LIBC && !STDC_HEADERS && !USG] (safe_bcopy):
	New static function.
	(memmove): Define to safe_bcopy.

Wed Jun 23 15:10:51 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/pgrpsys.S: New file, #include sysv4 file.
	* sysdeps/unix/sysv/sco3.2.4/Dist: New file, list pgrpsys.S.

Tue Jun 22 02:44:16 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/Makefile (sysdep_routines): Use
	pgrpsys instead of sco_pgrp.
	* sysdeps/unix/sysv/sco3.2.4/{Dist,sco_pgrp.S}: Files removed.
	* sysdeps/unix/sysv/sco3.2.4/__{getpgrp,setpgrp,setsid}.c: Just
	include the respective unix/sysv/sysv4 files.

	* sysdeps/unix/sysv/sysv4/pgrpsys.S: New file.
	* sysdeps/unix/sysv/sysv4/__getpgrp.c: New file.
	* sysdeps/unix/sysv/sysv4/__setpgrp.c: New file.
	* sysdeps/unix/sysv/sysv4/__setsid.c: New file.
	* sysdeps/unix/sysv/sysv4/Dist: Add pgrpsys.S.
	* sysdeps/unix/sysv/sysv4/Makefile (sysdep_routines): Add pgrpsys.

	* sysdeps/unix/bsd/bsd4.4/__setsid.S: Moved from unix/sysv/sysv4.
	* sysdeps/unix/{bsd/sun/sunos4,bsd/ultrix4,sysv/linux}/__setsid.S:
	Include bsd4.4 instead of sysv4 file.

Mon Jun 21 19:08:04 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/posix1_lim.h: #include <tzname_max.h>.
	* sysdeps/stub/tzname_max.h: New file (no-op).
	* time/make-tzlim.c: New file.
	* time/Makefile (headers): Add tzname_max.h.
	(distribute): Add make-tzlim.c.
	(extra-objs): Add make-tzlim.o and make-tzlim.
	($(common-objpfx)tzname_max.h): New target.

	* sysdeps/unix/sysv/sco3.2.4/confname.h (_SC_TZNAME_MAX): Define.
	* sysdeps/unix/sysv/sco3.2.4/__sysconf.S: Detect arg being
	_SC_TZNAME_MAX, and return max of TZNAME_MAX and __tzname_max.

	* sysdeps/stub/__sysconf.c: Include <time.h> and <limits.h>.
	Handle _SC_TZNAME_MAX and return max of TZNAME_MAX and __tzname_max.
	* sysdeps/posix/__sysconf.c: Change _SC_TZNAME_MAX code to that.
	* sysdeps/unix/sysv/sysv4/__sysconf.c: Likewise.

	* time/time.h (__tzname_max): Declare as variable, not function.
	* time/__tzset.c (__tzname_max): Function removed.
	(__tz_compute): Set the __tzname_max variable.
	* time/tzfile.c (compute_tzname_max): New function.
	(__tzfile_{read,default}): Call it.

Sun Jun 20 18:32:49 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/zic.c, time/asia: New versions from ADO.

Wed Jun 16 17:24:28 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.3.

Fri Jun 11 15:44:53 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/m68k/__pipe.S: Use `movel' instead of `moveal',
	which sun3 as does not appear to grok.
	* sysdeps/unix/bsd/sun/m68k/__vfork.S: Likewise.

Thu Jun 10 20:23:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/m68k/Makefile (as-pipe-ok): Define if -pipe is used in
	compiler invocations, or if using GNU as.
	(compile-command.S): Define using a pipe if `as-pipe-ok' is defined,
	otherwise with a temporary file.

	* Makeconfig (gnu-as): Define if -DHAVE_GNU_AS appears in $(CPPFLAGS).

Wed Jun  9 15:14:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (os frobnication): Turn underscores as well as
	lowercase Vs into dots in os name.

	* sysdeps/unix/start.c [__GNUC__] (_start): Use asm name "start"
	only if [! NO_UNDERSCORES].

Tue Jun  8 14:51:00 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* sysdeps/unix/bsd/ultrix4/mips/__handler.S: Don't save the stack
	pointer.

Mon Jun  7 21:01:24 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/Makefile (tzcompile): Remove -d switch, since zic-cmd has one.

	* time/{private.h,zic.c}: New versions from ADO.

	* sysdeps/unix/bsd/hp/m68k/__brk.S (error): Renamed label from `1',
	(__brk): Use DO_CALL instead of movel and trap.

	* sysdeps/unix/bsd/sony/newsos4: Renamed sysdeps/unix/bsd/sony/newsos.
	* sysdeps/unix/bsd/sony/m68k/{Implies,sysdep.h}: Moved there.

	* sysdeps/unix/bsd/hp/m68k/sysdep.h (DO_CALL): New macro, broken
	out of PSEUDO.
	(PSEUDO): Use it.
	* sysdeps/unix/bsd/sony/newsos4/m68k/sysdep.h
	(DO_CALL, PSEUDO): Likewise.

	* configure.in: Set --with-gnu-{ld,as} for os=bsd4.4.

Fri Jun  4 14:11:00 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/i386/{strlen,memchr}.c: Use `repnz' instead of `repne'.

	* time/Makefile (zonenames): Rename zones-* to z.* so they all fit
	in 14 chars.
	(extra-objs): Here too.

	* sysdeps/unix/sysv/direct.h (D_RECLEN): New macro.
	* sysdeps/unix/readdir.c (D_RECLEN): If not defined, define to use
	`d_reclen' member.
	(readdir): Use D_RECLEN (DP) in place of DP->d_reclen.

Thu Jun  3 16:54:29 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/m68k/bytesex.h: New file.

	* sysdeps/unix/ioctls-tmpl.c [sony_news]: Define KANJI before
	including <sys/ioctl.h>.

Wed Jun  2 17:45:38 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/Makefile (%.gz): Renamed target from %.z; use -v flag.
	(malloc/ChangeLog): Use mv -f.

Mon May 31 21:49:04 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.2 released.

	* manual/Makefile: Remove all uses of $(objpfx).  Since the
	generated files are distributed, they reside in the source
	directory.

	* malloc/mtrace.c: #include <stdio.h>; malloc.h no longer does.

	* sysdeps/posix/sleep.c: Restore signal mask to OSET before
	returning.  Save errno on entry and restore it before returning.

	* Makeconfig (zonedir): New variable.
	* time/Makefile (localtime-file, posixrules-file, install-others,
	$(localtime-file), $(posixrules-file), tz-cc): Use $(zonedir) in
	place of $(datadir)/zoneinfo.
	(tzcompile): Omit -d switch.
	(zic-cmd): Add `-d $(zonedir)'.

Sun May 30 20:04:50 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/stdio_init.c: (int)cookie is FD, not *(int*)cookie.

	* time/Makefile ($({localtime,posixrules}-file)): Don't pass -d
	switch (no need, since directory is compiled into zic).  Don't use
	$(<F) to find arg for -{l,p}; just use $({localtime,posixrules}).

	* Makerules ($(libdir)/libc.a): Depend on installdirs.

	* malloc/malloc.c (malloc): #if 0 out ``if (SIZE == 0) return NULL''.

	* malloc/malloc.h [_MALLOC_INTERNAL]: Don't include <stdio.h>.
	[_MALLOC_INTERNAL]: Move config.h, limits.h, and mem* to front of file.
	(NULL): Move after stddef.h.

	* malloc/valloc.c: Don't include config.h; malloc.h already did.

	* malloc/malloc.c: Undo rms's change.

	* malloc/mcheck.c, malloc/malloc.h: Undo rms's change.

Sat May 29 13:04:38 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* malloc/malloc.c (malloc) [emacs]: If size is 0, make it 1.

	* malloc/malloc.h (CONST): Define this always,
	rather than `const' sometimes.
	(memory_warnings): Use CONST, not __const, in decl.
	* malloc/mcheck.c (checkhdr): Use CONST, not const.

Fri May 28 18:29:26 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/Makefile (ioctls): Use fgrep instead of egrep to
	omit unwanted symbols.  Filter the list of them through sort|uniq
	to remove duplicates first.

	* sysdeps/unix/Makefile (errlist.c): Use dir and notdir
	functions to guarantee qualified path name for make_errlist.

Thu May 27 17:05:04 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06.1.

	* sysdeps/sparc/Dist: Include sdiv.S, not div.S.

	* sysdeps/unix/common/Dist: Remove make_siglist.c.

	* stdio/internals.c: Declare __stdio_fileno before reference.

	* sysdeps/generic/{memchr,strchr,strlen}.c: Abort if words are
	bigger than 64 bits.

Wed May 26 14:44:19 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules [objects] (install-others): Don't add libc.a to this.
	(install): Depend on $(libdir)/libc.a.
	(intall-no-libc.a): New target, depends on $(+install).
	(install): Don't depend on $(+install), just on install-no-libc.a.
	* Rules (subdir_install): Depend on install-no-libc.a, not install.

	* Makefile ($(libc.a)): Don't depend on subdir_lib.
	(lib-noranlib): Depend on subdir_lib.

	Make `fileno' a per-FILE io operation.
	* stdio/stdio.h (__io_fileno): New typedef.
	(__io_functions): Add `__fileno' member.
	(struct __stdio_file): Remove `__fileno' member.
	[__USE_POSIX] [__OPTIMIZE__]: Remove fileno macro defn.
	[__USE_POSIX] (fileno): Remove `const' from arg in prototype.
	* stdio/fileno.c (fileno): Rewritten to call STREAM's __fileno fn.
	* sysdeps/stub/sysd-stdio.c (__stdio_fileno): New function.
	(__stdio_open): Return an int (zero for win, nonzero for lose),
	and make third arg PTR * (filled in with cookie).
	* stdio/stdio.h (__stdio_open): Changed prototype.
	* sysdeps/posix/sysd-stdio.c (__stdio_open): Likewise.
	(__stdio_{read,write,seek,close}): Use (int) COOKIE as the fd, rather
	than *(int *) COOKIE.
	(__stdio_fileno): New function; just returns (int) COOKIE.
	* sysdeps/posix/fdopen.c: Set cookie to (PTR) FD; don't set fileno.
	* stdio/vdprintf.c: Likewise.
	* stdio/fmemopen.c: Set STREAM->__io_funcs.__fileno to NULL.
	Set STREAM->__cookie to NULL and don't use STREAM->__fileno.
	* stdio/internals.c (__default_io_functions): Add __stdio_fileno.
	* sysdeps/posix/defs.c (stdstream): Initialize __cookie to (PTR) FD
	Remove __fileno initializer.
	Add NULL initializer for __io_funcs.__fileno.
	* sysdeps/posix/pipestream.c (struct child): Remove `fd' member.
	Add `cookie' and `funcs' members.
	(FUNC): Macro to define child io_funcs.
	(child_funcs): New variable, __io_functions struct of them.
	(popen): Store STREAM's original cookie and io_funcs in CHILD, and
	then set STREAM->__cookie to CHILD and stream->__io_funcs to
	child_funcs.
	(pclose): Restore STREAM's original cookie and io_funcs before
	calling fclose.

	* configure.in (autoconf checks): Add new check for a
	libc-friendly stddef.h.

	* sysdeps/unix/configure: Remove __getpgrp from list of syscalls.

	* sysdeps/generic/memchr.c: Handle 64-bit longwords.
	* sysdeps/generic/strlen.c: Likewise.
	* sysdeps/generic/strchr.c: Likewise.

	* sysdeps/unix/sysv/sco3.2.4/Makefile: Remove gratuitous `.c'.

	* Makerules [objects] (install-others): Add $(libdir)/libc.a to
	this, instead of adding $(libc.a) to install-lib.
	($(libdir)/libc.a): New target to install from $(libc.a).

	* sysdeps/unix/sysv/sco3.2.4/__setsid.S: New file.
	* sysdeps/unix/bsd/bsd4.4/__setsid.S: New file.

Mon May 24 16:49:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/linux/__setsid.S: Moved to unix/sysv/sysv4,
	and replaced with #include of that.
	* sysdeps/unix/bsd/sun/sunos4/__setsid.S: New file.
	* sysdeps/unix/bsd/ultrix4/__setsid.S: New file.

	* posix/Makefile (install): Define to getconf.

	* crypt: New version from glad.

	* sysdeps/unix/sysv/sysv4/__sysconfig.S: Renamed to sysconfig.S.
	* sysdeps/unix/sysv/sysv4/Makefile (sysdep_routines): Change reference.
	* sysdeps/unix/sysv/sysv4/Dist: Add sysconfig.S.

	* sysdeps/generic/Makefile (siglist.c): Use dir and notdir
	functions to guarantee qualified path name for make_siglist.

	* time/Makefile (tzcompile): Use $(@D) for target directory, not
	reference to nonexistent 4th dep.
	(localtime-file, posixrules-file): Turn these into absolute names.
	(install-others): Simply refer to them.
	($(datadir)/zoneinfo/{localtime,posixrules}): Change targets of
	these rules to $(localtime-file) and $(posixrules-file), respectively.
	Use $(<D) for directory to pass zic.

	* Makerules (installdirs): Use `sort' function to uniquize list of
	directories.

	* time/Makefile (install-others): Use $(datadir)/zoneinfo, not
	$(datadir)zoneinfo (missing /).

	* Makerules (install-lib): Refer to `$(libc.a)' instead of `libc.a'.

	* setjmp/sigjmp_save.c: Renamed to sigjmp.c.
	* setjmp/Makefile (routines): Change reference.

	* sysdeps/unix/common/Makefile (siglist.c, make_siglist): Targets
	removed.
	* sysdeps/unix/common/make_siglist.c: File removed.

Sun May 23 01:00:00 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* manual/Makefile (minimal-dist): Remove COPYING.LIB.
	(doc-only-dist): Put it here.

Sun May 23 00:12:24 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.06 released.

	* sysdeps/sparc/Dist: Add {u,}{div,rem}.S.

Sat May 22 18:17:08 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/generic/make_siglist.c (main): Call signame_init, not
	init_sigs.

	* Makerules (native-compile): Compile $^, not just $<.

	* sysdeps/unix/i386/sysdep.h (PSEUDO): Omit `.text'.  Some
	assemblers don't like `.text; ...'.

	* Rules (all): Mention as target first, so it is the default goal.

	* sysdeps/unix/i386/sysdep.S: #undef syscall_error before using it
	as a label.
	[NO_UNDERSCORES]: Define __syscall_error instead of syscall_error.

	* sysdeps/unix/readdir.c: Decrement d_namlen until it no longer
	includes any nulls.

	* Makerules (+install-dirs): Variable removed.
	(install): Don't depend on $(+install-dirs).
	(installdirs): New target, to make $(dir $(+install)) using
	mkinstalldirs.  Make $(+install) depend on it.
	* Makefile (distribute): Add mkinstalldirs.
	* mkinstalldirs: New file.

	* manual/Makefile (installdirs):
	New target, using mkinstalldirs to create $(infodir).
	($(infodir)/libc.info): Depend on installdirs.
	(minimal-dist): Remove Makefile.
	(doc-only-dist): New variable, containing Makefile and mkinstalldirs.
	(*.tar): Depend on $(doc-only-dist).

Sat May 22 16:31:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	Compile zoneinfo files directly into $(datadir)/zoneinfo, rather
	than compiling them into the source directory and then copying.
	* time/Makefile (zones-%): Put targets of generated rule in
	$(datadir)/zoneinfo, not zoneinfo.
	Don't make generated rules depend on zoneinfo/.
	(zonenames, zones-%): Write into $@.new and then use atomic mv.
	(zones, zoneinfo): Targets removed.
	(zoneinfo/localtime, zoneinfo/posixrules): Change targets to be in
	$(datadir)/zoneinfo; find $(localtime) and $(posixrules) there as well.
	($(localtime-file), $(posixrules-file)): Targets removed.
	(install-data): Definition removed.
	(install-others): Include $(zonenames) from $(datadir)/zoneinfo; and
	$(localtime-file) and $(posixrules-file), from $(datadir)/zoneinfo
	if they are not absolute file names.

	* time/zic.c (dolink): If FROMFILE or TOFILE begins with a slash,
	just set {FROM,TO}NAME to it, instead of prepending DIRECTORY.
	Don't free {FROM,TO}NAME if it is {FROM,TO}FILE.

Fri May 21 13:23:32 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/i386/sysdep.S: Paste : onto syscall_error.

	* sysdeps/unix/configure: Use grep -i when looking for syscalls.
	(unix_syscall_h): Ignore syscall.h found in sysdeps/stub.
	Remove __setpgrp from list of syscalls.

	* sysdeps/unix/Makefile ($(common-objpfx)sys/param.h): Write defn
	for MAXHOSTNAMELEN.  The kludgemeister strikes again.

	* posix/Makefile (glob/ChangeLog): Use mv -f.

	* configure.in (os frobnication): Translate numbers separated by
	`v's into numbers separated by dots.

	* sysdeps/unix/sysv/sco3.2.4/syscall.h: New file.

	* sysdeps/unix/sysv/sco3.2.4/__waitpid.S: Rewritten to do the
	canonical wait3-style magic.

	* sysdeps/unix/sysv/sco3.2.4/{Makefile,Dist,sco_pgrp.S,
	__getpgrp.c,__setpgrp.c,__setsid.c}: New files.

	* Makerules ($(common-objpfx)stub-$(subdir)): Add /dev/null to
	inner sed command.

	* manual/Makefile ($(objpfx)%.info, $(objpfx)%.dvi): New rules.
	($(infodir)/libc.info): Take basename of each $<* before using it.
	(glibc-targets): Add stubs.
	(stubs, $(common-objpfx)stub-manual): New targets.

	* time/Makefile (distribute): Add yearistype.
	* time/yearistype: New file.

	* sysdeps/unix/bsd/sequent/i386/__sigvec.S: Don't use ARGS_4
	macro; just set %ecx to %esp instead.  Pop the stack before doing
	the system call, so the add doesn't clear the condition codes.

	* sysdeps/unix/start.c [HAVE_GNU_LD]: Put `start' symbol alias
	under [! NO_UNDERSCORES && ! __GNUC__].

	* sysdeps/unix/sysdep.h (C_LABEL): Use ## to paste NAME and : together.

	* sysdeps/unix/i386/sysdep.h (DO_CALL): Add missing backslash.

Thu May 20 18:01:15 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile ($(+subdir_targets)): Remove old rule.  Replace with
	static pattern rule to depend on DIR/TARGET for each subdir and target.
	(all-subdirs-targets): Define variable to contain names of all
	those targets.
	($(all-subdir-targets)): Define rule for these to do sub-make.

	* sysdeps/unix/sysv/sysv4/direct.h (D_NAMLEN): Subtract one for
	the terminating null character.
	* sysdeps/unix/sysv/sco3.2.4/direct.h (D_NAMLEN): Copy defn from
	that file.

Thu May 20 11:02:59 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* sysdeps/posix/__getpgsz.c: New file.
	* sysdeps/unix/sysv/sysv4/__getpgsz.c: New file, include the posix one.
	* sysdeps/posix/__getdtsz.c: New file.
	* sysdeps/unix/sysv/sysv4/__getdtsz.c: New file, include the posix one.

	* sysdeps/unix/sysv/sysv4/{__sysconf.c, __sysconfig.S,
	sysconfig.h, Makefile, Dist}: New files.

	* sysdeps/generic/confname.h (enum for sysconf): Add _SC_PAGESIZE.
	* sysdeps/posix/__sysconf.c: Include stddef.h.
	(__getpagesize): Declare.
	(__sysconf, case _SC_PAGESIZE): Call __getpagesize.

Wed May 19 14:03:07 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* manual/Makefile (routines, aux, sources, objects, headers):
	Define empty.

	* Makeconfig (infodir): Define.
	* Makefile (+other_dirs): Add manual.
	* manual/Makefile: Include ../Makeconfig if it exists.
	(subdir): Export it.
	(find-includes): Output variable name is $(@F), not $@.
	(distribute): Export it.
	(mostlyclean, distclean, realclean, clean, subdir_clean): New targets.
	(install, subdir_install): New targets.
	(infodir, prefix, INSTALL_DATA, INSTALL): Define vars if undefined.
	($(infodir)/libc.info): New target.
	(dist): Use ../Make-dist if it exists.
	(glibc-targets): New variable.
	($(glibc-targets)): Make no-op targets.

	* config.guess: New file, maintained by Cygnus.
	* configure.in: Move AC_PREPARE before arg lossage check.
	If $target is unset, try setting it from config.guess.
	* Makefile (distribute): Add config.guess.

	* inet/getnetbyad.c: Change first arg type to int32_t.
	* inet/inet_mkadr.c: Change arg types to u_int32_t.
	* inet/inet_lnaof.c: Change return type to u_int32_t.
	* inet/inet_net.c: Likewise.
	* inet/inet_netof.c: Likewise.
	* inet/res_send.c, inet/res_query.c, inet/res_mkqry.c,
	inet/res_init.c, inet/res_debug.c, inet/res_comp.c,
	inet/inet_addr.c, inet/herror.c, inet/gethstnmad.c, inet/resolv.h,
	inet/netdb.h, inet/arpa/nameser.h, inet/arpa/inet.h:
	Snarfed latest code from BIND 4.9.1.
	* inet/sys/bitypes.h: New file.
	* conf/portability.h: New file.
	* inet/Makefile (headers): Add sys/bitypes.h.
	(distribute): Define to ../conf/portability.h.

	* mach/__msg_destroy.c: Renamed to __msg_dest.c.
	* mach/mig_syms.c: Renamed from mig_support_syms.c.
	Added symbol alias for mig_strncpy.
	* mach/__mig_strncpy.c: Renamed to mig_strncpy.c.
	* mach/mig_strncpy.c: File removed.
	* mach/Makefile (routines): Remove __mig_strncpy; change
	mig_support_syms to mig_syms; change __msg_destroy to __msg_dest.

	* sysdeps/posix/Makefile: Replace instances of `objpfx' and
	`objdir' with `common-objpfx' and `common-objdir'.

Mon May 17 16:29:29 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/asctime.c: Replace ` %2d' with `%3d' in FORMAT.
	(asctime): Check return from sprintf being <0, not <25.

	* sysdeps/unix/opendir.c: Include <stdio.h> for BUFSIZ.

	* sysdeps/unix/i386/sysdep.h (PSEUDO): Put ; after DO_CALL use.

	* sysdeps/i386/ffs.c: Use `nonzero' for asm label, instead of `1f'.

Sun May 16 17:59:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sequent/i386/__sigvec.S: Don't get fancy with
	xchg; just push $trampoline and then push our args again, pop them
	after the system call.

	* time/tzfile.c (__tzfile_default): Don't assume TYPES[0] is
	standard and TYPES[1] is DST.  Instead, loop through all types:
	if a type's isdst flag is set, set its idx to STDLEN and its
	offset to DSTOFF; if isdst is clear, set its idx to 0 and its
	offset to STDOFF.

	* time/__tzset.c: When __tzfile_default returns having set
	__use_tzfile, set __tzset_run before returning.

	* sysdeps/posix/sleep.c: Block SIGALRM with sigprocmask before
	changing its handler.  Use sigaction instead of signal to set the
	handler.  Use sigsuspend to restore the blocked signals and pause
	atomically, instead of using pause.  Be sure to disable the alarm
	when a signal other than SIGALRM wakes sigsuspend.

	* time/Makefile (zic-cmd): Put the directory before the nondirectory.

	* Makerules (stubs): Remove surrounding `ifdef +depfiles'...`endif'.

	* time/Makefile: Include ../Makeconfig before trying to use $(objpfx).

	* time/tzfile.c (__tzfile_compute): When there are transitions and
	TIMER is not before the first one, find the first transition after
	TIMER, and then set I to the type of the transition before it.
	Set INFO from types[I], not types[type_idxs[I]].

	* posix/Makefile (glob/configure): cd to glob before running autoconf.

	* time/__tzset.c (compute_change): Don't add 1900 to YEAR.
	(__tz_compute): Add 1900 to the year we pass to compute_change.

	* time/gmtime.c: After calling __offtime, zero tm_gmtoff and set
	tm_zone to "GMT".

	* time/time.h [__OPTIMIZE__]: Remove gmtime macro version.

	* time/tzfile.c (__tzfile_default): Fail if NUM_TYPES < 2, not if
	NUM_TYPES != 2.

	* time/tzfile.c (__tzfile_compute): Don't take arg TM.
	Instead take new args long int *LEAP_CORRECT and int *LEAP_HIT.
	Don't apply leap second correction to __timezone; instead set
	*LEAP_CORRECT and *LEAP_HIT.
	* time/__tzset.c (tzset_run): Renamed to __tzset_run, made global.
	(__tzset): Change uses.
	(__tz_compute): Change use here as well.
	Make second arg be a `const struct tm *'.  Don't call __tzfile_compute.
	* time/localtime.c: Call __tzset if __tzset_run is clear.
	New local vars LEAP_CORRECTION and LEAP_EXTRA_SECS.
	If __use_tzfile is set, call __tzfile_compute and pass it their
	addresses.  Only need to call gmtime if __use_tzfile is clear.  If
	it is clear, pass result of gmtime to __tz_compute, instead of
	dereferencing it first; and zero LEAP_CORRECTION and LEAP_EXTRA_SECS.
	Subtract LEAP_CORRECTION from __timezone in __offtime call.
	After __offtime, add LEAP_EXTRA_SECS to TP->tm_sec.

	* sysdeps/generic/strsep.c: Increment END when writing a null to
	it, and set *STRINGP to END rather than END+1, so *STRINGP never
	points past the null.

Sat May 15 17:10:02 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* time/strftime.c: Alphabetize switch cases.
	Add GNU extensions %h, %C, %k, %l.

	* time/asctime.c: Make RESULT big enough for each %d to be 2^64.
	Protect against tm_wday and tm_mon being out of bounds; use "???"
	if they are.

	* time/{emkdir,ialloc,scheck,zic,zdump}.c: New versions from ADO.

	* time/africa, time/antarctica, time/asia, time/australasia,
	time/europe, time/northamerica, time/southamerica,
	time/pacificnew, time/etcetera, time/factory, time/systemv,
	time/solar87, time/solar88, time/solar89, time/leapseconds:
	Updated from Arthur David Olsen's latest.

	* sysdeps/generic/__expm1.c, sysdeps/generic/asinh.c,
	sysdeps/generic/exp__E.c, sysdeps/generic/log.c,
	sysdeps/generic/log1p.c, sysdeps/generic/mathimpl.h,
	sysdeps/generic/pow.c, sysdeps/mach/hurd/__ioctl.c,
	sysdeps/mach/hurd/stdio_init.c, sysdeps/unix/bsd/clock.c: Put
	`const' qualifier always after storage classes.

	* sysdeps/unix/bsd/sequent/i386/__sigvec.S (trampoline): Use
	`call', not `jsr'.
	(__sigvec): Exchange the scratch reg with 16(%esp) (fourth arg
	slot), not 0(%esp) (return PC slot).  Use ARGS_4 to point the
	syscall at the args.

	* sysdeps/unix/common/__getgrps.c: When gid_t==int, and SIZE!=0,
	return N from __bsd_getgroups.

	* posix/unistd.h (__need_NULL): Define before including <stddef.h>.
	1003.1-1990 2.7.1 says it should be here.

Sat May 15 14:54:25 1993  Noah Friedman  (friedman@nutrimat.gnu.ai.mit.edu)

        * time/__tzset.c (compute_change): Add 1900 to YEAR, not 1970.

Fri May 14 21:24:19 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* sysdeps/unix/sysv/sysv4/solaris2/start.c: Define NO_EXPLICIT_START.
	* sysdeps/unix/sparc/start.c [NO_EXPLICIT_START]: Don't asm
	`_start' into `start' (e.g., for Solaris).

	* sysdeps/unix/sysv/sysv4/solaris2/sysdep.h: New file.

Fri May 14 19:34:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/Makefile: Remove depend-malloc dependency on malloc/gmalloc.c.

	* posix/Makefile (headers): Add sys/unistd.h.
	* posix/sys/unistd.h: New file, just includes <unistd.h>.

	* sysdeps/unix/common/glue-ctype.c (main): Define generated array
	as `unsigned char' rather than `char'.

	* sysdeps/unix/start.c [__GNUC__]: Use asm frob to make `start'
	asm name of _start.

	* sysdeps/unix/opendir.c [! _STATBUF_ST_BLKSIZE]: Don't fstat and
	use st_blksize; try BUFSIZ instead.

	* sysdeps/unix/Makefile (ioctls): Don't use sed to remove final |
	from snarf-ioctls output; just append a dummy alternative instead.

	* sysdeps/posix/__wait3.c: Fix arg types.

	* Makerules ($(common-objpfx)stub-$(subdir)): Use @ for sed
	separator char.  Pass extra file /dev/null in case `...` gets empty.

	* sysdeps/unix/sysdep.h (C_LABEL): Define new macro.
	* sysdeps/unix/i386/sysdep.h (ENTRY): Use it.
	* sysdeps/unix/sparc/sysdep.h (ENTRY): Likewise.
	* sysdeps/unix/sparc/__brk.S: Use C_LABEL and ENTRY instead of
	C_SYMBOL_NAME.
	* sysdeps/unix/i386/__brk.S: Use C_LABEL instead of C_SYMBOL_NAME.

Fri May 14 17:41:42 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* sysdeps/mips/sqrt.c [HAVE_GNU_AS]: Use the IEEE 754 version of
	sqrt since gas can't handle the `sqrt.d' synthetic instruction.

Fri May 14 16:33:47 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/Makefile (routines): Add tempname.

	* sysdeps/unix/common/make_siglist.c: #define const to empty
	around #include of <signal.h>.

	* sysdeps/unix/errnos.awk: Surround generated `DO' macro calls
	with #ifdef on the E* symbol.

	* sysdeps/unix/common/make_siglist.c [! HAVE_SYS_SIGLIST &&
	HAVE__SYS_SIGLIST]: Define sys_siglist to _sys_siglist.

	* termios/Makefile (headers): Add termbits.h.

	* posix/Makefile (headers): Add waitflags.h and waitstatus.h.

	* math/math.h (struct __complex): Rename to struct __cabs_complex.
	__complex is now a reserved word in GCC.
	* sysdeps/generic/cabs.c (cabs): Likewise.
	* sysdeps/ieee754/cabs.c (cabs, z_abs): Likewise.

	* sysdeps/unix/common/glue-ctype.c: Test for _ctype__ before _ctype_.

	* posix/Makefile (headers): Add confname.h.

Thu May 13 00:25:53 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* ctype/Makefile (tags_sources): Don't define.
	* MakeTAGS [subdir==ctype] (tags_sources): Put headers before sources.

	* time/__tzset.c (compute_change): Add 1970 to YEAR before using it.

	* sysdeps/unix/readdir.c: Pass a BASEP arg to __getdirentries.

Wed May 12 20:36:51 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Makefile (distribute): Add aclocal.m4.

	* dirent/list.c (test): Clear errno before readdir loop.  Complain
	if errno is set thereafter.

	* sysdeps/unix/sysv/sysv4/solaris2/utsnamelen.h: New file.
	* sysdeps/unix/sysv/sysv4/solaris2/__utimes.S: New file.
	* sysdeps/unix/sysv/sysv4/solaris2/sigaltstack.S: New file.
	* sysdeps/unix/sysv/sysv4/solaris2/Makefile: New file.

	* sysdeps/unix/bsd/sun/sparc/start.c: Moved to sysdeps/unix/sparc.
	* sysdeps/unix/sparc/start.c: Moved from sysdeps/unix/bsd/sun/sparc.
	Surround all shared library frobnication code with #ifndef NO_SHLIB.
	* sysdeps/unix/sysv/sysv4/solaris2/start.c: New file.

	* configure.in (os = solaris[2-9]*): base_os=unix/sysv/sysv4.

	* sysdeps/sparc/setjmp.S: Include <sysdep.h>, not "DEFS.h".
	Use ENTRY(__setjmp) instead of FUNC(___setjmp).

	* sysdeps/sparc/divrem.m4: [__svr4__]: Include <sys/trap.h>
	instead of <machine/trap.h>.

	* sysdeps/sparc/__longjmp.S: Include <sysdep.h>, not "DEFS.h".
	Use ENTRY(__longjmp) instead of FUNC(___longjmp).
	[__svr4__]: Use <sys/trap.h> instead of <machine/trap.h>.

	* sysdeps/unix/i386/sysdep.h (C_SYMBOL_NAME, SYS_ify): Moved to
	sysdeps/unix/sysdep.h.
	* sysdeps/unix/sparc/sysdep.h: New file.
	* sysdeps/unix/bsd/sun/sparc/sysdep.h: File removed.

	* sysdeps/unix/sparc/__brk.S: New file.
	* sysdeps/unix/sparc/__brk.c: File removed.

Wed May 12 19:43:37 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* malloc/cfree.c: Put malloc.h include in _MALLOC_INTERNAL conditional.

Wed May 12 16:24:23 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Makeconfig (+link): Put $(LDFLAGS) in the value.
	* sysdeps/unix/bsd/sun/sparc/Makefile (LDFLAGS): Set it.

	* posix/glob.c: Move include <unistd.h> before dir includes.
	[HAVE_UNISTD_H] [! POSIX] [_POSIX_SOURCE]: Define POSIX.

	* grp/initgroups.c [! NGROUPS_MAX || NGROUPS_MAX == 0]: Just
	return 0 and do nothing.

	* sysdeps/unix/sysv/sco3.2.4/__{sys,path}conf.S: New files.
	* posix/unistd.h: Include <confname.h>; remove _{SC,CS,PC}_* defns.
	* sysdeps/generic/confname.h: New file.
	* sysdeps/unix/sysv/sco3.2.4/confname.h: New file.

	* malloc/cfree.c: Include <malloc.h> instead of <stdlib.h>.
	[_LIBC]: Use function_alias only under this conditional.
	[! _LIBC] (cfree): Define a function that just calls free.

	* posix/Makefile (glob.tar): Depend on glob/ChangeLog.
	(glob/configure): Just run autoconf, don't do a sub-make.
	(glob/ChangeLog): New target.
	(%.Z, %.z): New rules.

Mon May 10 16:56:09 1993  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)

	* malloc/cfree.c: Put the meat of the file inside a "#if
	defined(__GNU_LIBRARY__)" clause, so that gmalloc.c, which
	incorporates this file, can be used outside of the C library.

Sun May  9 16:57:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/fseek.c: Don't call __flshfp unless STREAM is writable.

	* string/tester.c (main): Remove unused variable.

	* sysdeps/unix/bsd/set[er][gu]id.c: New files.

	* sysdeps/unix/mk-local_lim.c (NAME_MAX): Define to 255 if undefined.

	* malloc/Makefile (malloc-dist): Add ChangeLog and mem-limits.h.
	(malloc/ChangeLog): New rule using Noah's changelog-extract.
	(malloc.tar): Use o flag to tar to make compatible archives.
	(gmalloc-routines): Add calloc, valloc, and cfree.
	(dist-routines): Remove [cv]alloc from here.
	(routines): Remove cfree from here.

Fri May  7 16:45:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/ttyname.c: Replace fixed-sized NAME array with
	static char *NAME and static size_t NAMELEN.
	Don't check S_ISCHR.
	Don't hack NAME before the loop.
	If need more than NAMELEN chars to hold the name, increase NAMELEN
	to more than big enough and malloc NAME.
	Save errno in local var SAVE before doing anything; restore it
	when returning non-error.

	* Makefile (generated): Add $(objpfx)stubs.h.
	(README): New rule to call Make-dist to do the work.

	* mach/Makefile: Don't include mach-syscalls.mk if no_deps=t.

	* crypt/GNUmakefile (%.z): New rule for gzipping.
	(crypt.tar): Use o flag to tar to make compatible archives.

	* Makeconfig: Find config.make in $(common-objpfx), not $(objpfx).

	* io/Makefile (headers): Remove filebits.h.

	* sysdeps/unix/sysv/sysv4/Dist: File removed.

	* Makefile (README): Move from here.
	* Make-dist (README): To here.

	* sysdeps/unix/Makefile (sys/param.h): Don't depend on sys/.  It
	was causing sys/param.h to be remade all the time.

	* aclocal.m4 (GLIBC_PROVIDES): Add shell comment about configure
	being generated and not to be editted.

	* sysdeps/unix/swapon.S: Moved to sysdeps/unix/common.
	* sysdeps/unix/configure: Add swapon to list of syscalls to check for.

	* sysdeps/unix/mk-local_lim.c: New file, modified from
	sysdeps/unix/common/mk-local_lim.c.
	* sysdeps/unix/common/Makefile: Move local_lim.h rules from here.
	* sysdeps/unix/Makefile: Put them there.
	(local_lim-CFLAGS): Define new variable.
	(mk-local_lim): Replace $(native-compile) with its value plus
	$(local_lim-CFLAGS).
	* sysdeps/unix/common/Dist: Remove mk-local_lim.c.
	* sysdeps/unix/Dist: Add it here.

	* Makerules (make-dummy-dep): New variable; canned command.
	($(objpfx)%.dep: {$(objpfx),}%.s): New rules using $(make-dummy-dep).
	(sysd-Makefile): Write a $(objpfx)%.dep: $dir/%.s rule using it.

	* misc/ioctl.c: Replace function_alias with:
	[HAVE_GNU_LD]: Use symbol_alias.
	[! HAVE_GNU_LD]: Write out the function; it must fetch its third arg
	with va_arg and then call __ioctl.

Thu May  6 14:56:16 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* misc/sys/ioctl.h (__ioctl, ioctl): Changed prototype to take 2
	args and ... rather than a 3rd __ptr_t arg.
	* sysdeps/stub/__ioctl.c: Changed defn.

	* sysdeps/unix/bsd/sun/sunos4/tcflow.c: Include <sys/ioctl.h>.

	* sysdeps/unix/Makefile (make-ioctls-CFLAGS): Define as
	-DHAVE_SYS_TERMIOS_H if $(sysincludedir)/sys/termios.h exists.
	(make-ioctls): Replace command `$(common-objdir-compile)' with
	that var's contents from Makerules, plus $(make-ioctls-CFLAGS).
	* sysdeps/unix/ioctls-tmpl.c [HAVE_SYS_TERMIOS_H]: Get <sys/termios.h>.

	* misc/sys/ioctl.h: Include <sys/ttydefaults.h> after <ioctls.h>.

	* sysdeps/unix/bsd/sun/sunos4/speed.c (cfget[io]speed): Return the
	raw speed, rather than using it as an index into `speeds'.
	(cfset[io]speed): Treat SPEED being an index into `speeds' just as
	if it were the value of that element.

	* termios/termios.h: Remove definitions of B[0-9]+ and EXT[AB].
	* sysdeps/generic/termbits.h: Put them here instead.
	* sysdeps/unix/bsd/sun/sunos4/termbits.h: Add new defns for those.

	* sysdeps/unix/Makefile (termbits-edit): If termbits.h is not the
	generic version, set this to an | egrep command which filters out
	symbols appearing in termbits.h.
	(ioctls): Depend on $(sysincludedir)sys/termios.h if it exists.
	Pass all deps after first to snarf-ioctls.
	Put $(termbits-edit) in cmd line; it may be empty or a pipe.
	Pipe through sort|uniq before tr (just to cut down on duplicates).

	* sysdeps/generic/Makefile, sysdeps/unix/Makefile: When deciding
	whether to generate files whose stub versions are chosen, also
	include the generation rules when the chosen directory is
	$(common-objpfx), so they continue to be defined after running once.

	* sysdeps/posix/Makefile: Use patsubst instead of substition
	references when the substitution or replacement contains a $.
	Make has a bug (which I just fixed) with such substitution references.

	* posix/wait3.c: Fixed arg types in fn alias.
	* posix/wait4.c: Likewise.

	* sysdeps/posix/Makefile: Remove vpath %.h line.
	* Makerules: Add vpath %.h directive.

	* sysdeps/posix/Makefile (generated, before-compile): Add
	$(common-objpfx)stdio_lim.h, not just plain stdio_lim.h.

	* Makerules (depend-$(subdir)): Put $(objpfx) in the output, not
	its expansion.
	(+make-deps): Add sed clause to translate the expansion of
	$(objpfx) back into the variable reference.

Wed May  5 15:59:40 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2/local_lim.h: New file.

	* sysdeps/unix/sysv/sco3.2/Makefile: New file
	* sysdeps/unix/sysv/sco3.2/Dist: New file.
	* sysdeps/unix/sysv/sco3.2/__fltused.c: New file.

	* sysdeps/unix/configure: New file.
	* sysdeps/unix/inet/__select.S: Moved to sysdeps/unix/common.
	This is because select is a call sysdeps/unix/configure wants to
	check for, and it simplifies life for all those to be in unix/common.

	* sysdeps/tahoe/Implies: Remove $(bsdmath)tahoe line.

	* sysdeps/unix/sysv/sco3.2.4/{__sigact,__sigproc,
	sigpending,sigsuspend}.S: New files.

	* Makefile (INSTALL): Depend on manual/maint.texi, not
	manual/maint.texinfo.  Use -- instead of + for long options.

	* configure.in: After setting $sysnames initially and adding the
	FPU directory, expand and uniquize the list with code that used to
	be in find-sysdirs.  Make $sysnames blank-separated rather than
	newline-separated.  Generalize loop iterating over $sysnames, so
	it sets $uname and sources sysdep configure scripts.  Move
	sys_siglist and ctype checks to sysdeps/unix/common/configure.in.
	Set Make variable `config-sysdirs' to $sysnames in config.make,
	and don't frob Sysnames or sysdirs files at all.
	* find-sysdirs: File removed.
	* Makefile (distribute): Remove find-sysdirs.
	(sysd-dirs): Depend on config.make instead of config.make.
	Use $(sysdirs) in place of `cat $<`.
	* aclocal.m4: New file.
	* sysdeps/unix/common/configure.in: New file, contains checks for
	sys_siglist and ctype glue moved from top-level configure.in.
	* Makerules (sysdirs, Sysnames): Rules removed.
	Don't include sysdirs.
	(sysdirs): Define variable from $(config-sysdirs).
	(sysd-Makefile): Depend on config.make instead of sysdirs.
	Use $(sysdirs) instead of filtering the sysdirs file.
	* Make-dist (+sysdep-tsrcs): Include configure and configure.in
	from sysdep dirs.
	(dist.tar): Use o flag to tar for compatible archives.
	(dist): Depend on foo.z instead of foo.Z.
	($(tardir){-crypt,}.tar.z): Renamed from .Z.
	(%.z: %): New rule.
	(%/configure: %/configure.in): New rule.

Mon May  3 17:45:06 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/__waitpid.S: New file.

	* sysdeps/unix/sysv/sco3.2.4/direct.h: New file.

	* sysdeps/unix/readdir.c: Moved from unix/bsd, rewritten to always
	use __getdirentries and D_NAMLEN macro, no #ifdefs.
	* sysdeps/unix/sysv/readdir.c, sysdeps/unix/bsd/bsd4.4/readdir.c,
	sysdeps/unix/bsd/ultrix4/readdir.c,
	sysdeps/unix/bsd/hp/m68k/readdir.c,
	sysdeps/unix/bsd/sun/readdir.c: Files removed.
	* sysdeps/unix/common/{close,open,rewind,seek,tell}dir.c: Moved to
	sysdeps/unix.
	* sysdeps/unix/sysv/direct.h: New file.
	* sysdeps/unix/bsd/direct.h (D_NAMLEN): Define to use d_namlen.
	* sysdeps/unix/sysv/sysv4/direct.h (D_NAMLEN): Define to calculate
	from d_reclen.
	* sysdeps/unix/__getdents.c: New file.
	* sysdeps/stub/direct.h: New file.
	* sysdeps/unix/bsd/Dist: Remove bsddir.h.
	* sysdeps/unix/sysv/sysv4/readdir.c: Moved to unix/sysv.
	* sysdeps/unix/sysv/sysv4/bsddir.h: Renamed to direct.h.
	* sysdeps/unix/bsd/bsddir.h: Likewise.
	* sysdeps/unix/common/opendir.c: Include "direct.h", not "bsddir.h".
	* sysdeps/unix/sysv/sysv4/readdir.c: Likewise.
	* dirent/Makefile (distribute): Define to include direct.h.

	* sysdeps/unix/common/opendir.c: Be sure to close FD if fcntl fails.

	* sysdeps/generic/memcopy.h: #include <sys/cdefs.h> and use __P
	prototypes instead of EXFUN.

	* sysdeps/generic/memcmp.c (__ptr_t, const): Define as appropriate
	conditional on [__cplusplus || __STDC__].

Thu Apr 29 21:48:37 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile ($(libc.a)): Make this, not lib, depend on subdir_lib.

	* Makerules ($(objpfx)%.{o,dep} rules): Remove spurious / after
	$(objpfx) in dependency patterns.

	* sysdeps/unix/bsd/sun/sparc/start.c (_start): Define with
	`asm ("start")', so its asm name is `start' rather than `__start'.
	Remove asm that did a `.set' pseudo-op, which Sun as seems not to grok.

Wed Apr 28 12:59:46 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/system.c: Return 0 if LINE is nil.

	* sysdeps/unix/__execve.S [!SYS_execve && SYS_exec]: Define
	SYS_execve to be SYS_exec.

	* time/mktime.c: Include <sys/types.h>.

Mon Apr 26 17:10:21 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/generic/memcmp.c: Deansideclized.
	[HAVE_CONFIG_H]: Include "config.h".
	[HAVE_STRING_H || _LIBC]: Put #include <string.h> under this.
	[_LIBC]: Put #include <memcopy.h> under this conditional.
	[! _LIBC]: Define op_t, OPSIZ, byte, and MERGE.

	* time/mktime.c: Define __isleap if not defined.

Fri Apr 23 18:08:33 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/__getdents.c: New file.
	* sysdeps/unix/sysv/sysv4/sys_getdents.S: Moved to unix/sysv.
	* sysdeps/unix/sysv/Makefile [subdir==dirent]: Add sys_getdents to
	sysdep_routines.
	* sysdeps/unix/sysv/Dist: Add sys_getdents.S.
	* sysdeps/unix/sysv/sysv4/Dist: Remove it from here.
	* sysdeps/unix/sysv/sysv4/Makefile: File removed.

Thu Apr 22 17:40:28 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sony/newsos4/m68k/sysdep.h: New file.

	* sysdeps/generic/strsep.c: Set *STRINGP to END+1, not END.

	* configure.in (arg parsing): Grok --verbose and set verbose=yes.

	* sysdeps/sparc/{umul,mul}.S: Remove ' from ! comment.

	* sysdeps/sparc/Makefile (*.S): Find divrem.m4 in this sysdeps dir.

	* sysdeps/unix/bsd/sun/sunos4/speed.c (cfset[io]speed): Typo fix.

	* sysdeps/unix/bsd/sun/sparc/vfork.S: Use a sethi insn and %g1 as
	a temporary, rather than expecting the address to fit into a short
	jump.

	* sysdeps/unix/bsd/__fork.S: Moved to sysdeps/unix/__fork.S; we
	want unix/MACHINE/__fork.S to come first.

	* sysdeps/unix/bsd/bsd4.4/__wait3.c: Make STAT_LOC type
	`__WAIT_STATUS' (defined in <sys/wait.h>).
	* sysdeps/unix/bsd/sun/sunos4/__wait4.c: Likewise.

	* signal/sigvec.c: Change args from `struct __sigvec *' to
	`struct sigvec *' in function alias.

	* signal/sigproc.c: Make arg SET `const sigset_t *' in fn alias.

	* signal/sigaction.c: Change args from `struct __sigaction *' to
	`struct sigaction *' in function alias.

	* sysdeps/unix/common/glue-ctype.c (main) [! TABLE]: Write just a
	comment saying we don't know the table name, rather than barfing
	with `TABLE' an undefined variable.

	* sysdeps/generic/printf_fp.c: Fixed test to chose %e format.
	Make loop condition --J > 0; break out of loop when FPNUM < F.
	After loop, use %e format iff J <= 0.

	* posix/glob/Makefile.in (.c.o): Put $(CFLAGS) last.
	(glob.o): Depend on glob.c.
	(fnmatch.o): Depend on fnmatch.c.

Wed Apr 21 12:40:03 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/Makefile (before-compile): Add stdio_lim.h.

	* configure.in (signed size_t test): Remove 's from rhs of AC_DEFINE.

	* stdio/internals.c (seek_to_target): If __stdio_check_offset
	fails with ESPIPE, do nothing.

	* sysdeps/generic/printf_fp.c: For %e type, add K-1 to CUTOFF,
	rather than K.
	When there are no post-decimal digits, never write a decimal point
	for a %g spec unless it had a # modifier.
	Move K==-1 test to write decimal point before K==CUTOFF test to
	round and write last digit.
	Merge code for first post-decimal digit with code for remaining digits.
	Move code to write leading fractional zeros inside K<0 test which
	determines if any will be needed.
	In decimal fraction notation code, use R10 temporary instead of
	repeating (R * 10) twice.

	* stdio/fwrite.c: Only fail when __stdio_check_offset fails if it
	failed with ESPIPE.  If offset==-1, don't change it or target.

	* sysdeps/posix/defs.c (stdstream): Rearrange initializers, as
	FILE has been rearranged.  Set offset and target to -1, not 0.

	* sysdeps/posix/stdio_init.c: If STREAM isatty, set its seek
	function to NULL.  Unix bites.

	* stdio/ungetc.c: Call __flshfp if linebuf_active or put_limit>buffer.

	* sysdeps/unix/bsd/sun/sparc/start.c [__GNUC__ < 2]: #error.

	* time/mktime.c: Deansideclized.
	Don't include <errno.h> or <limits.h>; we don't need them.
	[DEBUG] (printtm): Made static.
	[HAVE_CONFIG_H]: Include "config.h".
	[__GNU_LIBRARY__ || HAVE_LIMITS_H]: Surround #include <limits.h>
	with these conditionals.

	* time/offtime.c (__mon_lengths): Move defn to mktime.c; replace
	with extern decl.
	* time/mktime.c (__mon_lengths): Define here; remove extern decl.

Mon Apr 19 18:42:59 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/tempname.c: New file.
	* sysdeps/stub/sysd-stdio.c (__stdio_gen_tempname): Moved there.
	* sysdeps/posix/tempname.c: New file.
	* sysdeps/posix/sysd-stdio.c (__stdio_gen_tempname): Moved there.

	* stdio/fopen.c: Don't set the offset to zero.  That can falsely
	give the impression that an unseekable object is seekable.

	* stdio/internals.c (__flshfp): Discard any pushed back character
	first thing after sanity checks.
	(__flshfp): Deconditionalize code to call the output-room
	function; we always want to give it a chance to prime the stream.
	Remove code that reset bufp if put_limit==buffer.  We want to let
	the output-room function do that--that is priming the stream.

Fri Apr 16 12:24:21 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules ($(libc.a)): Depend on lib-noranlib and have ranlib
	command line.
	(lib): Just depend on $(libc.a).

	* sysdeps/unix/bsd/sun/sparc/start.c (init_shlib): Use __environ,
	not environ.

	* stdio/internals.c (__flshfp): Don't check that the buffer
	actually contains anything when setting the put_limit to the end of
	the buffer if linebuf_active.
	(__flshfp): To write C into the buffer !FLUSH_ONLY, don't check
	that bufp > buffer and get_limit == buffer.  Check against
	put_limit unless linebuf_active (in which case check against the
	real put_limit, fp->__buffer + fp->__bufsize).
	(__flshfp): Bother to call the output-room function if !FLUSH_ONLY
	or bufp > buffer and get_limit <= linebuf-corrected put_limit.
	(__flshfp): Check for a NULL output-room function before checking
	if C will fit in the buffer.
	(flushbuf): After putting C into the buffer,
	set BUFFER_WRITTEN to zero and goto end instead of returning.

	* stdio/ungetc.c: Test STREAM->__pushed_back before flushing the
	STREAM if it's writable.

	* posix/glob.c, posix/fnmatch.c: Surround code with
	#if defined (_LIBC) || !defined (__GNU_LIBRARY__)

Thu Apr 15 19:35:59 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* string/tester.c (main): Added tests for strsep.

	* sysdeps/ieee754/frexp.c: New file.

Wed Apr 14 12:49:10 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (ar-it): Add c flag to ar commands.

	* posix/glob.c [USG, NeXT]: Don't test these.
	[HAVE_STRING_H]: Test this to include string.h and define ANSI_STRING.
	[HAVE_MEMORY_H]: Test this instead of NEED_MEMORY_H.
	[! ANSI_STRING]: Put decls of bcopy and #define of memcpy et al here.

	* posix/fnmatch.c [HAVE_CONFIG_H]: #include "config.h".

Mon Apr 12 16:34:53 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/glob.c: Rationalize directory header conditionals.

Sun Apr 11 18:53:50 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/internals.c: Remove __libc_fatal.
	* sysdeps/stub/sysd-stdio.c: Remove __stdio_errmsg.
	* sysdeps/posix/sysd-stdio.c: Likewise.
	* sysdeps/stub/libc_fatal.c, sysdeps/posix/libc_fatal.c: New files.
	* stdio/Makefile (routines): Add libc_fatal.

	* stdio/stdio.h (FILE): Add new member `__linebuf_active' (flag).
	Rearranged order of members slightly.
	* stdio/setvbuf.c: Clear the linebuf_active flag.
	* stdio/fseek.c: Likewise.
	* stdio/internals.c (__flshfp): Test linebuf_active, not linebuf,
	to decide to reset put_limit before calling the output-room function.
	After calling it, if line-buffered, set put_limit to the
	beginning of the buffer and set the linebuf_active flag.
	(__fillbf): If linebuf_active is set, reset put_limit to the end
	of the buffer, and clear the flag.

	* stdio/ungetc.c: If STREAM is writable and has something in its
	buffer, flush it.

	* stdio/internals.c (__fillbf): When flushing all line-buffered
	streams, don't test for their put_limits being > than their
	buffers.  We should let __flshfp figure it out.

	* stdio/setvbuf.c: Always set the put_limit to the beginning of
	the buffer.

	* stdio/stdio.h	(__putc): Rewritten to remove all knowledge of
	magic for line-buffered streams.  It now always calls __flshfp when
	the bufp hits the put_limit.

	* stdio/fwrite.c: When recalculating BUFFER_SPACE after calling
	__flshfp, ignore the put_limit for the sake of line-buffered streams.

	* stdio/fseek.c (fseek): Call __flshfp on STREAM unconditionally.
	We don't want to try to put the conditions for when it is
	necessary here as well.

	* sysdeps/generic/printf_fp.c: When deciding whether to use %e
	format for %g, break out of the loop on J as soon as F reaches
	FPNUM; after the loop, set TYPE to 'e' if J<0, meaning we went all
	the way through.

	* misc/getpass.c (TCSASOFT): Define to 0 if undefined.
	(getpass): Use a variable OUT to store the stream where output goes.
	Use a variable NREAD to notice how much was read; if the last char
	in the buffer is a newline, clobber it to a null terminator.

	* posix/fnmatch.h [__cplusplus || __STDC__]: Don't #define const.

Thu Apr  8 19:29:37 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/tst-printf.c (main): Added some floating-point tests.

	* sysdeps/unix/bsd/sequent/i386/__sigvec.S: New file.

	* sysdeps/unix/sysv/i386/__sigret.S: Moved to sysdeps/unix/i386.
	Use DO_CALL instead of magic.

	* sysdeps/unix/bsd/i386/__wait3.S: Use DO_CALL instead of magic.
	Use scratch instead of %ecx and r1 instead of %edx.

	* sysdeps/unix/bsd/i386/__vfork.S: Rewritten to not use SYSCALL__.
	Use DO_CALL instead, and save the return PC in a register around
	the trap.

	* sysdeps/unix/i386/sysdep.h (DO_CALL): New macro to do syscall trap.
	(PSEUDO): Use it instead of putting the code here.

	* stdio/vfprintf.c (number): Write "0x" before padding, not after.

	* sysdeps/unix/bsd/sequent/i386/sysdep.h: New file.

	* sysdeps/unix/bsd/__setuid.c: #include <sys/types.h>.
	Change argument type to uid_t.
	* sysdeps/unix/bsd/__setgid.c: #include <sys/types.h>.
	Change argument type to gid_t.

	* sysdeps/unix/common/__getgrps.c: Restore errno after erroneous
	syscall failure.

	* stdio/tst-printf.c (fp_test): New function, batch of tests from
	a bug report.
	(main): Call it.

Wed Apr  7 17:17:17 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/generic/pow.c (pow_p): Don't initialize K; was a dead store.

Mon Apr  5 21:17:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/common/__getgrps.c: If __bsd_getgroups returns an
	error and SIZE==0, alloc temp space for NGROUPS_MAX elts and call
	it again on that, so we can find the number of groups.

	* stdio/__vfscanf.c (input_error): If DONE is nonzero, return it;
	else return EOF.
	(%c): Don't check for C==EOF at the end; let the following spec get it.
	(%[eEfgG]): EOF after sign is conv_error, not input error.

	* sysdeps/unix/common/__getgrps.c: If gid_t==int, pass LIST to
	__bsd_getgroups, not NULL.
	No error for SIZE > NGROUPS_MAX.

Sun Apr  4 18:52:34 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/{bsd,sysv}/i386/Implies: Files removed.
	They should no longer be necessary, since configure now tries more
	sysdeps directory permutations.

	* sysdeps/unix/bsd/{i386,sun/sparc,hp/m68k,ultrix4/mips}/__set[ug]id.S:
	Files removed.  They should no longer be necessary, since the new
	sysdeps scheme should find unix/bsd/__set[gu]id.c before
	unix/__set[gu]id.S.

	* sysdeps/unix/i386/__pipe.S: Use r1 in place of %edx and scratch
	in place of %ecx.
	* sysdeps/unix/i386/__wait.S: Likewise.
	* sysdeps/unix/i386/__fork.S: Use r1 in place of %edx and r0 in
	place of %eax.
	* sysdeps/unix/i386/__vfork.S: Likewise.
	* sysdeps/unix/i386/sysdep.h (scratch): #define as %ecx.
	* sysdeps/unix/sysv/i386/linux/sysdep.h: Likewise.

	* configure.in ($uname = generic): Set kernel_{version,release} to
	empty before all else.
	If /vmunix doesn't exist, try grovelling over /dynix instead.

	* sysdeps/unix/Makefile (syscall.h): Double $ in sed cmd.

Fri Apr  2 15:15:44 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (config_vars): New variable; text to go in config.make.
	Use AC_HEADER_EGREP to grovel stdarg.h for __gnuc_va_list and set
	stdarg.h in config_vars if we find it.

	* sysdeps/unix/bsd/sun/sunos4/tcsendbrk.c,
	sysdeps/unix/bsd/sun/sunos4/tcflow.c,
	sysdeps/unix/bsd/sun/sunos4/tcflush.c,
	sysdeps/unix/bsd/sun/sunos4/tcsetattr.c,
	sysdeps/unix/bsd/sun/sunos4/__tcgetatr.c: New files.

	* sysdeps/unix/Makefile (syscall.h): Add sed cmd to terminate
	unterminated comments at the ends of lines.

	* sysdeps/posix/getcwd.c: Deansideclized and added four tons of
	portability goop.

Mon Mar 29 13:18:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sun/sunos4/speed.c: New file.

	* sysdeps/generic/termbits.h: New file, contents taken from termios.h.
	* termios/termios.h: Remove type & macro defns; #include <termbits.h>.
	[__OPTIMIZE__] (cf[gs]et[io]speed): Remove macro versions.  They
	just cause trouble because they want to be in termbits.h (since
	they are sysdep) and also to come after the prototypes (which must
	come after termbits.h to get speed_t and struct termios defined).
	The optimization was insignificant anyway.
	* termios/speed.c: Moved to sysdeps/generic.

	* termios/cfsetspeed.c: Call cfset[io]speed, rather than doing it
	ourselves.

	* time/__tzset.c (tz_rule): Make member `secs' not a bitfield.
	(compute_change): Complete rewrite; code basically stolen from
	localtime3/localtime.c:transtime.
	#include "tzfile.h" for SECSPERDAY; #define NOID first.

	* sysdeps/unix/bsd/i386/__vfork.S: Don't try to #include __fork.S.
	Instead, copy that code here and change `fork' to `vfork'.

	* Makeconfig (+default_cflags): Rename to default_cflags.
	(+cflags): Use that name.

	* Makefile (configure): New rule.

Sun Mar 28 16:12:33 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* posix/fnmatch.c (case '*'): Before final loop, fold C1, rather
	than foling *P before it goes into C1.  C might need folding instead.

	* posix/Makefile (tests): Add testfnm.
	* posix/testfnm.{c,args}: New files.

Fri Mar 26 15:04:27 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/mktime.c: Wholly new implementation from Noel Cragg.

	* sysdeps/unix/bsd/sun/__sigret.S: New file.
	* sysdeps/unix/bsd/sun/m68k/{Makefile,Dist}: New files.
	* sysdeps/unix/bsd/sun/m68k/{sigcontext.h,sigtramp.c}: New files.
	* sysdeps/unix/bsd/sun/sparc/__sigvec.S: Moved to sysdeps/unix/bsd/sun.

	* Makefile (clean): Remove sysd-Makefile, sysd-dirs, sysdirs
	(distclean): New target.
	* sysdeps/unix/common/Makefile (generated): Add local_lim.h,
	mk-local_lim, glue-ctype, glue-ctype.c, siglist.c, make_siglist.
	* sysdeps/generic/Makefile (generated): Add bytesex.h,
	det_endian, siglist.c, make_siglist.
	* sysdeps/unix/Makefile (generated): Add errnos.h, errnos,
	make-errnos, make-errnos.c, ioctls.h, ioctls, make-ioctls,
	make-ioctls.c, errlist.c, make_errlist, syscall.h, sys/param.h,
	param.h.c, param.h.dep, $(sys/param.h-includes).

	* misc/Makefile (extra-objs): Define new var to include bsd-compat.o.

Fri Mar 26 14:53:30 1993  Michael John Haertel  (mike@skinner.cs.uoregon.edu)

	* malloc/malloc.c (malloc): Start searching at _heapindex, not
	MALLOC_SEARCH_START.
	* malloc/malloc.h (MALLOC_SEARCH_START): Macro removed.
	* malloc/realloc.c (realloc): When malloc returns NULL, handle the
	case of the block we need to unfree (which was just freed) having
	been coalesced with its neighbors.

Thu Mar 25 13:40:17 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Rules (all): Depend on others.

	* time/Makefile (zonenames): Change target to $(objpfx)zonenames.
	Make the generated file prepend $(objpfx) to
	Include that instead of zonenames.
	(zones-%): Change target to $(objpfx)zones-%.

	* Makefile ($(objpfx)Mcrt1.o): Put temporary Mcrt1.c file in
	$(objdir), rather than the current directory.

	* configure.in (arg parsing): Recognize `--exec-prefix' rather
	than `--exec_prefix'.

	* Rules (mostlyclean): Remove the .o files for $(tests) and $(others).
	Remove $(objpfx)depend-$(subdir).
	(clean): Remove $(extra-objs).
	* Makefile (clean): Remove $(install-lib) from $(objdir).
	Don't try to remove ansi/ and trad/ or dist.tar or lint.out.
	Remove $(objpfx)depend-.
	* time/Makefile (extra-objs): Define new var.
	* malloc/Makefile (extra-objs): Likewise.

	* Rules (+objs): Variable removed.
	(clean): Use $(objects) in place of $(+objs).

	* sysdeps/unix/Makefile (sys/param.h-includes): Move all this
	outside of ifeq ($(subdir),misc).
	Fixed sed command to filter out [hn]to[nh][sl].
	(sys/param.h-includes): New target; dep on $(sys/param.h-includes).

	* posix/fnmatch.h [!_POSIX_C_SOURCE || ...]: Make this test
	_GNU_SOURCE, not _BSD_SOURCE; these are our extensions, not theirs.
	(FNM_CASEFOLD): New bit.
	(__FNM_FLAGS): Removed macro.
	* posix/fnmatch.c (fnmatch): Don't test for bogus flag bits; who cares?
	(FOLD): New macro to casefold a char if FNM_CASEFOLD.
	Use it to fold all chars before comparison.

Wed Mar 24 16:09:26 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/Makefile (malloc/%.c, malloc/%.h): Rules removed.

	* stdio/stdio.h (fopencookie): Rename parameter IO_FUNCTIONS to
	IO_FUNCS.  The former conflicted with a typedef name, which ist
	verboten.

	* time/sys/time.h (enum __itimer_which): Remove trailing comma.

Mon Mar 22 15:35:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/malloc.h [_MALLOC_INTERNAL]
	[__GNU_LIBRARY__ || STDC_HEADERS || USG] (memmove): Define in
	terms of bcopy.
	* malloc/malloc/gmalloc-head.c: Redo previously undone change.

Thu Mar 18 04:59:21 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* malloc/malloc/gmalloc-head.c: Undo previous change.

Wed Mar 17 12:22:21 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mach/mach.h: New file.

	* Rules (clean): Remove $(generated), not $(clean-extras).
	(subdir_echo-distinfo): Use $(generated) instead of $(dont_distribute).
	(generated): Export this instead of dont_distribute.
	* stdlib/Makefile (generated): Set this, not dont_distribute.
	* sysdeps/posix/Makefile: Likewise.
	* sysdeps/unix/sysv/Makefile: Likewise.
	* sysdeps/unix/Makefile: Likewise.
	* Makefile (generated): Export this instead of dont_distribute.
	(parent_echo-distinfo): Use $(generated) instead of $(dont_distribute).
	* Make-dist (+tsrcs): Filter out $(generated), not $(dont_distribute).

	* mach/mach_init.h (__mach_task_self): Define so as not an lvalue.
	(mach_task_self): Surround defn with parens.

	* sysdeps/unix/Makefile (sys/param.h): Put "#include <endian.h>" in.
	($(sys/param.h-includes)): Edit out #define's of *_ENDIAN and
	BYTE_ORDER.

	* stdlib/tst-strtol.c (tests): Fully bracket initializers.

	* stdio/bug4.c: Change #ifdef LIBC to #ifdef _LIBC.

	* misc/progname.c (set_progname): Make a useless reference to
	set_progname to avoid a `defined but not used' warning.

	* sysdeps/mach/i386/start.c (_cthread_{init,exit}_routine): Remove
	`extern'; these want to be uninitialized common defns.

Mon Mar 15 18:41:05 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/__times.c (timeval_to_clock_t): Put __inline
	before storage class in defn.

	* sysdeps/unix/sysv/signum.h (SIG_ERR, SIG_DFL, SIG_IGN): Cast
	values to __sighandler_t, rather than obsolete ansidecl magic.

	* sysdeps/unix/__execve.S [!SYS_execve && SYS_exece]: Define
	SYS_execve to be SYS_exece.

	* sysvipc: New directory.
	* sysvipc/Makefile: New file.
	* sysvipc/sys/ipc.h: New file.

Fri Mar 12 15:31:44 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* posix/execlp.c (execlp): Remove spurious second declared parameter.
	Don't fill ARGV[0] specially; just let the loop do it.
	* posix/unistd.h (execlp): Remove spurious second declared parameter.

Thu Mar 11 13:58:47 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Makerules (sysd-Makefile): Write %.dep: %.S and %.dep: %.c rules.
	Depend on Makerules.
	($(objpfx)%.{o,dep}: $(objpfx)/%.{S,c,s}): New rules to find
	sources in $(objpfx) before sysdep directories.

	* configure.in (signed size_t check): Use eval on $CPP, since it
	contains unexpanded variable refs.
	Send grep output to /dev/null.
	Put quotes around 'unsigned long int'.

Wed Mar 10 18:32:11 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* features.h [! _LIBC]: #include <stubs.h>.
	* Makerules (stubs): New phony target.
	($(common-objpfx)stub-$(subdir)): New target.
	* Makefile (headers): Add stubs.h.
	($(objpfx)stubs.h): New target.

	* Makeconfig (CPPFLAGS): Define _LIBC, not LIBC.

	* Makerules (.SUFFIXES): Remove .m4; we no longer have any such files.

	* inet/netinet/in.h: Don't #include <inet-cvt.h>.
	(ntohl, ntohs, htonl, htons): Declare.
	#include <endian.h>.
	[__BYTE_ORDER == __BIG_ENDIAN] (ntohl, ntohs, htonl, htons):
	Define no-op macros.
	* inet/Makefile (headers): Remove inet-cvt.h.
	* sysdeps/vax/inet-cvt.h, sysdeps/generic/inet-cvt.h: Files removed.
	* sysdeps/generic/{ntohl,ntohs,htonl,htons}.c
	[BYTE_ORDER == LITTLE_ENDIAN]: Byte-swap X before returning it.

Tue Mar  9 11:32:35 1993  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)

	* malloc/malloc/gmalloc-head.c: Remove #definitions of memset,
	memcpy, and memmove; this is taken care of by malloc.h anyway.

Mon Mar  8 15:12:32 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/mips/jmp_buf.h (JB_PC): Protect with #ifdef __USE_MISC.

	* sysdeps/unix/sysv/sysv4/sigaction.h: Put SA_* except for
	SA_NOCLDSTOP inside #ifdef __USE_MISC.

Mon Mar  8 15:05:13 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* sysdeps/mips/jmp_buf.h (jmp_buf): Use `__ptr_t', not `PTR', for
	member types.
	(JB_PC): New define, for backwards compatability with Ultrix.

	* sysdeps/unix/sysv/sysv4/sigaction.h: New file.

Mon Mar  8 13:20:02 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* posix/glob/Makefile.in (VPATH): Set this to @srcdir@.
	(srcdir): Set this to $(VPATH).

	* posix/glob.c (glob): In no matches with GLOB_NOCHECK set case,
	add NULL terminator to PGLOB->gl_pathv.
	(prefix_array): Renamed arg PREFIX to DIRNAME, local var PRELEN to
	DIRLEN.  If DIRNAME is just "/", don't prepend it, so we get
	"/foo" instead of "//foo".
	(glob): Move qsort call outside of the else clause of the
	glob_pattern_p test; it should always be done.

Thu Feb 25 14:49:52 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/malloc.h [_MALLOC_INTERNAL]: Move #include <stdio.h> to
	front of file; it needs to come before size_t/ptrdiff_t frobnication.

Wed Feb 24 16:34:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (compile-command.[Ssc]): New variables; define them if
	they are not already defined.
	(sysd-Makefile): For each directory, write three rules:
		%.o: $dir/%.[Ssc]; $(compile-command.[Ssc]).
	(sysdep_path): Remove definition and vpath directives.
	* sysdeps/m68k/Makefile (compile-command.S): Define our own version.
	($(objpfx)%.o: %.S): Rule removed.

	* sysdeps/unix/sysv/linux/{__dup2,__mkdir,__rmdir,__setpgrp}.S:
	Removed.
	* sysdeps/unix/sysv/linux/Implies: Created; implies unix/common.

	* sysdeps/unix/sysv/sysv4/{sete[gu]id.S,fchdir.S,signum.h,__sigproc.S}:
	New files.

	* sysdeps/unix/sysv/sysv4/time.S: New file.

	* sysdeps/unix/common/Dist: New file; everything from
	sysdeps/unix/bsd/Dist except for bsdtty.h and bsddir.h.
	* sysdeps/unix/bsd/Dist: Remove things now in sysdeps/unix/common/Dist.

	* sysdeps/unix/bsd/sun/sparc/{__brk.c,__fork.S,__pipe.S,__vfork.S}:
	Moved to new directory sysdeps/unix/sparc.

	* sysdeps/unix/common/Implies: New file, in new directory; implies
	unix/inet only.
	* sysdeps/unix/bsd/Implies, sysdeps/unix/sysv/sysv4/Implies: New
	files; both imply unix/common.
	* sysdeps/unix/common/Makefile: Moved from sysdeps/unix/bsd.
	Changed references to unix/bsd to unix/common.
	* unix/bsd/{__access.S,__adjtime.S,__fchmod.S,__fchown.S,__getgrps.c,
	__getitmr.S,__getpgrp.S,__getrusag.S,__gettod.S,__lstat.S,__mkdir.S,
	__readlink.S,__rmdir.S,__setitmr.S,__setpgrp.S,__symlink.S,
	bsd_getgrp.S,closedir.c,ftruncate.S,getrlimit.S,glue-ctype.c,
	make_siglist.c,mk-local_lim.c,opendir.c,readv.S,rename.S,rewinddir.c,
	seekdir.c,setgroups.S,setrlimit.S,telldir.c,truncate.S,vhangup.S,
	writev.S,__dup2.S}: Moved to sysdeps/unix/common.
	* sysdeps/unix/sysv/sysv4/{__access.S,closedir.c,opendir.c,
	rewinddir.c,seekdir.c,telldir.c}: Removed.

Mon Feb 22 12:19:19 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/generic/pow.c (pow): Use __isnan to test for NaN rather
	than expecting "x!=x" to work.
	(pow_p): When testing if Y is an integer, use long int rather than
	int; they are different on some systems.  Compare against
	LONG_MIN+1, not LONG_MIN; (long int) (double) LONG_MIN might overflow.

	* malloc/dist-Makefile (gmalloc.c): Depend on Makefile.

	* malloc/Makefile (gmalloc-routines): New variable.
	(dist-routines): Use it.
	(malloc/Makefile): Also replace <GMALLOC-SOURCES> with
	$(gmalloc-routines).
	(malloc/Makefile): Make it unwritable to avoid accidental lossage.
	Depend on Makefile.

	* malloc/dist-Makefile (gmalloc): New variable: <GMALLOC-SOURCES>.
	(gmalloc.c): Use $(gmalloc), not $(sources).
	Make the file unwritable to avoid accidental lossage.

	* malloc/mtrace.c: Don't #include <stdio.h> because <malloc.h> did
	it for us.

	* malloc/valloc.c [! __GNU_LIBRARY__]: Replace hairy conditionals
	with #include "getpagesize.h".
	* malloc/Makefile (distribute, malloc-dist): Add getpagesize.h.

Sun Feb 21 18:29:30 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/sparc/Makefile (nodist-routines): Don't define.
	We want to distribute the generated divrem files; otherwise anyone
	building the library must have an m4 that works.
	($(divrem).S): Put these in sysdeps/sparc, not in $(objdir).
	(routines): Only put this inside ifeq ($(subdir),gnulib).

	* sysdeps/unix/bsd/sun/m68k/Makefile: File removed.

Sat Feb 20 16:43:55 1993  Torbjorn Granlund  (tege@sics.se)

	* sysdeps/i386/memset.c: Move adjustment of LEN before first stosb.
	* sysdeps/i386/bzero.c: Likewise.

Thu Feb 18 14:34:00 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* malloc/mcheck.c (checkhdr): Use `const', not `__const'.

Mon Feb  1 19:19:13 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/m68k/fpu/__logb.c: Use two-operand forms of 68881 insns
	rather than the one-operand source==dest form.  Sun's sun3
	assembler apparently doesn't grok the one-operand form.

	* sysdeps/posix/getcwd.c: Call __lstat instead of stat.
	We should not lose on nonexistent symlink targets.

Thu Jan 21 20:12:25 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* posix/glob.c: Put #includes of <glob.h> and <fnmatch.h> after
	all system includes, in case one of them has conflicting defns of
	FNM_* or GLOB_*, so we will redefine.  #undef FNM_* and GLOB_*
	before including our headers.

Tue Jan 19 16:16:05 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* mach/Makefile (routines): Removed __bcopy.
	* mach/__bcopy.c: File removed.

	* posix/glob.c (my_realloc): Cast result of malloc/realloc to (char *).

Sat Jan 16 14:19:07 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* manual/summary.awk: Handle single word in braces.

Thu Jan 14 13:52:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/glob/Makefile.in (realclean): Remove Makefile.

Mon Jan 11 18:32:56 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sony/m68k/Implies: Imply unix/bsd/hp/m68k, not
	unix/hp/m68k.

	* sysdeps/unix/bsd/tcsetattr.c: Use cbreak mode if ISIG is set,
	not if OPOST is set.
	Fixed typo in TOSTOP frobbing.

Tue Jan  5 15:11:31 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/Makefile (glob.tar): Include glob/configure.in.

Mon Jan  4 17:05:44 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* posix/glob/Makefile.in (RANLIB): Define to @RANLIB@.
	(RANLIB_TEST): Removed.
	(libglob.a): Don't use it.

Thu Dec 31 13:08:20 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/bsd4.4/{chflags,fchflags,setlogin}.S: Fix arg count.

	* sysdeps/posix/Makefile (mk-stdiolim): Use $(cded-objdir-CPPFLAGS).
	(cded-objdir-CPPFLAGS): Define new var.

	* sysdeps/unix/Makefile ($(sys/param.h-includes)): Strip trailing
	slash from directory name for mkdir.

Tue Dec 29 18:18:58 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/posix/sysd-stdio.c (exists): Return true if stat fails
	with other than ENOENT.

	* sysdeps/posix/__flock.c: New file.

	* malloc/Makefile (dist-headers): Define to malloc.h.
	(headers): Replace malloc.h with $(dist-headers).
	(malloc/Makefile): Use $(dist-headers) in place of $(headers).
	(malloc-dist, distribute): Replace ChangeLog with OChangeLog.

	* malloc/dist-Makefile (malloc.tar{,.Z}): Depend on FORCE.
	(FORCE): Define empty target.

Tue Dec 29 16:45:01 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/sparc/{umul,mul}.S: Use tege's shift+mask hack to avoid
	a test and branch for sign fixup.

	* limits.h [__GNUC__ >= 2]: #ifndef _GCC_LIMITS_H_, not _LIMITS_H_,
	to #include_next <limits.h>.

	* sysdeps/posix/getcwd.c: Call closedir after copying from the
	`struct dirent' buffer, not before.  That buffer is freed by closedir.

	* posix/gnu/types.h (__fd_set): Renamed member to `fds_bits' for
	compatibility with braindead extant code.

	* sysdeps/posix/sysd-stdio.c (__stdio_gen_tempname): Check for BUF
	being too small before doing sprintf.

	* malloc/malloc.h [_MALLOC_INTERNAL], malloc/valloc.c
	[HAVE_CONFIG_H]: #include "config.h".

	* Makefile (doc): Removed rule.
	(dvi, info): New rule.

Mon Dec 28 15:50:31 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/glob.c [HAVE_CONFIG_H]: Test this, not SHELL, to decide
	whether or not we want to #include "config.h".

Wed Dec 16 12:01:09 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* inet/Makefile (routines): Removed ruserpass.  Why did it get
	included in the first place?  That version does not match the one
	in the NET2 ftp source; whence came it?

Sat Dec 12 16:41:03 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sun/sparc/start.c: Use .set, not GNU ld magic,
	to alias asm symbol `start' to `__start'.

Fri Nov 20 18:20:50 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* stdio/vfprintf.c (%p): Tests of LEFT for "(nil)" were inverted.

	* stdio/tst-printf.c (main): Add `printf ("%#03x\n", 1);'.
	Add a width to %p test.

	* stdio/vfprintf.c (unsigned_integer): Clear SHOWSIGN and SPACE
	flags before falling into `number:'.  The `+' and ` ' flags are
	only meaningful for signed numbers.

	* string/tester.c (main): For strstr #11, correct return is first
	arg, not end of first arg.

	* stdlib/mbtowc.c: If S is "", return 0.  How was I convinced
	before that this is not what ANSI says?

	* stdio/__vfscanf.c: Initialize MALLOC_STRING to zero on each
	iteration (when we zero is_short et al).

	* sysdeps/posix/mkstemp.c (mkstemp): New file.
	* sysdeps/stub/mkstemp.c (mkstemp): New file.
	* misc/Makefile (routines): Add mkstemp.

	* sysdeps/posix/mktemp.c: Use `getpid ()' in place of undefined
	variable PID.
	#include <sys/stat.h>.

	* dirent/scandir.c: If SELECT is nil, don't try to call it.
	If CMP is nil, don't sort.

Wed Nov 18 13:42:09 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/__wait4.c: Changed type of 2nd arg to __WAIT_STATUS.

	* posix/sys/wait.h (__WAIT_STATUS): #if 0 out gcc2 magic defn.
	GCC is broken as of 2.3.1.

	* signal/signal.h (__sigaction, sigaction): Fixed type in
	prototype from `struct __sigaction' to `struct sigaction'.

	* sysdeps/m68k/fpu/atan2.c (PI, PIo4, PIo2): Removed static vars.
	(atan2): Declare PIo4 and PIo2 locally, and compute them from pi.

	* Makerules (native-CFLAGS): Define as $(config-defines).

	* sysdeps/unix/bsd/glue-ctype.c: Upcased all HAVE_* names in #ifdef's.

	* posix/fnmatch.h (FNM_LEADING_DIR): New flag.
	* posix/fnmatch.c (fnmatch): Support it.

	* sysdeps/i386/bytesex.h: New file.
	* sysdeps/i386/endian.h: Removed.
	* sysdeps/stub/bytesex.h: New file.
	* sysdeps/stub/endian.h: Removed.
	* sysdeps/generic/Makefile (bytesex.h): Create with det_endian.
	(endian.h): Removed old rule.
	(before-compile): Replace endian.h with bytesex.h.
	* string/Makefile (headers): Add bytesex.h.
	* string/endian.h: New file.
	* sysdeps/generic/det_endian.c: Rewritten to output just one line,
	a #define of __BYTE_ORDER to 1234, or 4321, etc.
	* inet/arpa/nameser.h: #include <endian.h>, rather than #ifdef'ing
	on misc. things to #define BYTE_ORDER.
	* sysdeps/generic/waitstatus.h: Test value of __BYTE_ORDER, not
	whether __LITTLE_ENDIAN is #define'd.
	* sysdeps/generic/mathimpl.h: Likewise.
	* sysdeps/generic/memcopy.h: Likewise.
	* sysdeps/ieee754/huge_val.h: Likewise.
	* sysdeps/ieee754/nan.h: Likewise.
	* sysdeps/ieee754/ieee754.h: Likewise.

Mon Nov 16 12:19:10 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makeconfig (ARCH): Define to empty if $(..)config.make exists.

	* misc/getusersh.c (initshells): malloc (STATB.st_size + 1), to
	contain the terminating NUL.  Pass fgets the real amount of space
	left in the buffer, instead of the random number (MAXPATHLEN + 1).

	* configure.in (minix*): base_os=unix/sysv.
	* sysdeps/unix/sysv/minix/sigaction.h: New file.

	* sysdeps/generic/sigaction.h (__SA_*): Renamed to SA_*.
	[__USE_BSD]: Put all but SA_NOCLDSTOP under this #ifdef.
	* signal/signal.h (SA_*): Remove #define's.
	(SIG_*): Moved #define's to sigaction.h.

	* sysdeps/generic/sigset.h (__sigmask): Shift ((sigset_t) 1), not
	just 1.

	* signal/signal.h (kill): Fix type of first arg to __pid_t, not int.

	* sysdeps/unix/Makefile (errnos): Changed regexp to disallow
	E[^A-Z0-9], and not to require that the defn be numeric only.

	* stdlib/stdlib.h: Don't #include <huge_val.h>; ANSI doesn't say
	<stdlib.h> defines HUGE_VAL.

	* stdlib/stdlib.h (__compar_fn_t): Use __P around prototype.

	* posix/Makefile (headers): Add utsnamelen.h, so it gets installed.
	(distribute): Remove it from here.

	* setjmp/setjmp.h (sigjmp_buf): Rename `__savemask' to
	`__mask_was_saved' and `__sigmask' to `__saved_mask'.
	* setjmp/sigjmp_save.c (__sigjmp_save): Change use.
	* setjmp/siglongjmp.c (siglongjmp): Likewise.

Fri Nov 13 17:34:00 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (config.make): Write assignments for INSTALL,
	INSTALL_PROGRAM, INSTALL_DATA, and RANLIB.

Thu Nov 12 17:11:18 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/stime.c: #include <stddef.h> for NULL.

	* sysdeps/stub/morecore.c: Fixed arg type to ptrdiff_t.

	* sysdeps/stub/ptrace.c: Fixed `va_start' uses to pass 2nd arg.

	* sysdeps/unix/sysv/sysv4/fcntlbits.h: New file, modified from
	unix/bsd/sun/sunos4 version.

	* sysdeps/unix/bsd/bsd4.4/fcntlbits.h: New file, modified from
	unix/bsd version.

	* sysdeps/unix/bsd/ultrix4/fcntlbits.h: New file, modified from
	unix/bsd version.

	* sysdeps/unix/bsd/sun/sunos4/fcntlbits.h: New file, modified from
	unix/bsd version.

	* sysdeps/unix/sysv/fcntlbits.h: Rewritten from stub version.
	* sysdeps/unix/sysv/filebits.h: File removed.

	* sysdeps/unix/bsd/fcntlbits.h: Rewritten from stub version.
	* sysdeps/unix/bsd/filebits.h: File removed.

	* io/fcntl.h: Don't #include <filebits.h>.
	Removed all #define's of foo to __foo; <fcntlbits.h> now defines
	the unmarked cases.

	* sysdeps/stub/fcntlbits.h: Remove leading __ from all symbols.

	* misc/sys/file.h (L_SET, L_INCR, L_XTND): Define to literal
	values, not to __ versions.  These are not system-dependent.
	(LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB): Define to literal values,
	not to __ versions.  These are not actually system-dependent,
	because no system has `flock' except for BSD compatibility, and
	then they use the same numbers.
	* sysdeps/stub/fcntlbits.h (__L_SET, __L_INCR, __L_XTND): Removed.
	(__LOCK_SH, __LOCK_EX, __LOCK_UN, __LOCK_NB): Removed.

Tue Nov 10 17:01:11 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/stub/fcntlbits.h: Merged in contents of filebits.h.
	(struct __flock): Renamed to `struct flock'.
	* sysdeps/stub/filebits.h: File removed.

	* posix/unistd.h (access, lseek, close, read, write, pipe, chown,
	fchown, chdir, dup, dup2, execve, pathconf, fpathconf, sysconf,
	getpid, getppid, setpgrp, setpgid, setsid, getuid, getgid,
	geteuid, getegid, setuid, setreuid, setgid, setregid, fork, vfork,
	isatty, link, symlink, readlink, unlink, rmdir, gethostname,
	getpagesize, getdtablesize): Remove #define's to __ versions.

	* posix/sys/types.h: Don't #include <gnu/time.h>.
	Instead, use forward decl `struct timeval;'.
	(__select): Use `struct timeval', not `struct __timeval', in prototype.
	Move into #ifdef __USE_BSD.
	(select): Removed #define to __select; added real prototype.

	* sysdeps/generic/waitstatus.h: New file.
	* sysdeps/stub/waitflags.h: New file.
	* sysdeps/unix/bsd/waitflags.h: New file.
	* posix/sys/wait.h: Don't #include <gnu/wait.h>.
	Do #include <waitflags.h> and <waitstatus.h>.
	(WHOHANG, WUNTRACED): Don't #define to __ versions; <waitflags.h>
	will define the unmarked cases.
	(union __wait): Remove type decl and associated #define's for w_*;
	`union wait' (no __) is now defined in <waitstatus.h>.
	[__USE_BSD && __GNUC__ >= 2] (__WAIT_STATUS): Define as funky union.
	(waitpid, wait3, wait4, wait): Removed #define's to __ versions;
	added real prototypes.
	* posix/gnu/wait.h: File removed.
	* posix/Makefile (headers): Remove gnu/wait.h.

	* posix/sys/times.h [__OPTIMIZE__] (times): Removed #define to __times.

	* posix/sys/utsname.h: Removed decl of __uname_getnode.

	* time/sys/time.h: Don't #include <gnu/time.h>.
	Don't support __need_timeval.
	(struct timeval, struct timezone, struct itimerval,
	enum __itimer_which): Declare these types here.
	(gettimeofday, settimeofday, adjtime, getitimer, setitimer,
	utimes): Removed #define's to __ versions.  Added real prototypes.
	Use `struct timeval' instead of `struct __timeval', etc.
	* time/gnu/time.h: File removed.
	* time/Makefile (headers): Removed gnu/time.h.

	* resource/sys/resource.h: Don't #include <gnu/time.h>.

Mon Nov  9 18:41:03 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* socket/sys/socket.h (SO_STYLE): Define instead of SO_TYPE.
	(SO_TYPE): Define as SO_STYLE.

	* inet/netinet/in.h (struct ip_opts): New type.
	(IP_*): New constants snarfed from 4.4's in.h.

Fri Nov  6 15:34:41 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* resource/sys/resource.h (struct rusage): #include <sys/time.h>
	before struct defn.  Use `struct timeval', not `struct __timeval'
	for `ru_utime' and `ru_stime' members.

	* resource/sys/resource.h [__OPTIMIZE__] (getrusage, ulimit),
	misc/sys/ioctl.h [__OPTIMIZE__] (ioctl): Remove #define's to __
	versions.

	* string/strings.h: Protect against multiple inclusion.
	* termios/sys/termios.h: Ditto.

	* string/string.h [__GNUC__ && __OPTIMIZE__] (ffs): Remove #define
	to __builtin_ffs.

	* stdlib/stdlib.h (comparison_fn_t): Use a typedef, not a #define.
	Define this #ifdef __USE_GNU, not #ifdef __GNUC__.
	[__GNUC__ && __OPTIMIZE__] (abs, labs): Remove #define's to __builtin_.

Thu Nov  5 20:01:25 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* signal/Makefile (headers): Remove gnu/signal.h;
	add sigaction.h, sigset.h.
	* sysdeps/generic/sigaction.h: New file.
	* sysdeps/generic/sigset.h: New file.
	* signal/gnu/signal.h: Removed.
	* signal/signal.h: Move __{BEGIN,END}_DECLS outside all the #if's
	(except the outermost one that protects against multiple inclusion).
	Don't #include <gnu/signal.h>.  Instead #include <sigset.h>
	outside of #if's, and #include <sigaction.h> inside #ifdef __USE_POSIX.
	(__sighandler_t): Define here; it is not system-specific.
	(kill, ssignal, gsignal, sigblock, sigsetmask, sigpause, sigvec,
	sigreturn): Remove #define's to __ versions.
	(sighandler_t, sigset_t): Use a typedef, not a #define.
	[__OPTIMIZE__] (sig{empty,fill,add,del}set, sigismember): Make
	these macros take args.
	(sigaction): Remove #define.
	(struct __sigvec): Renamed `struct sigvec'.
	(__sigvec): Use `struct sigvec', not `struct __sigvec', in prototype.

Fri Oct 30 19:45:26 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* configure.in (sco*): base_os=unix/sysv.

Thu Oct 29 16:29:26 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* configure.in: New file; mostly contents of old file `configure'.
	(srcdir guessing): Removed this code.
	Instead, call AC_PREPARE.
	Call AC_PROG_INSTALL and AC_PROG_RANLIB to find those programs.
	Use AC_HAVE_FUNCS to find what sys_siglist and _ctype_ are called.
	(config.make): Write new var `config-defines' with what autoconf
	put in $DEFS.
	Append -DHAVE_GNU_LD and -DHAVE_GNU_AS to DEFS if appropriate;
	don't write gnu_ld and gnu_as variables.
	* configure: Removed.
	* Makefile (distribute): Add configure.in.
	* Makeconfig (+defines): Include $(config-defines) before $(defines);
	don't include $(gnu_as) and $(gnu_ld).

	* sysdeps/unix/bsd/glue-ctype.c (TABLE): Test HAVE_* for several
	different names and #define this.
	(STRINGIFY): Define macro.
	(main): Use TABLE instead of hardcoded name.

	* configure (sysnames): Try successively less specific base os's.

	* Makerules (ar-it): Define commands only ifdef objects.

	* sysdeps/mips/setjmp.S: Jump to __setjmp_aux, not ___setjmp_aux.
	We are NO_UNDERSCORES.

Tue Oct 27 18:11:19 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/posix/pipestream.c, sysdeps/posix/system.c: Always use
	__vfork instead of expecting FORK to be defined.
	* sysdeps/unix/bsd/system.c, sysdeps/unix/bsd/pipestream.c:
	Removed.  sysdeps/unix versions are now what we want.

	* sysdeps/unix/bsd/sun/sunos3/m68k/__wait.S: Removed.
	* sysdeps/unix/bsd/hp/m68k/__wait.S: Moved to unix/bsd/m68k.

	* sysdeps/unix/bsd/hp/m68k/{__pipe,sysdep}.S: Moved to unix/bsd/m68k.
	* sysdeps/unix/bsd/sun/m68k/{__pipe,sysdep}.S: Removed.

	* sysdeps/unix/bsd/sun/m68k/start.c: Moved to unix/bsd/m68k.
	* sysdeps/unix/bsd/sony/m68k/start.c: Removed.

	* sysdeps/unix/bsd/bsd4.4/__sigstmsk.c: Correct file name in #include.

	* sysdeps/unix/bsd/sun/m68k/__fork.S: Removed.
	* sysdeps/unix/bsd/hp/m68k/__fork.S: Removed.
	* sysdeps/unix/bsd/vax/__fork.S: Moved to unix/bsd.

	* sysdeps/generic/__vfork.c: New file; fn alias to __fork.
	* sysdeps/stub/__vfork.c: Removed.

	* limits.h: Only do #include_next #ifndef _LIMITS_H_.

	* malloc/mcheck.c (mcheck): Set abortfunc to either FUNC or abort;
	never leave it unchanged.
	Return 0 if mcheck_used; -1 if not.
	* malloc/malloc.h (mcheck): Change return type in decl.

	* Makerules (+depfiles): Don't include them if there are none.

Mon Oct 26 16:30:52 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/fdopen.c: Use fcntl to check that FD is valid and
	allows the access MODE specifies.

	* sysdeps/stub/getcwd.c: #include <stddef.h>.

	* sysdeps/stub/sleep.c: #include <errno.h>.

Sun Oct 25 02:24:47 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (+includes): Add $(+sysdep-includes) to this, leaving
	CPPFLAGS alone.

	* sysdeps/stub/stime.c: #include <time.h>.

Thu Oct 22 13:36:48 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Rules (clean): Also remove $(clean-extras).

Tue Oct 20 18:36:40 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* configure: Write error message and lose for option with missing arg.

	* stdio/__vfscanf.c: Add `a' modifier, which makes %s and %[ fill
	in a char ** with a malloc'd string.
	(STRING_ADD_CHAR, STRING_ARG): New macros to deal with this hair.
	(%s, %[): Use them.

	* posix/gnu/types.h [__GNUC__] (__fsid_t): Define as long long.

	* stdio/vfprintf.c: Add %m, which is %s of strerror (errno).

Mon Oct 19 14:19:36 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* socket/sys/socket.h (PF_FILE, AF_FILE): Define new macros.
	(PF_UNIX, AF_UNIX): Make aliases for [PA]F_FILE.

	* sysdeps/ieee754/huge_val.h: #include <sys/cdefs.h>.
	[!__GNUC__]: Use __const, not CONST.

	* posix/wordexp.h: Fix indentation and syntax errors.

	* stdio/vasprintf.c (vasprintf): Set seen bit.

Fri Oct 16 17:18:34 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Makefile (Mcrt1.o): Create an empty .c file and compile it,
	rather than creating an empty .o file.

	* sysdeps/unix/Makefile (sys/param.h): Strip / from name for mkdir.

	* sysdeps/m68k/fpu/atan2.c [! __GNUC__]: Include generic, not iee754.

	* sysdeps/sparc/Makefile ({divrem}.S): Use $(M4) for m4 in cmds.
	* Makeconfig (M4): Define it.

	* stdio/newstream.c (__newstream): Link STREAM onto __stdio_head
	after malloc'ing it.

	* time/emkdir.c: #define unix if not already defined.

Thu Oct 15 19:55:45 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* stdlib/wctomb.c: When passed 0, store a '\0' and return 1.
	* stdlib/mbtowc.c: When passed "", store a 0 and return 1.

	* sysdeps/generic/strstr.c: When NEEDLE is "", return HAYSTACK.

Thu Oct 15 19:25:46 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* malloc/malloc.h (__after_morecore_hook): Declare new var.
	* malloc/malloc.c (__after_morecore_hook): Define it.
	(align): Call it.

Mon Oct 12 15:56:07 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* malloc/malloc.h (r_alloc, r_alloc_free, r_re_alloc): Declare.

	* Makerules (native-compile, common-objdir-compile): Pass
	$(native-CFLAGS) to the compiler.

	* Makeconfig (+gccwarn): Removed -Wstrict-prototypes and
	-Wpointer-arith.  They were not really helping, and caused extra
	warnings for harmless code.

	* malloc/Makefile (dist-routines): Add ralloc.
	(gpl2lgpl): Add ralloc.c.

	* time/zic.c: #define unix if not already defined.

	* Makerules ($(gpl2lgpl)): Make output unwritable; use mv -f.

Mon Oct 12 15:27:40 1992  Brendan Kehoe  (brendan@mole.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/ultrix4/mips/__set[gu]id.S: Handle returning to
	the proper caller ourselves, since setre[gu]id won't be doing it.

Mon Oct 12 13:37:16 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* malloc/malloc.h: Declare memory_warnings.
	* malloc/Makefile (dist-routines): Add vm-limit.
	(distribute): Add mem-limits.h.
	(gpl2lgpl): Add vm-limit.c, mem-limits.h.

	* gpl2lgpl.sed: Remove "This file is part of ..." lines.
	Changed regexp to match "foo is free software", not just "This
	program ...".

	* Makerules (+make-deps): Put file name before options on command line.

	* Makefile (install-lib): Remove libc.a from here.
	* Makerules [objects] (install-lib): Append it here instead.

	* io/sys/stat.h (S_IRWXO): Fixed typo.

Sun Oct 11 16:58:36 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/glob.c (__glob_{open,read,close}dir_hook): New vars.
	(glob_in_dir): Use them.
	* posix/glob.h: Declare them.

Thu Oct  8 20:03:30 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)

	* configure (config.make): Write comment to edit configparms instead.

Wed Oct  7 17:15:05 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/stub/__chown.c: Fixed arg types (int -> [ug]id_t).

	* sysdeps/stub/__geteuid.c: Fixed return type (int -> __uid_t).

	* sysdeps/stub/__getegid.c: Fixed return type (int -> __gid_t).

	* configure: Write defns in config.make for vars config-machine,
	config-vendor, and config-os.

	* ctype/ctype.h (__isctype, __tolower, __toupper): Cast argument
	and return value to `int'.

	* ctype/ctype.h (__ctype_tolower, __ctype_toupper): Changed type
	to `short int *'.
	(toupper, tolower): Removed inline functions; restored macros.
	* ctype/ctype.c (tolower, toupper): Just call the __ macros.
	* ctype/ctype-info.c: Change types here too.
	* locale/localeinfo.h: And here.
	* locale/C-ctype_ct.c: Ditto.

	* crypt: New code from Michael Glad.

	* Makefile (munch-init.c), sysdeps/unix/Makefile
	($(sys/param.h-includes), make-errnos.c, make-ioctls.c),
	sysdeps/unix/bsd/Makefile (local_lim.h, ctype-glue.c),
	sysdeps/posix/Makefile (stdio_lim.h): Changed rules to use a
	shorter suffix than `-tmp', to avoid exceeding 14 char limit.

Tue Oct  6 15:13:57 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile (README, INSTALL): Moved rules here.
	* Make-dist: From here.

	* sysdeps/unix/bsd/sun/m68k/{__pipe,__fork,sysdep}.S: Change uses
	of sysdeps/unix/bsd/hp9k3bsd to sysdeps/unix/bsd/hp/m68k.

	* sysdeps/m68k/Makefile: Put .S rule here.
	* sysdeps/unix/bsd/hp/m68k/Makefile: Removed file.

Mon Oct  5 19:40:22 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/generic/pow.c (pow_p): Changed code to KY jelly.

	* sysdeps/unix/bsd/ultrix4/utsnamelen.h: New file.
	* sysdeps/unix/bsd/ultrix4/uname.S: New file.

Fri Oct  2 17:43:32 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/posix/mktemp.c: Don't use a static index and increment
	it on each call.  Instead, always start at the beginning and
	iterate until we find a file that does not exist.

	* sysdeps/unix/sysv/i386/signal.S: Use C_SYMBOL_NAME for __sigreturn.
	Added comment about gas bug with `lcall' insn.

	* sysdeps/unix/i386/__brk.S: Use C_SYMBOL_NAME for __curbrk and _end.

	* sysdeps/unix/i386/sysdep.S: #include <sysdep.h>.
	Use C_SYMBOL_NAME(errno) in place of _errno.

	* sysdeps/unix/sysdep.h (___errno): Removed #define to _errno.
	`errno' is an ANSI name; it doesn't need to be aliased.
	* sysdeps/unix/bsd/sun/m68k/sethostid.S,
	sysdeps/unix/bsd/sun/m68k/__vfork.S,
	sysdeps/unix/bsd/sun/sparc/sysdep.h,
	sysdeps/unix/bsd/sun/sparc/sethostid.S,
	sysdeps/unix/bsd/vax/sysdep.S,
	sysdeps/unix/bsd/vax/__vfork.S: Use _errno, not ___errno.

	* sysdeps/unix/sysv/sysdep.h: File removed.
	* sysdeps/unix/sysv/i386/sysdep.h: Don't #include it.
	#define NO_UNDERSCORES before #include <sysdeps/unix/i386/sysdep.h>.

	* sysdeps/unix/i386/sysdep.h (C_SYMBOL_NAME): Define new macro.
	[NO_UNDERSCORES]: #define syscall_error to __syscall_error, so we
	stay name space tidy.

	* sysdeps/unix/sysv/sysv4/sys_getdents.S: Added missing arg count (3).

	* sysdeps/unix/sysv/i386/time.S: Fixed to not use bogus addressing
	mode `4(%esp,1)'; use `4(%esp)' instead.  Added comments.

	* sysdeps/stub/__fchmod.c (__fchmod): Fixed arg type to mode_t.

	* sysdeps/posix/__wait3.c: #include <stddef.h> for NULL.

	* sysdeps/unix/i386/__wait.S: Use asm label `null' instead of
	`1f', and actually define the label!  Added comments.

	* sysdeps/i386/memchr.c: Renamed asm label to `done'; not all
	assemblers support numbered labels like `1f' or `1b'.

	* stdio/fseek.c (fseek): Discard char pushed back by ungetc.
	* stdio/ftell.c (ftell): If we have a pushed-back char, decrement
	the file position we return.

	* sysdeps/unix/bsd/sun/sparc/vfork.S: New file.

Wed Sep 30 18:48:38 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* limits.h (_LIBC_LIMITS_H_): Define today's name for this.
	RMS said it was to be `_LIBC_LIMITS_H', but that is not what
	gcc actually uses.

Tue Sep 29 18:17:12 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* time/Makefile (zic-cmd): Define variable.
	(tzcompile, zoneinfo/localtime, zoneinfo/posixrules): Use it for
	name of `zic' command.

	* sysdeps/unix/bsd/Makefile (ctype-glue.c): Make sure the command
	is not an unqualified name.

	* sysdeps/stub/statbuf.h (struct stat): Contain only POSIX.1
	members, with the POSIX.1 types.
	(_STATBUF_ST_BLKSIZE): #undef and comment.
	* sysdeps/unix/bsd/statbuf.h (_STATBUF_ST_BLKSIZE): Define it.
	* sysdeps/posix/stdio_init.c (__stdio_init_stream): Only try to
	use st_blksize #ifdef _STATBUF_ST_BLKSIZE.

	* sysdeps/unix/__getpgsz.c: #include <stddef.h> for size_t.

	* sysdeps/stub/__fchown.c: Fixed arg types ([ug]id_t, not int).

	* io/sys/stat.h: #include <gnu/types.h> for __mode_t et al.

	* sysdeps/unix/__gete[ug]id.S [SYS_gete[ug]id]: Add arg count of 0.
	[! SYS_gete[ug]id]: Fixed arg count to be 0.

	* sysdeps/unix/__get[ug]id.S: Fixed arg count to be 0.

	* sysdeps/unix/sysv/linux/syscall.h: #if 0'd out 2nd defn of SYS_brk.

Sun Sep 27 21:56:56 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/Makefile (sys/param.h): Depend on $(common-objpfx)sys/.

Fri Sep 25 12:47:01 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Makeconfig (INSTALL_DATA): Pass -m 644.

Thu Sep 24 16:13:47 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/linux/getpeername.S: Renamed to getpeernam.S.
	* sysdeps/unix/sysv/linux/getsockname.S: Renamed to getsocknam.S.
	* sysdeps/unix/sysv/linux/setsid.S: Renamed to __setsid.S;
	function renamed to __setsid.

	* Version 1.05.

	* Makefile (dist): Depend on $(distribute).

	* stdio/__vfscanf.c (%c): Fixed DO_ASSIGN case loop condition to
	not write one char too many.

Wed Sep 23 16:32:18 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdlib/qsort.c (_quicksort): Return immediately if TOTAL_ELEMS==0.

Tue Sep 22 19:10:59 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Makerules [! OUTPUT_OPTION && objpfx]: Define OUTPUT_OPTION.

Mon Sep 21 22:40:55 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/mk-local_lim.c: Use MAXNAMLEN for NAME_MAX,
	rather than hard-wiring 255.
	[! MAXNAMLEN]: Define it to 255.
	[LINK_MAX && ! MAXLINK]: #define MAXLINK LINK_MAX.

	* sysdeps/unix/bsd/glue-ctype.c [ultrix]: #define _ctype_ _ctype__.

	* configure: Rename var `gas' to `gnu_as' and use consistently.

Fri Sep 18 16:32:16 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sys/errno.h: New file.
	* Makefile (headers): Add it.

	* Makeconfig (+make-deps): Use = not define.

	* time/Makefile (zones-%): Don't clobber zonenames; append to it.
	Depend on Makefile so we rebuild when the rule changes.
	Changed implicit rule from zoneinfo/%/... to zone%/... so it will
	actually match.

	* sysdeps/unix/Makefile (syscall.h): Filter out "#ident" lines.

	* Makeconfig (+link): Use $(gnulib) instead of -lgcc.
	(gnulib): Define to -lgcc.

	* posix/glob/Makefile.in (AR, ARFLAGS): Define.
	(libglob.a): Use those vars instead of hardcoding.

	* Makeconfig (ARCH) [machine]: Don't define if $(..)config.make exists.

	* Makerules (compile.S): Include $(asm-CPPFLAGS).
	(S-CPPFLAGS): Define = $(asm-CPPFLAGS).
	(+make-deps): Include $(sfx-CPPFLAGS), where `sfx' is S or c.
	* Makeconfig (asm-CPPFLAGS): Define (empty) and comment.

	* sysdeps/unix/Makefile ($(sys/param.h-includes)): Filter out
	decls or macros for host<->net conversion (htonl et al).

Thu Sep 17 17:33:51 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/statbuf.h: Define __S_*.

	* misc/Makefile (headers): syslog.h -> sys/syslog.h.
	* misc/syslog.h: Moved to misc/sys/syslog.h.

	* limits.h [__GNUC__ >= 2]: #define _LIBC_LIMITS_H before
	#include_next <limits.h>.
	Define _LIMITS_H unconditionally.

Wed Sep 16 17:43:59 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/Makefile (syscall.h): Don't use \< in sed commands.
	Some seds don't seem to grok it.

	* Makerules (+install-dirs): Sort them.

	* Makeconfig (stdarg.h): Use $(wildcard va-*.h) instead of va-*.h,
	and := instead of =.

	* Makeconfig (prefix): Default to $(exec_prefix), not /usr/local.

	* Makeconfig (+link): Use $(common-objpfx) rather than $(objpfx)
	to find start.o; use $(libc.a) instead of $(objpfx)libc.a.

	* sysdeps/sparc/Makefile: crypt subdir is not called uf-crypt.

	* sysdeps/unix/Makefile (sys/param.h-includes): Fixed filtering
	out of existent glibc headers to remove $(..) pfx after wildcard.

	* misc/paths.h: New file, snarfed from 4.4 BSD.
	* misc/Makefile (headers): Add paths.h.

Tue Sep 15 14:55:11 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (+sysdir_pfx): Define as $(common-objpfx).

	* MakeTAGS (TAGS) [subdir && ! tags_sources]: Create an empty
	file, rather than no commands at all.

	* string/string.h [__GNUC__ && __OPTIMIZE__] (ffs): Take arg.

	* sysdeps/unix/sysv/linux/__wait4.S: New file.

	* sysdeps/unix/sysv/linux/syscall.h: New version from hlu.

	* sysdeps/unix/Makefile (syscall.h): Upcase `sys_' in input.

	* sysdeps/unix/bsd/ultrix4/mips/sysdep.h (MOVE): Insn is `move',
	not `movl'.

	* sysdeps/unix/bsd/ultrix4/mips/sigcontext.h: Deansideclized.

	* sysdeps/unix/ioctls-tmpl.c [DIOCGETPT, DEVGETGEOM]: Include
	headers for these.
	[ultrix]: Mondo cruft.

Sat Sep 12 12:08:29 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)

	* misc/Makefile (routines): Add ttyslot, syslog.
	* misc/ttyslot.c, misc/syslog.[ch]: New, snarfed from 4.4 BSD.
	(headers): Add syslog.h

	* misc/getttyent.c (getttyent): Parse _TTYS_TRUSTED keyword and
	set TTY_TRUSTED bit.
	* misc/ttyent.h (TTY_TRUSTED): New bit in ty_status.
	(_TTYS_TRUSTED): New keyword.
	(_TTYS_CONSOLE): New keyword.
	(TTY_CONSOLE): New bit in ty_status.

	* dirent/scandir.c (scandir): Don't keep using V after realloc'ing
	it.  Use the returned new ptr instead.

Thu Sep 10 18:59:23 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdlib/div.c, stdlib/ldiv.c: Rewritten from Berkeley code that works.

	* Makeconfig (stdarg.h): Add va-*.h.

	* stdlib/Makefile (dont_distribute): Define: testsort.input.

	* sysdeps/mach/hurd/i386/_hurd_start_sigthread.c,
	sysdeps/stub/_hurd_start_sigthread.c: Renamed to .../startsig.c.
	* sysdeps/mach/hurd/sys_errlist.awk: Renamed to .../errlist.awk.
	* sysdeps/mach/hurd/Makefile (sys_errlist.c): Change dep.
	* sysdeps/unix/bsd/make-local_lim.c: Renamed to .../mk-local_lim.c.
	* sysdeps/unix/bsd/Makefile (local_lim.h): Change dep.
	(make-local_lim): Change target and dep.
	* hurd/_hurd_dead_recv.c: Renamed to hurd/dead_recv.c.
	* hurd/setdtablesize.c: Renamed to hurd/setdtsz.c.
	* hurd/Makefile (routines): Change references.
	* stdio/tstgetline.c: Renamed to stdio/tstgetln.c.
	* stdio/tstgetline.input: Renamed to stdio/tstgetln.input.
	* stdio/Makefile (tests): Change ref.
	* README.template: Remove note about long file names.

	* sysdeps/unix/bsd/sun/sunos4/utsnamelen.h (_UTSNAME_LENGTH):
	Define here, rather than #include'ing sysv/utsnamelen.h.
	This file gets installed.

Wed Sep  9 17:06:14 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makeconfig (localtime-file): Put in $(prefix)/etc, not /etc.

	* setjmp/Makefile (routines): Remove sigsetjmp.

	* sysdeps/posix/Makefile (objdir-CPPFLAGS) [! subdir]: Rewrote
	totally broken defn.

	* sysdeps/unix/Makefile (syscall.h): Keep lines starting
	with #, not only those starting with #define.
	We want to preserve any #ifdef in the original.

	* Makerules (install): Dep $(+install-dirs), not $(dir $(+install)).
	(+install-dirs): Define to get two levels of dirs.

	* time/Makefile (tz-cc): Use = instead of define directive.

	* sysdeps/unix/bsd/sun/sparc/start.c (_start): Give ARGC, ARGV,
	and ENVP `register' storage class; can then clear the FP early.

Sat Sep  5 13:14:09 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)

	* Makerules (sysdirs): Pass sysdep_dir in child's environment.

Fri Sep  4 15:37:23 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)

	* Makeconfig (common-objpfx): Add trailing slash.
	Move comment to prev line to avoid extra whitespace.


See ChangeLog.1 for earlier changes.
