2002-02-20  Release Manager

	* GCC 3.0.4 Released.

2001-12-20  Release Manager

	* GCC 3.0.3 Released.

2001-12-03  Toon Moene  <toon@moene.indiv.nluug.nl>

	PR fortran/4885
	* endfile.c (t_runc): After ftruncate, seek to end-of-file.

2001-11-25  Toon Moene  <toon@moene.indiv.nluug.nl>

	* libF77/Makefile.in: Fix non-portable use of `$<' in z_log.c's rule.

2001-11-25  Toon Moene  <toon@moene.indiv.nluug.nl>

	PR libf2c/4930
	* libF77/Makefile.in: Compile z_log.c with -ffloat-store.

2001-10-23  Release Manager

	* GCC 3.0.2 Released.

2001-08-19  Release Manager

	* GCC 3.0.1 Released.

2001-08-19  Release Manager

	* GCC 3.0.1 Released.

20010617 Release Manager

        * GCC 3.0 Released.

2001-06-13  Toon Moene  <toon@moene.indiv.nluug.nl>

	* libI77/inquire.c: Include "config.h".

2001-05-21  Loren J. Rittle  <ljrittle@acm.org>

	* libI77/Makefile.in (stamp-h): Create in $(objdir) instead
	of $(srcdir).

2001-05-18  Andreas Jaeger  <aj@suse.de>

	* libI77/Makefile.in (stamp-h): Only create config.h, touch stamp-h.
	(${srcdir}/config.h.in): Add true rule.

	* libI77/stamp-h.in: Added.

2001-05-17  Andreas Jaeger  <aj@suse.de>

	* libI77/Makefile.in: Add rules to rebuild config.h.in when
	needed.

2001-05-16  Andreas Jaeger  <aj@suse.de>

	* libI77/backspace.c: Include "config.h".
	* libI77/close.c: Likewise.
	* libI77/dfe.c: Likewise.
	* libI77/dolio.c: Likewise.
	* libI77/due.c: Likewise.
	* libI77/err.c: Likewise.
	* libI77/fmt.c: Likewise.
	* libI77/fmtlib.c: Likewise.
	* libI77/ftell_.c: Likewise.
	* libI77/ilnw.c: Likewise.
	* libI77/lread.c: Likewise.
	* libI77/open.c: Likewise.
	* libI77/rdfmt.c: Likewise.
	* libI77/rsfe.c: Likewise.
	* libI77/rsne.c: Likewise.
	* libI77/util.c: Likewise.
	* libI77/wrtfmt.c: Likewise.
	* libI77/wsne.c: Likewise.
	* libI77/xwsne.c: Likewise.

	* libI77/config.h.in: Generate with autoheader.

	* libI77/configure.in: Add comments for all AC_DEFINES so that
	autoheader can grok it.
	* libI77/configure: Regenerated.

2001-05-16  Andreas Jaeger  <aj@suse.de>

	* libI77/Makefile.in (endfile.o): Add dependency on config.h.

	* libI77/endfile.c: Include config.h and sys/types for off_t.

	* libI77/config.h.in: New file.

	* libI77/configure.in: Add test for off_t, create config.h file.
	* libI77/configure: Regenerated.

2001-05-15  Loren J. Rittle  <ljrittle@acm.org>

	* libI77/endfile.c (t_runc): Add cast to help case where
	ftruncate() prototype is somehow missing even though autoconf
	test found it properly.

2001-02-27  Toon Moene  <toon@moene.indiv.nluug.nl>

	* libI77/configure.in: Test for ftruncate.
	* libI77/configure: Rebuilt.
	* libI77/endfile.c: Use fflush/ftruncate when available.

2001-02-08  Geoffrey Keating  <geoffk@redhat.com>

	* configure.in: Don't run AC_PROG_CC_WORKS, because
	we're not interested in the result and it might fail.
	* libF77/configure.in: Likewise.
	* libI77/configure.in: Likewise.
	* libU77/configure.in: Likewise.
	* configure: Regenerated.
	* libF77/configure: Likewise.
	* libI77/configure: Likewise.
	* libU77/configure: Likewise.

2001-01-29  Phil Edwards  <pme@sources.redhat.com>

	* libU77/COPYING.LIB:  Update to LGPL 2.1 from the FSF.

2001-01-24  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* libU77/alarm_.c: Separate the #ifdef KR_headers logic from the
	G77_alarm_0 function definition.  Check for SIG_ERR and provide our own
	if missing.

2001-01-24  David Billinghurst <David.Billinghurst@riotinto.com>

	* libU77/Makefile.in:  Explicitly generate a.out for check.

2001-01-23  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* libU77/ctime_.c: #include <sys/types.h> for time_t.
	* libU77/datetime_.c: Likewise.
	* libU77/fdate_.c: Likewise.
	* libU77/gmtime_.c: Likewise.
	* libU77/idate_.c: Likewise.
	* libU77/itime_.c: Likewise.
	* libU77/ltime_.c: Likewise.
	* libU77/sys_clock_.c: Likewise.
	* libU77/vxtidate_.c: Likewise.
	* libU77/vxttime_.c: Likewise.

	* libU77/sys_clock_.c: #include <sys/param.h> for the clock tick rate.

2000-12-09  Toon Moene  <toon@moene.indiv.nluug.nl>

	Update to Netlib version 20001205.
	Thanks go to David M. Gay for these updates.

	* libF77/Version.c: Update version information.
	* libF77/z_log.c: Improve accuracy of real(log(z)) for
	z near (+-1,eps) with |eps| small.
	* libF77/s_cat.c: Adjust call when ftnint and ftnlen are
	of different size.
	* libF77/dtime_.c, libF77/etime_.c: Use floating point divide.

	* libI77/Version.c: Update version information.
	* libI77/rsne.c, libI77/xwsne.c: Adjust code for when ftnint
	and ftnlen differ in size.
	* libI77/lread.c: Fix reading of namelist logical values followed
	by <name>= where <name> starts with T or F.

2000-11-26  Toon Moene  <toon@moene.indiv.nluug.nl>

	* libI77/Version.c, libF77/Version.c, libU77/Version.c:
	Designate version as (experimental) instead of (prerelease)

2000-11-15  Toon Moene  <toon@moene.indiv.nluug.nl>

	* libI77/configure.in: See if `mkstemp' is available.
	* libI77/configure: Regenerate.
	* libI77/open.c: Use `mkstemp' to create scratch
	file atomically.

2000-07-03  Donn Terry  (donnte@microsoft.com)
        * libU77/aclocal.m4: check for 2 argument gettimeofday without
	struct timezone

2000-07-02  Toon Moene  <toon@moene.indiv.nluug.nl>
	* libF77/Version.c: Bumped version number to 0.5.26.
	* libI77/Version.c: Ditto.
	* libU77/Version.c: Ditto.

2000-06-21  Zack Weinberg  <zack@wolery.cumb.org>

	* libU77/dtime_.c, libU77/etime_.c: Include stdlib.h if
	HAVE_STDLIB_H is defined.

2000-06-11  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>

	* rdfmt.c (rd_L): Use if-then-else instead of case statement to
	solve problems when sizeof(char) == sizeof(short).

2000-05-18  Chris Demetriou  <cgd@sibyte.com>

	* configure.in: Test for __g77_integer, __g77_uinteger,
	__g77_longint, and __g77_ulongint builtin types, rather
	than mucking around with compiler headers.
	* configure: Regenerate.
	* g2c.hin (integer, logical, flag, ftnlen, ftnint): Use
	__g77_integer rather than autoconfigured value.
	(uinteger): Use __g77_uinteger rather than autoconfigured value.
	(longint): Use __g77_longint rather than autoconfigured value.
	(ulongint): Use __g77_ulongint rather than autoconfigured value.

Sun Mar 12 20:12;30 2000  Toon Moene  <toon@moene.indiv.nluug.nl>
	Based on work done by David M. Gay (Bell Labs)

	* libF77/configure.in: Define IEEE_COMPLEX_DIVIDE.
	* libF77/[cz]_div.c: Arrange for compilation under
	-DIEEE_COMPLEX_DIVIDE to make these routines
	avoid calling sig_die when the denominator vanishes.
	* libF77/s_rnge.c: Add casts for the case of
	sizeof(ftnint) == sizeof(int) < sizeof(long).
	* libI77/endfile.c: Set state to writing (b->uwrt = 1) when an
	endfile statement requires copying the file
	Also, supply a missing (long) cast in the sprintf call.
	* libI77/sfe.c: Add #ifdef ALWAYS_FLUSH logic, for formatted I/O.

Wed Feb 16 11:10:05 2000  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (gcc_version): When setting, narrow search to
	lines containing `version_string'.

Tue Nov 16 20:39:42 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* libU77/u77-test.f (wd): Allow for longer working directory
	pathnames.

1999-10-14 Theo Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>

	* libU77/acconfig.h: Define GETTIMEOFDAY_ONE_ARGUMENT and
	HAVE_TIMEZONE in acconfig.h.
	* libU77/config.hin: Rebuilt.

1999-10-12  Dave Love  <fx@gnu.org>

	* libU77/aclocal.m4: Re-write, defining LIBU77_GETTIMEOFDAY, not
	LIBU77_HAVE_STRUCT_TIMEZONE.

	* libU77/configure.in: Use LIBU77_GETTIMEOFDAY, not
	LIBU77_HAVE_STRUCT_TIMEZONE.  Don't check for gettimeofday
	separately.

	* libU77/datetime_.c (G77_date_and_time_0): Use
	GETTIMEOFDAY_ONE_ARGUMENT.

Tue Sep 14 01:44:01 1999  Marc Espie <espie@cvs.openbsd.org>

	* Makefile.in:  Prepend $(SHELL) to move-if-change calls.

Fri Aug  6 23:32:29 1999  Daniel Jacobowitz <drow@drow.them.org>

	* Makefile.in (FLAGS_TO_PASS): Include prefix, exec_prefix,
	libdir, libsubdir and tooldir.

Wed Jul  7 15:58:16 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/date_.c (G77_date_y2kbug_0): G77_time_0 returns
	longint, not integer, and G77_ctime_0 takes longint, not
	integer, argument.

	* libU77/Version.c: Bump version.

Mon Jun 28 21:27:08 1999  Craig Burley  <craig@jcb-sc.com>

	Update to Netlib version of 1999-06-28:
	* changes.netlib, libI77/Version.c, libI77/rsne.c
	readme.netlib: See changes.netlib for info.

Fri Jun 18 11:38:07 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/ttynam_.c: if !defined (HAVE_TTYNAM),
	write all spaces into return value instead of trying
	to return -1 from a void function.

Fri Jun 18 11:22:21 1999  Craig Burley  <craig@jcb-sc.com>

	Update to Netlib version of 1999-05-10:
	* changes.netlib, libI77/Version.c, libI77/backspace.c
	readme.netlib: See changes.netlib for info.

Fri Jun 18 11:15:24 1999  Craig Burley  <craig@jcb-sc.com>

	* libI77/backspace.c: Undo Wednesday's change, in
	preparation for slightly different Netlib change.

Wed Jun 16 11:38:58 1999  Craig Burley  <craig@jcb-sc.com>

	From Ian Watson <WATSON_IAN_A@Lilly.com> 1999-06-12:
	* libI77/backspace.c: Reload file descriptor after
	calling t_runc.
	* libI77/Version.c: Bump libg2c version.

Wed May 26 14:26:35 1999  Craig Burley  <craig@jcb-sc.com>

	* libF77/Version.c, libI77/Version.c, libU77/Version.c:
	Use 0.5.24 to designate the version of g77 within GCC 2.95.

Thu May 20 03:20:59 1999  Jeffrey A Law  (law@cygnus.com)

	* configure.in (AC_EXEEXT): Remove call.
	(compiler_name): Explicitly check with no extension and .exe
	extension.
	* configure: Regenerate.

Mon May 10 17:33:45 1999  Craig Burley  <craig@jcb-sc.com>

	Update to Netlib version of 1999-05-10:
	* changes.netlib, libF77/Version.c, libF77/abort_.c,
	libF77/c_log.c, libF77/ef1asc_.c, libF77/s_rnge.c,
	libF77/s_stop.c, libI77/Version.c, libI77/open.c,
	readme.netlib: See changes.netlib for info.

Fri May 7 9:33:55 1999 Donn Terry (donn@interix.com)

	* libU77/dtime_.c (G77_dtime_0): Standard-conforming error check.
	* libU77/etime_.c (G77_etime_0): Likewise.

Mon May  3 19:15:07 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/u77-test.f (main): Declare ABORT as intrinsic.

1999-05-03  Craig Burley  <craig@jcb-sc.com>

	* libU77/u77-test.f: Reverse order of two arguments to
	CTIME_subr, DTIME_subr, ETIME_subr, and TTYNAM_subr.

Mon May  3 11:21:35 1999  Craig Burley  <craig@jcb-sc.com>

	* libF77/c_log.c: Cope with partial overlap a la z_log.c.
	(Change likely to be made to netlib version shortly.)

Mon May  3 11:12:38 1999  Craig Burley  <craig@jcb-sc.com>

	Update to Netlib version of 1999-05-03:
	* changes.netlib, libF77/Version.c, libF77/c_cos.c,
	libF77/c_exp.c, libF77/c_sin.c, libF77/d_cnjg.c,
	libF77/dtime_.c, libF77/etime_.c, libF77/getenv_.c,
	libF77/r_cnjg.c, libF77/z_cos.c, libF77/z_exp.c,
	libF77/z_log.c, libF77/z_sin.c, libI77/Version.c,
	libI77/err.c, libI77/open.c, libI77/rdfmt.c, readme.netlib:
	See changes.netlib for info.

Mon May  3 10:52:53 1999  Craig Burley  <craig@jcb-sc.com>

	* libF77/c_cos.c, libF77/c_div.c, libF77/c_exp.c, libF77/c_log.c,
	libF77/c_sin.c, libF77/c_sqrt.c, libF77/d_cnjg.c, libF77/pow_zi.c,
	libF77/r_cnjg.c, libF77/z_cos.c, libF77/z_div.c, libF77/z_exp.c,
	libF77/z_log.c, libF77/z_sin.c, libF77/z_sqrt.c: Revert back to
	netlib versions as of f2c-19990501.

Sun May  2 01:38:50 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/u77-test.f (main): Declare FTELL as intrinsic.

Sun May  2 01:13:37 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/u77-test.f (main): List libU77 intrinsics
	not currently tested.
	Add tests for TIME8, CTIME_subr, IARGC, TTYNAM_subr,
	GETENV, FDATE_subr, DTIME_subr, ETIME_subr, DATE, ITIME,
	FTELL_subr, MCLOCK, MCLOCK8, and CPU_TIME.
	Trim blanks off the ends of some printed strings.

Sun May  2 00:06:45 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/u77-test.f (main): Just warn about FSTAT gid
	disagreement, as it's expected on some systems.

Sat May  1 23:57:18 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/u77-test.f: Generalize sum-checking to
	use a new function, which allows for some slop.
	Clean up some commentary.
	(issum): The new function.
	(sgladd): Deleted subroutine.

Sat May  1 23:35:18 1999  Craig Burley  <craig@jcb-sc.com>

	* libU77/u77-test.f: Modify to be more like testsuite
	version, bringing patches to that version here.
	Add suitable commentary.

Sat Apr 24 11:02:48 1999  Craig Burley  <craig@jcb-sc.com>

	* Makefile.in (s-libi77, s-libf77, s-libu77): Revert
	the patch from <hjl@gnu.org>, as per the commentary.

Sat Apr 17 17:33:30 1999  Craig Burley  <craig@jcb-sc.com>

	From H.J. Lu <hjl@gnu.org>:
	* Makefile.in (s-libi77): Depend on i77.
	(s-libf77): Depend on i77.
	(s-libu77): Depend on u77.

Mon Apr 12 21:38:14 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* libF77/getenv_.c: Include stdlib.h.

Sun Apr 11 23:30:42 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* libU77/dtime_.c: Handle all variants of WIN32.
	* libU77/etime_.c: Likewise.

	* libU77/aclocal.m4: New file.
	* libU77/configure.in (LIBU77_HAVE_STRUCT_TIMEZONE): Add test.
	* libU77/acconfig.h (HAVE_STRUCT_TIMEZONE): Add macro.
	* libU77/datetime_c.c (G77_date_and_time_0): Use.
	* libU77/config.hin: Regenerate.
	* libU77/configure: Likewise.

Wed Mar 31 13:50:24 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (extra_includes): Don't attempt to calculate the
	location of the gcc src or obj directories.  Instead rely on
	precomputed variables, $topsrcdir and $r, to obtain these values.
	Set -I flags appropriately.

1999-03-28  Dave Love  <fx@gnu.org>

	* configure: Rebuilt.

	* configure.in: Fix integer size tests: sanity check first; search
	toplevel include dir (from Rainer Orth); only mess with ac_cpp
	once; use -DIN_GCC -DHAVE_CONFIG_H.

	* configure.in: Use `g77_cv_...', not `f77_cv_...'.

Wed Mar 24 22:41:28 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (AC_PREREQ): Update to 2.13.
	(AC_EXEEXT): Call to find possible file extension.
	(compiler_name): Use.
	* configure: Regenerate.

1999-03-17  Craig Burley  <craig@jcb-sc.com>

	Update to Netlib version of 1999-03-17:
	* libF77/F77_aloc.c, libF77/README.netlib, libF77/dtime_.c,
	libF77/etime_.c, libF77/signal1.h0, libI77/Version.c,
	libI77/dfe.c, libI77/endfile.c, libI77/lread.c,
	libI77/sfe.c, readme.netlib, changes.netlib:
	See changes.netlib for info.

1999-03-06  Craig Burley  <craig@jcb-sc.com>

	Mon Dec 21 23:03:54 1998 Hans-Peter Nilsson <hp@axis.se>:
	* libI77/Makefile.in (all *.o except VersionI.o): Added dependence
	on respective .c file.
	* libF77/Makefile.in (all .o except VersionF.o): Similarly.
	* libU77/Makefile.in (date_.o): Added dependence on date_.c

1999-03-06  Craig Burley  <craig@jcb-sc.com>

	Rename non-Y2K-compliant intrinsics:
	* Makefile.in (F2CEXT): Now two versions each of
	`date' and `vxtidt'.
	* f2cext.c (date_, vxtidate_): Split into two versions,
	the existing one calling a new "y2kbuggy" routine that
	does not exist, and a new one named with "y2kbug" that
	calls the newly renamed underlying routine.
	* libU77/date_.c (G77_date_y2kbug_0): Rename from G77_date_0.
	* libU77/vxtidate_.c (G77_vxtidate_y2kbug_0): Rename from
	G77_vxtidate_0.
	* libU77/Version.c: Bump version.

1999-03-03  Craig Burley  <craig@jcb-sc.com>

	* libU77/vxtidate_.c (G77_vxtidate_0): Truncate
	year to last two digits (i.e. modulo 100), as per
	documentation and (documented) Y2K non-compliance.

1999-02-20  Craig Burley  <craig@jcb-sc.com>

	From Krister Walfridsson <cato@df.lth.se>:
	* libU77/lstat_.c (G77_lstat_0): Kill spurious setting
	of element 6 to zero, as it undid the previous setting.

1999-02-15  Craig Burley  <craig@jcb-sc.com>

	* f2c.h: Delete my (old) email address.

1999-02-14  Craig Burley  <craig@jcb-sc.com>

	* libU77/Version.c: Bump ("update" below) to date of last change.
	* libI77/Version.c: Bump to date of last change.

Tue Feb  9 18:13:30 GMT 1999  Nathan Sidwell  <nathan@acm.org>

	* Makefile.in (distclean): Move Makefile deletion to end of
	commands.

1999-01-15  Dave Love  <fx@gnu.org>

	* libU77/datetime_.c (G77_date_and_time_0): Return milliseconds as
	such, not as microseconds.
	(s_copy): Declare.

1998-11-26  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure.in (compiler_name): Add check to detect if this
	language's compiler has been built.
	* configure: Regenerate.

Mon Nov 23 16:52:22 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Use AC_PREREQ(2.12.1).
	* libF77/configure.in: Likewise.
	* libI77/configure.in: Likewise.
	* libU77/configure.in: Likewise.

1998-10-24  Dave Love  <d.love@dl.ac.uk>

	* configure.in: Touch g2c.h in AC_OUTPUT after multilib
	disturbance.

1998-10-23  Dave Love  <d.love@dl.ac.uk>

	* f2cext.c: Include math.h.

1998-10-19  Dave Love  <d.love@dl.ac.uk>

	* configure: Regenerate.

	* configure.in: Use AC_CONFIG_AUX_DIR.

1998-10-12  Dave Love  <fx@gnu.org>

	* libI77/open.c (_XOPEN_SOURCE): Define.

1998-10-12  Dave Love  <fx@gnu.org>

	* Makefile.in (.SUFFIXES): Don't use any.
	(all-unilib): New target, like old all.
	(all): Use it.
	(.PHONY): Add all-unilib.

1998-10-12  Dave Love  <d.love@dl.ac.uk>

	* configure.in: Reorder Makefile, g2c.h in AC_OUTPUT.

Tue Oct  6 21:16:58 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in: Revert last patch.

Mon Oct  5 01:16:10 1998  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (s-libi77): Depend on i77.
	(s-libf77): Depend on i77.
	(s-libu77): Depend on u77.

1998-09-30  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in (f2cext.c): Depend on g2c.h.

1998-09-30  Robert Lipe  <robertl@dgii.com>

	* Makefile.in (all): Correct dependencies so --disable-multilibs
	works again.
	(distclean): Correct typo.

1998-09-28  Dave Love  <d.love@dl.ac.uk>

	* libI77/open.c: Back out part of last Netlib update affecting
	scratch files which clashed with the g77 variations and broke
	implicit endfile on rewind.

1998-09-21  Dave Love  <d.love@dl.ac.uk>

	* libI77/Version.c: Update.

Mon Sep 21 12:27:27 1998  Robert Lipe  <robertl@dgii.com>

	* Makefile.in (distclean, clean, uninstall, install, all): Add
	multilib support.
	* configure.in: Likewise.
	* configure: Regenerate.
	* libF77/Makefile.in, libU77/Makefile.in, libI77/Makefile.in (clean):
	Explictly remove stamp in parent's directory.

1998-09-20  Dave Love  <d.love@dl.ac.uk>

	* libI77/sfe.c (e_wdfe): Set f__init to avoid spurious recursive
	i/o error from formatted direct i/o.

Thu Sep 10 14:57:25 1998  Kamil Iskra  <iskra@student.uci.agh.edu.pl>

	* Makefile.in (install): Add missing "else true;".

1998-09-09  Craig Burley  <burley@gnu.org>

	* configure.in: Test $srcdir, not $subdir (probable typo).
	Clarify commentary, fix a bit of spacing.

1998-09-07  Dave Love  <d.love@dl.ac.uk>

	* ChangeLog.egcs: Deleted.  Entries merged here.

1998-09-07  Dave Love  <d.love@dl.ac.uk>

	* libI77/sfe.c, libI77/dfe.c: Revert last change.

1998-09-06  Dave Love  <d.love@dl.ac.uk>

	From Toon to fix spurious recursive i/o errors:
	* libI77/sfe.c (e_wdfe): Set f__init.

	* libI77/dfe.c (c_dfe): Check and set f__init.
	(s_rdfe, s_wdfe): Don't check and set f__init.

Fri Sep  4 18:40:32 1998  Craig Burley  <burley@gnu.org>

	* libU77/sys_clock_.c (G77_system_clock_0): Fix indentation.

Tue Sep  1 10:06:06 1998  Craig Burley  <burley@gnu.org>

	* libF77/Version.c: Update.
	* libU77/Version.c: Update.
	* libI77/Version.c: Update.

Wed Aug 26 23:19:40 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (FLAGS_TO_PASS): Fix typo.

1998-08-11  Dave Love  <d.love@dl.ac.uk>

	* README: Update from Craig.

1998-07-24  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in (s-libe77, ${srcdir}/configure, g2c.h, Makefile)
	(config.status, rebuilt): Rely on VPATH, dropping explicit use of
	$(srcdir) in various places.

1998-07-19  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in (all): Depend on s-libe77, not e77.
	(.PHONY): Remove e77.

Thu Jul 16 00:58:52 1998  Jeffrey A Law  (law@cygnus.com)

	* libU77/Makefile.in: Missed one config.h.in -> config.hin change.

	* g2c.hin: Renamed from g2c.h.in.
	* Makefile.in, configure.in: Changed as needed.
	* configure: Rebuilt.

	* libU77/config.hin: Renamed from libU77/config.h.in.
	* Makefile.in, configure.in: Changed as needed.
	* configure: Rebuilt.

Tue Jul 14 21:35:30 1998  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* Makefile.in (all): Invoke $(MAKE) instead of just make.

Tue Jul 14 02:16:34 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in: stamp-lib* -> s-lib*.
	* libU77/Makefile.in: Likewise.
	* libF77/Makefile.in: Likewise.
	* libI77/Makefile.in: Likewise.

	* libU77/Makefile.in (ALL_CFLAGS): Add -I$(F2C_H_DIR).

Mon Jul 13 13:31:03 1998  Craig Burley  <burley@gnu.org>

	* libU77/u77-test.f: Double-check ETIME results, just
	like 0.5.24 does.

1998-07-10  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in: Re-write build procedure mainly to honour
	dependencies correctly but also allow making in the build
	directory by configuring the relevant variables.  The lib[FIU]77
	subdirs do dependency checking of their objects.  Stamp files
	dictate when to run (new) archive targets in subdirs.  Some
	tidying of variables.  Supply full set of standard targets.

	* configure.in: Move much of testing to new configures in
	subdirs.  Tidy up handling of RANLIB etc.

	* stamp-h.in, libF77/configure.in, libI77/configure.in:
	* libF77/configure, libI77/configure: New files.

	* libF77/Makefile.in, libI77/Makefile.in, libU77/Makefile.in:
	Change in step with libf2c/Makefile.in.

1998-07-09  Dave Love  <d.love@dl.ac.uk>

	* libU77/Makefile.in (check): Wrap -lg2c ... -lm around $(LIBS) in
	case of static link.

	* libU77/Version.c, libI77/Version.c: Update version info.

	* libU77/sys_clock_.c: Replace TIMES conditional stuff removed in
	error by last change.

1998-07-06  Mike Stump  <mrs@wrs.com>

	* Makefile.in (clean): Don't remove Makefiles, that is done in
	distclean.

1998-07-06  Dave Love  <d.love@dl.ac.uk>

	* libU77/Makefile.in (lib): Change variable lib to LIBS.

1998-07-06  Robert Lipe <robertl@dgii.com>

	* libU77/configure.in: Look for -lsocket, add to LIBS if found.

	* libU77/Makefile.in (lib):  Use LIBS from above.

1998-07-05  Dave Love  <d.love@dl.ac.uk>

	* f2cext.c (system_clock_): Remove (just f90 intrinsic).

	* Makefile.in (F2CEXT): Remove sclock.
	(UOBJ): Add libU77/datetime_.o.

	* libU77/config.h.in: Add HAVE_GETTIMEOFDAY.

	* libU77/configure.in: Check for gettimeofday.

	* libU77/datetime_.c: New file.

	* libU77/sys_clock_.c: Allow optional args.

	* libU77/Makefile.in (G77DIR): Fix for current directory
	structure.
	(SRCS, OBJS): Add datetime.

	* libU77/u77-test.f: Call date_and_time.  Call system_clock
	omitting args.

1998-06-29  Dave Love  <d.love@dl.ac.uk>

	* libI77/wsfe.c (s_wsfe): Fix setting of f__curunit lost in
	previous change.
	* libI77/rsfe.c (s_rsfe): Likewise.

Sat Jun 27 23:04:49 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (FLAGS_TO_PASS, case G2C_H_DIR): Use $(TARGET_SUBDIR)
	instead of hardcoding "libraries".

1998-06-26  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (gcc_version_trigger): Add new macro.
	(config.status): Add dependency upon $(gcc_version_trigger).

	* configure.in (gcc_version_trigger): New variable; initialize
	using value from toplevel configure; add AC_SUBST for it.
	(gcc_version): Change initialization to use this new variable.
	* configure: Regenerate.

1998-06-24  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (version): Rename to gcc_version.
	* configure.in (version): Likewise.
	(gcc_version): Add code to use an option passed from parent configure.
	* configure: Regenerate.

1998-06-23  Dave Love  <d.love@dl.ac.uk>

	* libI77/backspace.c, libI77/dfe.c, libI77/due.c, libI77/iio.c:
	* libI77/lread.c, libI77/sfe.c, libI77/sue.c, libI77/wsfe.c: Update
	to Netlib version of 1998-06-18.

1998-06-21  Dave Love  <d.love@dl.ac.uk>

	* configure.in (version, target_alias): Define.

	* Makefile.in (version, target_alias, libsubdir): Define.
	(install): Remove check for libsubdir.

Sat Jun 13 03:46:40 1998  Craig Burley  <burley@gnu.org>

	* Makefile.in (install): Don't install if $(libsubdir)
	is empty; issue a diagnostic saying top-level Makefile
	must pass it in instead, and exit.

	* Makefile.in (g2c.h): Rename from f2c.h.

	* Makefile.in, libF77/Makefile.in, libI77/Makefile.in:
	* libU77/Makefile.in: Rewrite config and var assignment
	sections to be even more minimal than before, and to
	more clearly documented what macros are expected to be
	set and to what sorts of values.  Eliminate CROSS and
	related stuff, since there's no such things as CROSS
	in egcs.  Rename GCC_FOR_TARGET to CC throughout.
	* Makefile.in (stamp-libi77, stamp-libf77, stamp-libu77):
	Eliminate CROSS.
	* configure.in: Eliminate CROSS.

	Rename libf2c.a and f2c.h to libg2c.a and g2c.h,
	normalize and simplify g77/libg2c build process:
	* Makefile.in: Remove all stuff pertaining to
	installation, cleaning, and so on.  Parent Makefile
	does all that now.  Pass F2C_H_DIR,
	G2C_H_DIR, and GCC_H_DIR, the pathnames for the
	directories containing f2c.h, g2c.h, and other
	#include files, to subdirectory Makefiles.
	(stamp-libf77, stamp-libi77, stamp-libu77):
	Don't specify `-f Makefile' anymore, it's not needed
	now that subdirectory makefile's from netlib are
	renamed to makefile.netlib in g77 source (and to
	makefile.ori by configuration process, in case they're
	still around somehow).
	(stamp-libe77): Don't make libE77 dir unless it doesn't
	exist, if it does just delete all objects in it.
	Compile using $(GCC_FOR_TARGET), not $(CC).
	(rebuilt): Remove this and all subordinate targets,
	as parent Makefile now handles all that.
	(*clean): Remove.
	* configure.in (Pad_UDread, ALWAYS_FLUSH, WANT_LEAD_0):
	Remove these and commentary to new f2c.h file.
	AC_OUTPUT g2c.h instead of f2c.h.  Remove old commentary
	regarding concatenation.
	* g2c.h.in: Rename from f2c.h.in, add appropriate
	commentary.
	* f2c.h: New file, a wrapper for g2c.h that does
	libg2c-specific stuff.
	* libF77/Makefile.in, libI77/Makefile.in, libU77/Makefile.in:
	Change $(ALL_CFLAGS) to use F2C_H_DIR, G2C_H_DIR, and GCC_H_DIR
	macros.  Remove F2C_H macro, replace use with explicit
	dependencies on f2c.h and g2c.h.
	(*clean): Remove.

Mon Apr 27 22:52:31 1998  Richard Henderson  <rth@cygnus.com>

	* libU77/ltime_.c: Bounce the ftnint argument through a local time_t.
	* libU77/gmtime_.c: Likewise.

Sun Apr 26 18:07:56 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in: Adjust include paths in F2C_INTEGER and F2C_LONGINT
	tests to work out of the build directory.

1998-05-20  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in ($(lib)): Use shell loop instead of unportable
	make variable substitution.

Tue May 19 12:50:27 1998  Craig Burley  <burley@gnu.org>

	Break up main() into separate .o's so making and
	linking against shared libraries with non-Fortran
	main() routines is easier:
	* Makefile.in (MISC): Add setarg.o and setsig.o.
	* libF77/Makefile.in (MISC): Ditto.
	* libF77/setarg.c: New file, contains f_setarg().
	* libF77/setsig.c: New file, contains f_setsig().
	* libF77/getarg_.c: Rename xarg* to f__xarg*.
	* libF77/iargc_.c: Ditto

Sat May  2 16:44:46 1998  Craig Burley  <burley@gnu.org>

	* libF77/signal_.c, libI77/dfe.c, libI77/due.c,
	libI77/wsfe.c: Tweaks to eliminate unnecessary
	differences vs. netlib libf2c.

Fri May  1 11:57:45 1998  Craig Burley  <burley@gnu.org>

	Update to Netlib version of 1998-04-20:
	* libF77/dtime_.c, libF77/etime_.c, libF77/h_dnnt.c,
	libF77/h_nint.c, libF77/i_dnnt.c, libF77/i_nint.c,
	libF77/main.c, libF77/s_paus.c, libF77/signal1.h0,
	libI77/backspace.c, libI77/close.c, libI77/dfe.c,
	libI77/endfile.c, libI77/err.c, libI77/fio.h,
	libI77/iio.c, libI77/ilnw.c, libI77/lread.c,
	libI77/lwrite.c, libI77/open.c, libI77/rawio.h,
	libI77/sfe.c, libI77/util.c, libI77/wrtfmt.c,
	libI77/wsfe.c, libI77/wsle.c, libI77/wsne.c:
	See changes.netlib for info.

Sun Apr 26 09:13:41 1998  Craig Burley  <burley@gnu.org>

	* libU77/hostnm_.c (G77_hostnm_0): Fix off-by-one error
	that was trashing the byte just beyond the CHARACTER*(*)
	argument.

Wed Mar  4 16:32:46 1998  Craig Burley  <burley@gnu.org>

	* libU77/u77-test.f: Don't bother declaring etime.
	Use `implicit none' and declare mask and lenstr.
	Do ETIME/DTIME consistency check before loop, then
	use loop to verify that dtime "ticks" at some point.
	Check ETIME array-sum using single-precision add, to
	avoid spurious complaint on systems (like x86) that
	use more precision for intermediate results.
	Fix `Results of ETIME and DTIME...' message to print
	pertinent values (r1 and r2 instead of i and j).
	Change loop from 10M to 1K repeated up to 1000 times
	or until dtime "ticks".
	Print the number of 1K loops needed to see this tick.
	Answer a commented question.
	Split up a long line of output and do other prettying.
	Preset lognam in case GETLOG fails to overwrite it.

Sat Feb 28 15:32:15 1998  Craig Burley  <burley@gnu.org>

	* libI77/open.c (f_open): Use sizeof(buf) instead of
	256, for the usual reasons.

1998-02-17  Dave Love  <d.love@dl.ac.uk>

	* libU77/u77-test.f: Tweak some o/p.

	* libU77/Makefile.in (check): Use -L for new directory structure.

	* Makefile.in (check): Run the u77 check.
	(config.status,	Makefile): New targets.

Wed Feb 11 01:46:20 1998  Manfred Hollstein <manfred@s-direktnet.de>

	* Makefile.in ($(lib)): Call $(AR) repeatedly to avoid overflowing
	argument size limit on ancious System V.

Sun Feb  8 00:32:17 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in: Add `info install-info clean-info check dvi' targets.

Mon Feb  2 11:08:49 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in: Update F2C_INTEGER and F2C_LONGINT tests
	for the new placement in the hierarchy.

Sun Feb  1 02:36:33 1998  Richard Henderson  <rth@cygnus.com>

	* Previous contents of gcc/f/runtime moved into toplevel
	"libf2c" directory.

Sun Feb  1 01:42:47 1998  Mumit Khan <khan@xraylith.wisc.edu>

	* libU77/configure.in (getlogin,getgid,getuid, kill,link,ttyname):
	Check.
	* libU77/config.h.in (HAVE_GETLOGIN, HAVE_GETGID, HAVE_GETUID,
	HAVE_KILL, HAVE_LINK, HAVE_TTYNAME): New defs.
	* libU77/getlog_.c: Conditionalize for target platform. Set errno
	to ENOSYS if target libc doesn't have the function.
	* libU77/getgid_.c: Likewise.
	* libU77/getuid_.c: Likewise.
	* libU77/kill_.c: Likewise.
	* libU77/link_.c: Likewise.
	* libU77/ttynam_.c: Likewise.

Sun Jan 18 20:01:37 1998  Toon Moene  <toon@moene.indiv.nluug.nl>

	* libI77/backspace.c: (f_back): Use type `uiolen' to determine size
	of record length specifier.

Sat Jan 17 22:40:31 1998  Mumit Khan <khan@xraylith.wisc.edu>

	* libU77/configure.in (sys/param.h,sys/times.h): Check.
	(times,alarm): Likewise.
	* libU77/config.h.in (HAVE_SYS_PARAM_H, HAVE_SYS_TIMES_H)
	(HAVE_ALARM, HAVE_TIMES): New defs.
	* libU77/alarm_.c: Conditionalize for target platform. Set errno
	to ENOSYS if target libc doesn't have the function.
	* libU77/dtime_.c: Likewise.
	* libU77/etime_.c: Likewise.
	* libU77/sys_clock_.c: Likewise.

	* configure.in (NON_UNIX_STDIO): Define if MINGW32.
	(NON_ANSI_RW_MODE): Do not define for CYGWIN32 or MINGW32.

	* libI77/rawio.h: Don't providing conflicting declarations for
	read() and write(). MINGW32 header files use "const" quals.

	* libF77/s_paus.c: _WIN32 does not have pause().

Mon Apr 27 22:52:31 1998  Richard Henderson  <rth@cygnus.com>

	* libU77/ltime_.c: Bounce the ftnint argument through a local time_t.
	* libU77/gmtime_.c: Likewise.

Sun Apr 26 18:07:56 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in: Adjust include paths in F2C_INTEGER and F2C_LONGINT
	tests to work out of the build directory.

Tue Dec 23 22:56:01 1997  Craig Burley  <burley@gnu.org>

	* libF77/signal_.c (G77_signal_0): Return type is
	now `void *', to cope with returning previous signal
	handler on 64-bit systems like Alphas.
	* f2cext.c (signal_): Changed accordingly.

Tue Nov 18 09:49:04 1997  Mumit Khan   (khan@xraylith.wisc.edu)

	* libI77/close.c (f_exit): Reset f__init so that f_clos does not
	(incorrectly) think there is an I/O recursion when program is
	interrupted.

Sat Nov  1 18:03:42 1997  Jeffrey A Law  (law@cygnus.com)

	* libF77/signal_.c: Undo last change until we can fix it right.

Wed Oct 29 01:01:04 1997  Mumit Khan  <khan@brahma.xraylith.wisc.edu>

	* configure.in: Set CC to CC_FOR_TARGET when cross-compiling.

Fri Oct 24 11:15:22 1997  Mumit Khan <khan@brahma.xraylith.wisc.edu>

	* libI77/close.c (f_exit): Reset f__init so that f_clos does not
	(incorrectly) think there is an I/O recursion when program is
	interrupted.

Wed Oct 15 10:06:29 1997  Richard Henderson  <rth@cygnus.com>

	* libF77/signal_.c (G77_signal_0): Make return type sig_pf as well.
	* libI77/fio.h: Include <string.h> if STDC_HEADERS.
	* libU77/chmod_.c: Likewise.

Tue Oct  7 18:22:10 1997  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (CGFLAGS): Don't force -g0.
	* libF77/Makefile.in, libI77/Makefile.in, libU77/Makefile.in: Likewise.

Mon Oct  6 14:16:46 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (distclean): Do a better job at cleaning up.

1997-10-03  Dave Love  <d.love@dl.ac.uk>

	* configure.in: Check for tempnam (best because it obeys TMPDIR).
	* libI77/open.c: Use it.
	* libI77/err.c: New message # 132.

Wed Oct  1 01:46:16 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* libU77/sys_clock_.c: File renamed from system_clock_.c.
	* libU77/Makefile.in, Makefile.in : Reference sys_clock_.*, not
	system_clock_.*.
	* libU77/dtime_.c (clk_tck): Try also HZ macro.
	* libU77/access.c (G77_access_0): Check malloc return value against 0,
	not NULL.
	* libU77/getlog_.c, libU77/ttynam_.c, libU77/chdir_.c: Ditto.
	* libU77/chmod_.c, libU77/rename_.c: Ditto.

Tue Sep 30 00:41:39 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	Do a better job of printing the offending FORMAT string
	when producing a diagnostic:
	* libI77/err.c (f__fmtlen): New variable to hold operating
	length of format string.
	(f__fatal): Use new variable to limit length of printed string.
	* libI77/fmt.c (f_s): Don't skip spaces after closing paren,
	so nicer message results (and nested case already skips them).
	(pars_f): Record operating length of format string as indicated
	by a successful call to f_s, or ad-hoc-calculate it if failure,
	limiting the length to 80 characters (and stopping at NUL).
	(do_fio): Use new variable to limit length of printed string.
	* libI77/fmt.h (f__fmtlen): Declare new variable.
	* libI77/lread.c (c_le): Set new variable to known length.

Mon Sep 29 16:30:31 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	Update to Netlib version of 1997-09-23:
	* libF77/dtime_.c (dtime_), libF77/etime_.c (dtime_):
	Return `double' instead of `float' (these are not used
	in g77's version of libf2c).
	* libI77/fmt.c, libI77/fmt.h, libI77/rdfmt.c, libI77/wrtfmt.c:
	Support machines with 64-bit pointers and 32-bit ints (e.g.
	Linux on DEC Alpha).

1997-09-19  Dave Love  <d.love@dl.ac.uk>

	* libU77/dtime_.c (G77_dtime_0): Fix types in HAVE_GETRUSAGE case
	so as not to truncate results to integer values.
	* libU77/Version.c: Bump.

Thu Sep 18 16:58:46 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (stamp-lib): Don't use '$?', explicitly
	list the variables containing the object files to include
	in libf2c.a

Tue Sep  9 00:33:24 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Version 0.5.21 released.

Mon Sep  8 19:39:01 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/close.c (f_exit): Fix thinko, inverted test
	of whether initialization done, so exiting now closes
	open units again.

Fri Sep  5 00:18:17 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (clean): Don't remove config.cache.
	(distclean): Do it here instead.

Tue Aug 26 20:14:08 1997  Robert Lipe  (robertl@dgii.com)

	* hostnm_.c: Include errno.h

Tue Aug 26 01:42:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	From Jim Wilson:
	* configure.in: Make sure RANLIB_TEST is set also.

	From Robert Lipe <robertl@dgii.com>:
	* libU77/getcwd_.c, libU77/hostnm_.c, libU77/lstat_.c:
	Also #include <errno.h>, to define ENOSYS.

Tue Aug 26 01:25:58 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in (stamp-lib): Put all f2cext.c objects in
	a temp directory named libE77, then `ar' them all at
	once into libf2c.a, to get the job done a bit faster.
	Still remove the objects (and libE77 directory) afterward.

Mon Aug 25 23:26:05 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* Makefile.in (mostlyclean, clean): Check if Makefile exists
	before using it. Remove stamp-*.
	(stamp-libi77, stamp-libf77, stamp-libu77): New.
	(stamp-lib): Only depend on stamp-libi77 stamp-libf77
	stamp-libu77

Sun Aug 24 05:04:35 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/rand_.c (G77_rand_0), libU77/dtime_.c (G77_dtime_0),
	libU77/etime_.c (G77_etime_0), libU77/secnds_.c (G77_secnds_0),
	libU77/second_.c (G77_second_0): Really return `double', not
	`doublereal', since the result is cast to `float'.
	* f2cext.c: (rand_, dtime_, etime_, secnds_, second_): Ditto.
	(erf_, erfc_, besj0_, besj1_, besjn_, besy0_, besy1_,
	besyn_, dbesj0_, dbesj1_, dbesjn_, dbesy0_, dbesy1_,
	dbesyn_): All of these return `double', not `doublereal',
	as they either have `float' or `double' results.
	* libU77/bes.c (besj0_, besj1_, besjn_, besy0_, besy1_,
	besyn_): Ditto.
	* libU77/dbes.c (dbesj0_, dbesj1_, dbesjn_, dbesy0_, dbesy1_,
	dbesyn_): Ditto.

	Update to Netlib version of 1997-08-16:
	* libI77/iio.c: Fix bug in internal writes to an array
	of character strings.

	* Makefile.in (UOBJ): Restore fixes made by Dan Pettet I
	lost, which included the addition of mclock_.o already noted
	below, plus adding symlnk_.o.

Thu Aug 21 03:58:34 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in (UOBJ): Add mclock_.o, thanks to Mumit Khan!

1997-08-21  Dave Love  <d.love@dl.ac.uk>

	* libU77/alarm_.c: Fix return type: `integer'.

Mon Aug 11 20:12:42 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in ($(lib), stamp-lib): Ensure that library
	gets fully updated even if updating was aborted earlier.

	* libU77/hostnm_.c (G77_hostnm_0): Return ENOSYS and stuff
	in errno if system has no gethostname() function.

	* libU77/lstat_.c (G77_lstat_0): Return ENOSYS and stuff
	in errno if system has no lstat() function.

	* libU77/getcwd_.c (G77_getcwd_0): Return ENOSYS and stuff
	in errno if system has no getcwd() or getwd() function.
	Test HAVE_GETCWD properly.

	* libU77/symlnk_.c (G77_symlink_0): Return ENOSYS and stuff
	in errno if system has no symlink() function.

	* libU77/mclock_.c (G77_mclock_0): Return -1 if system
	has no clock() function.

Mon Aug 11 01:55:36 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in (F2CEXT): Add `alarm' to this list.

	* f2cext.c (alarm_): Fix some typos in this function.
	Delete third `status' argument.

	* libU77/alarm_.c: Delete third `status' argument,
	as caller gets this from function result; return
	status value as function result for caller.

	* configure.in: Rename `ac_cv_struct_FILE' to
	`g77_cv_struct_FILE' according to 1997-06-26 change.

1997-08-06  Dave Love  <d.love@dl.ac.uk>

	* libU77/vxtidate_.c: Correct day/month argument order.
	* f2cext.c: Likewise.

1997-07-07  Dave Love  <d.love@dl.ac.uk>

	* f2cext.c: Add alarm_.

	* Makefile.in, libU77/Makefile.in: Add alarm_.

	* libU77/alarm_.c: New file.

1997-06-26  Dave Love  <d.love@dl.ac.uk>

	* configure.in: Generally use prefix `g77_' for cached values
	we've invented, not `ac_'.

Tue Jun 24 18:50:06 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/ilnw.c (s_wsni): Call f_init() here.
	(s_wsli): Ditto.
	(e_wsli): Turn off "doing I/O" flag here.

1997-06-20  Dave Love  <d.love@dl.ac.uk>

	* runtime/configure.in: Check for cygwin32 after Mumit Khan (but
	differently); if cygwin32 define NON_UNIX_STDIO and don't define
	NON_ANSI_RW_MODES.

Tue Jun 01 06:26:29 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/rsne.c (nl_init): Don't call f_init() here,
	since s_rsne() already does.
	(c_lir): Call f_init() here instead.
	* libI77/rsli.c (e_rsli): Turn off "doing I/O" flag here.
	* libI77/sue.c (e_rsue): Ditto.

Sun Jun 22 23:27:22 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/fio.h (err): Mark I/O as no longer in progress
	before returning a non-zero error indicator (since
	that tells the caller to jump over the remaining I/O
	calls, including the corresponding `e_whatever' call).
	* libI77/err.c (endif): Ditto.
	* libI77/sfe.c (e_wsfe): Ditto.
	* libI77/lread.c (ERR): Ditto.
	* libI77/lread.c (l_read): Ditto by having quad case
	use ERR, not return, to return non-zero error code.

Sat Jun 21 12:31:28 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/open.c (fk_open): Temporarily turn off
	"doing I/O" flag during f_open() call to avoid recursive
	I/O error.

Tue Jun 17 22:40:47 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* err.c, close.c, rewind.c, inquire.c, backspace.c, endfile.c,
	iio.c, open.c, Version.c, sfe.c, wsle.c, rsne.c, sue.c, rsfe.c,
	lread.c, wsfe.c, fio.h, due.c, dfe.c: Change f__init from
	`flag' to `int' and to signal not just whether initialization
	has happened (bit 0), but also whether I/O is in progress
	already (bit 1).  Consistently produce a clear diagnostic
	in cases of recursive I/O.  Avoid infinite recursion in
	f__fatal, in case sig_die triggers another error.  Don't
	output info on internals if not initialized in f__fatal.  Don't
	bother closing units in f_exit if initialization hasn't
	happened.

Tue Jun 10 12:57:44 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	Update to Netlib version of 1997-06-09:
	* libI77/err.c, libI77/lread.c, libI77/rdfmt.c,
	libI77/wref.c: Move some #include's around.

Mon Jun  9 18:11:56 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/kill_.c (kill_): KR_headers version needed
	`*' in front of args in decls.

Sun May 25 03:16:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	Update to Netlib version of 1997-05-24:
	* libF77/README, libF77/Version.c, libF77/main.c,
	libF77/makefile, libF77/s_paus.c, libF77/signal1.h,
	libF77/signal_.c, libF77/z_div.c, libI77/Notice,
	libI77/README, libI77/Version.c, libI77/dfe.c,
	libI77/err.c, libI77/fmt.c, libI77/makefile,
	libI77/rawio.h: Apply many, but not all, of the changes
	made to libf2c since last update.
	* libF77/Makefile.in (MISC), Makefile.in (MISC): Rename
	exit.o to exit_.o to go along with Netlib.
	* libF77/signal.c: Make the prologue much simpler than
	Netlib has it.

Sun May 18 20:56:02 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/unlink_.c, libU77/stat_.c, libU77/symlnk_.c,
	libU77/chmod_.c: g_char first arg is const.

	* libU77/chmod_.c: s_cat expects ftnlen[], not int[] or
	integer[], change types of array and variables
	accordingly.

May 7 1997  Daniel Pettet  <dan.pettet@bchydro.bc.ca>

	* libU77/dbes_.c: Commented out the code in the
	same way the bes* routines are commented out.  This
	was done because corresponding C routines are referenced
	directly in com-rt.def.

Mon May  5 13:56:02 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/stat_.c: Reverse KR/ANSI decls of g_char().

Apr 18 1997  Daniel Pettet  <dan.pettet@bchydro.bc.ca>

	* libF77/F77_aloc.c, libF77/abort_.c, libF77/derf_.c,
	libF77/derfc_.c, libF77/ef1asc_.c, libF77/ef1cmc_.c,
	libF77/erf_.c, libF77/erfc_.c, libF77/exit.c,
	libF77/getarg_.c, libF77/getenv_.c, libF77/iargc_.c,
	libF77/s_cat.c, libF77/signal_.c, libF77/system_.c,
	libI77/close.c, libI77/ftell_.c, libU77/access_.c,
	libU77/bes.c, libU77/chdir_.c, libU77/chmod_.c, libU77/ctime_.c,
	libU77/date_.c, libU77/dbes.c, libU77/dtime_.c, libU77/etime_.c,
	libU77/fdate_.c, libU77/fgetc_.c, libU77/flush1_.c,
	libU77/fnum_.c, libU77/fputc_.c, libU77/fstat_.c,
	libU77/gerror_.c, libU77/getcwd_.c, libU77/getgid_.c,
	libU77/getlog_.c, libU77/getpid_.c, libU77/getuid_.c,
	libU77/gmtime_.c, libU77/hostnm_.c, libU77/idate_.c,
	libU77/ierrno_.c, libU77/irand_.c, libU77/isatty_.c,
	libU77/itime_.c, libU77/kill_.c, libU77/link_.c,
	libU77/lnblnk_.c, libU77/ltime_.c, libU77/mclock_.c,
	libU77/perror_.c, libU77/rand_.c, libU77/rename_.c,
	libU77/secnds_.c, libU77/second_.c, libU77/sleep_.c,
	libU77/srand_.c, libU77/stat_.c, libU77/symlnk_.c,
	libU77/system_clock_.c, libU77/time_.c, libU77/ttynam_.c,
	libU77/umask_.c, libU77/unlink_.c, libU77/vxtidate_.c,
	libU77/vxttime_.c: Completed renaming routines that are directly
	callable from g77 to internal names of the form
	G77_xxxx_0 that are known as intrinsics by g77.

Apr 8 1997  Daniel Pettet  <dan.pettet@bchydro.bc.ca>

	* Makefile.in: Add libU77/mclock_.o and libU77/symlnk_.o to UOBJ.
	* libU77/Makefile.in: Add mclock_.c to SRCS.
	Add mclock_.o and symlnk_.o to OBJS.
	Add mclock_.o dependency.

Apr 8 1997  Daniel Pettet  <dan.pettet@bchydro.bc.ca>

	* libU77/symlnk_.c: Added a couple of (char*) casts to malloc
	to silence the compiler.

1997-03-17  Dave Love  <d.love@dl.ac.uk>

	* libU77/access_.c, libU77/chdir_.c, libU77/chmod_.c,
	libU77/link_.c, libU77/lstat_.c, libU77/rename_.c, libU77/stat_.c,
	libU77/symlnk_.c, libU77/u77-test.f, libU77/unlink_.c: Strip
	trailing blanks from file names for consistency with other
	implementations (notably Sun's).

	* libU77/chmod_.c: Quote the file name given to the shell.

Mon Mar 10 00:19:17 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/uio.c (do_ud) [PAD_UDread]: Add semicolon to err()
	invocation when macro not defined (from Mumit Khan
	<khan@xraylith.wisc.edu>).

Fri Feb 28 13:16:50 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Version 0.5.20 released.

Wed Feb 26 20:28:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in: $(MAKE) invocations now explicitly
	specify `-f Makefile', just in case the `makefile's
	from the netlib distribution would get used instead.

Mon Feb 24 16:43:39 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/Makefile.in (check): Specify driver, and
	don't bother enabling already-enabled intrinsic groups.
	Also, get the $(srcdir) version of u77-test.f.

Sat Feb 22 14:08:42 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/u77-test.f: Explicitly declare intrinsics, get
	rid of useless CHARACTER declarations on intrinsics (maybe
	someday appropriate to implement meaning of that in g77
	and restore them?).
	Add spin loop just to fatten up the timings a bit.
	Clarify ETIME output as having three fields.
	Call TIME with CHARACTER*8, not CHARACTER*6, argument.
	Call new SECOND intrinsic subroutine, after calling
	new DUMDUM subroutine just to ensure the correct value
	doesn't get left around in a register or something.

Thu Feb 20 15:22:42 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/bes.c: Comment out all the code, as g77 avoids actually
	calling it, going directly to the system's library instead.

Mon Feb 17 02:27:41 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libU77/fgetc_.c (fgetc_): Allow return value to be
	CHARACTER*(*), properly handle CHARACTER*0 and blank-pad
	CHARACTER*n where n>1.

Tue Feb 11 14:12:19 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in: Clarify role of $(srcdir) here.  Fix
	various targets accordingly.  Don't rely at all on
	gcc/f/include/ being a link to gcc/include/ -- just
	use it directly.
	(${srcdir}/configure, ${srcdir}/libU77/configure):
	Remove the config.cache files in build directory before
	cd'ing to source directory as well.

	* libF77/Makefile.in, libI77/Makefile.in (ALL_CFLAGS):
	Include `-I.' to pick up build directory.
	Use gcc/include/ directly.
	* libU77/Makefile.in (ALL_CFLAGS): Include `-I$(srcdir)'
	to pick up source directory.
	(OBJS): Fix typo in `chmod_.o' (was `chmod.o').

Mon Feb 10 12:54:47 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in (UOBJ), libU77/Makefile.in (OBJS): Add
	libU77/chmod_.o to list of objects.
	* libU77/chmod_.c: Fix up headers.
	Fix implementation to not prematurely truncate command
	string and make room for trailing null.

	* libU77/ctime_.c: Incoming xstime argument is now longint.
	* libU77/mclock_.c: Now returns longint.
	* libU77/time_.c: Now returns longint.

1997-02-10  Dave Love  <d.love@dl.ac.uk>

	* etime_.c, dtime_.c: Typo rounded times to seconds.

	* date_.c: Add missing return.

	* hostnm_.c: #include unistd.h.

Sat Feb  8 03:30:19 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	INTEGER*8 support built in to f2c.h and libf2c (since
	gcc will be used to compile relevant code anyway):
	* Makefile.in, libF77/Makefile.in: Add pow_qq.o,
	qbitbits.o, and qbitshft.o to $POW and $F90BIT macros,
	as appropriate.
	* f2c.h.in: Define appropriate types and macros.
	Place #error directive correctly.
	* configure.in: Determine appropriate types for long
	integer (F2C_LONGINT).
	Meanwhile, quote strings in #error, for consistency.
	Fix restoring of ac_cpp macro.
	* configure: Regenerated using autoconf-2.12.

	* libF77/Version.c, libI77/Version.c, libU77/Version.c:
	Update version numbers.
	Change names and code for g77-specific version-printing
	routines (shorter names should be safer to link on
	weird, 8-char systems).

	* libF77/c_cos.c, libF77/c_div.c, libF77/c_exp.c,
	libF77/c_log.c, libF77/c_sin.c, libF77/c_sqrt.c,
	libF77/d_cnjg.c, libF77/pow_zi.c, libF77/r_cnjg.c,
	libF77/z_cos.c, libF77/z_div.c, libF77/z_exp.c,
	libF77/z_log.c, libF77/z_sin.c, libF77/z_sqrt.c:
	Changed to work properly even when result is aliased
	with any inputs.

	* libF77/makefile, libI77/makefile: Leave these in
	the g77 distribution, so it is easier to track changes
	to official libf2c.

	* libF77/signal_.c: Eliminate redundant `return 0;'.

	* libI77/fio.h (err, errfl): Fix these so they work
	(and must be expressed) as statements.
	Fix up many users of err() to include trailing semicolon.

	* Incorporate changes by Bell Labs to libf2c through 1997-02-07.

1997-02-06  Dave Love  <d.love@dl.ac.uk>

	* libU77/etime_.c, libU77/dtime_.c: Fix getrusage stuff.

	* libU77/config.h.in: Regenerate for HAVE_GETRUSAGE.

	* libU77/Makefile.in, libI77/Makefile.in, libF77/Makefile.in:
	Redo *clean targets; distclean and maintainer-clean remove the stage?
	and include links.  This probably want looking at further.

Wed Feb  5 00:21:23 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	Add libU77 library from Dave Love <d.love@dl.ac.uk>:
	* Makefile.in: Add libU77 directory, rules, etc.
	* configure.in: New libU77 directory, Makefile, etc.

	* Makefile.in, libF77/Makefile.in, libI77/Makefile.in,
	libU77/Makefile.in: Reorganize these so $(AR) commands
	handled by the top-level Makefile instead of the
	subordinates.  This permits it to do $(AR) only when
	one or more object files actually change, instead of
	having to force-update it as was necessary before.
	And that had the disadvantage of requiring, e.g., user
	root to have access to $(AR) to the library simply to
	install g77, which might be problematic on an NFS setup.
	(mostlyclean, clean, distclean, maintainer-clean):
	Properly handle these rules.

	* Makefile.in: Don't invoke config.status here -- let
	compiler-level stuff handle all that.

	* libI77/err.c [MISSING_FILE_ELEMS]: Declare malloc in this case
	too, so it doesn't end up as an integer.

Sat Feb  1 02:43:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* libF77/Makefile.in: More fixup for $(F90BIT) -- wasn't
	in list for ar command, and it wasn't correctly listed
	in the list of things depending on f2c.h.

	* f2c.h.in: Fix up #error directive.

1997-01-31  Dave Love  <d.love@dl.ac.uk>

	* libF77/Makefile.in ($(lib)): Add $(F90BIT); shouldn't exclude
	stuff f2c needs so we can share the library.

Sat Jan 18 19:39:03 1997  Craig Burley  <burley@gnu.ai.mit.edu>

	* configure.in: No longer define ALWAYS_FLUSH, the
	resulting performance is too low.

Wed Dec 18 12:06:02 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	Patch from Mumit Khan <khan@xraylith.wisc.edu>:
	* libF77/s_paus.c: Add __CYGWIN32__ to list of macros
	controlling how to pause.

Sun Dec  1 21:25:27 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	* configure: Regenerated using autoconf-2.12.

Mon Nov 25 21:16:15 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	* configure: Regenerated using autoconf-2.11.

1996-11-19  Dave Love  <d.love@dl.ac.uk>

	* libI77/backspace.c: Include sys/types.h for size_t.

Wed Nov  6 14:17:27 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	* f2c.h.in: Properly comment out the unsupported stuff so
	we don't get build-time errors.

	* libF77/Version.c, libI77/Version.c: Restore macro definition
	of version information.

	* libI77/Makefile.in (OBJ) [foo]: Add ftell_.o to list of objects.

	* libI77/uio.c (do_ud): Fix up casts in PAD_UDread case just
	like they were fixed in the other case.

Thu Oct 31 22:27:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/ftell_.c (fseek_): Map incoming whence argument to
	system's actual SEEK_CUR, SEEK_SET, or SEEK_END macro for
	fseek(), and crash (gracefully) if the argument is invalid.

1996-10-19  Dave Love  <d.love@dl.ac.uk>

	* configure.in: Add check that we have the tools to cross-compile
	if appropriate.
	(NO_EOF_CHAR_CHECK,Skip_f2c_Undefs): Define.

	* libF77/Makefile.in (F90BIT): New routines from Netlib.

	* f2c.h.in:
	Use more sanitary #error (indented for K&R compliance if necessary) if
	f2c_i2 defined.
	Sync with Netlib: Add `uninteger'.  (Commented out) integer*8 stuff.
	bit_{test,clear,set} macros.

1996-10-19  Dave Love  <d.love@dl.ac.uk>

	Update to Netlib version of 1996-09-26.

	* libI77/Version.c: Use <stdio.h>, not "stdio.h".
	* libF77/Version.c: Likewise.

Wed Aug 28 13:25:29 1996  Dave Love  <d.love@dl.ac.uk>

	* libI77/rsne.c (x_rsne): Use size_t instead of int.

	* libI77/endfile.c (copy): Use size_t in place of int.

Wed Aug 28 13:22:20 1996  Dave Love  <d.love@dl.ac.uk>

	* libI77/backspace.c (f_back): Cast fread arg to size_t.

Tue Aug 27 19:11:30 1996  Dave Love  <d.love@dl.ac.uk>

	* libI77/Version.c: Supply */ to avoid apparent nested comment.

Tue Aug 20 09:21:43 1996  Dave Love  <d.love@dl.ac.uk>

	* libF77/Makefile.in (ALL_CFLAGS): Fix missing ../ for include.
	* libI77/Makefile.in (ALL_CFLAGS): Likewise.

Sat Aug 17 13:00:47 1996  Dave Love  <d.love@dl.ac.uk>

	* libF77/qbitshft.c, libF77/qbitbits.c, libF77/lbitshft.c,
	libF77/lbitbits.c: New file from Netlib.  qbit... not currently
	compiled.

Sun Jul  7 18:06:33 1996  Dave Love  <d.love@dl.ac.uk>

	* libF77/z_sqrt.c, libF77/z_sin.c, libF77/z_exp.c, libF77/z_log.c,
	libF77/system_.c, libF77/z_cos.c, libF77/signal_.c,
	libF77/s_stop.c, libF77/sig_die.c, libF77/s_paus.c,
	libF77/s_rnge.c, libF77/s_cat.c, libF77/r_tan.c, libF77/r_tanh.c,
	libF77/r_sinh.c, libF77/r_sqrt.c, libF77/r_sin.c, libF77/r_mod.c,
	libF77/r_nint.c, libF77/r_lg10.c, libF77/r_log.c, libF77/r_exp.c,
	libF77/r_int.c, libF77/r_cosh.c, libF77/r_atn2.c, libF77/r_cos.c,
	libF77/r_asin.c, libF77/r_atan.c, libF77/r_acos.c,
	libF77/pow_dd.c, libF77/pow_zz.c, libF77/main.c, libF77/i_dnnt.c,
	libF77/i_nint.c, libF77/h_dnnt.c, libF77/h_nint.c, libF77/exit.c,
	libF77/d_tan.c, libF77/d_tanh.c, libF77/d_sqrt.c, libF77/d_sin.c,
	libF77/d_sinh.c, libF77/d_mod.c, libF77/d_nint.c, libF77/d_log.c,
	libF77/d_int.c, libF77/d_lg10.c, libF77/d_cosh.c, libF77/d_exp.c,
	libF77/d_atn2.c, libF77/d_cos.c, libF77/d_atan.c, libF77/d_acos.c,
	libF77/d_asin.c, libF77/c_sqrt.c, libF77/cabs.c, libF77/c_sin.c,
	libF77/c_exp.c, libF77/c_log.c, libF77/c_cos.c, libF77/F77_aloc.c,
	libF77/abort_.c, libI77/xwsne.c, libI77/wref.c, libI77/util.c,
	libI77/uio.c, libI77/rsne.c, libI77/rdfmt.c, libI77/rawio.h,
	libI77/open.c, libI77/lread.c, libI77/inquire.c, libI77/fio.h,
	libI77/err.c, libI77/endfile.c, libI77/close.c:
	Use #include <...>, not #include "..." for mkdeps

Sat Jul  6 21:39:21 1996  Dave Love  <d.love@dl.ac.uk>

	* libI77/ftell_.c: Added from Netlib distribution.

Sat Mar 30 20:57:24 1996  Dave Love  <d.love@dl.ac.uk>

	* configure.in: Eliminate explicit use of
	{RANLIB,AR}_FOR_TARGET.
	* Makefile.in: Likewise.
	* libF77/Makefile.in: Likewise.
	* libI77/Makefile.in: Likewise.
	* configure: Regenerated.

Sat Mar 30 21:02:03 1996  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in: Eliminate explicit use of
	{RANLIB,AR}_FOR_TARGET.

Tue Mar 26 23:39:59 1996  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in: Remove hardwired RANLIB and RANLIB_TEST (unnoted
	change).

Mon Mar 25 21:04:56 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	* Incorporate changes by Bell Labs to libf2c through 1996-03-23,
	including changes to dmg and netlib email addresses.

Tue Mar 19 13:10:02 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	* Incorporate changes by AT&T/Bellcore to libf2c through 1996-03-19.

	* Makefile.in (rebuilt): New target.

	* libF77/Makefile.in, libI77/Makefile.in: Use $AR_FOR_TARGET, not
	$AR.

Tue Mar 19 12:53:19 1996  Dave Love  <d.love@dl.ac.uk>

	* configure.in (ac_cpp): #include <stdio.h> instead
	of <features.h>.

Tue Mar 19 12:52:09 1996  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (ac_cpp): For f2c integer type,
	add -I$srcdir/../.. to make it work on mips-ultrix4.2.

Sat Mar  9 17:37:15 1996  Craig Burley  <burley@gnu.ai.mit.edu>

	* libI77/Makefile.in (.c.o): Add -DAllow_TYQUAD, to enable
	I/O support for INTEGER*8.
	* f2c.h.in: Turn on longint type.

Fri Dec 29 18:22:01 1995  Craig Burley  <burley@gnu.ai.mit.edu>

	* Makefile.in: Reorganize the *clean rules to more closely
	parallel gcc's.

	* libF77/Makefile.in, libI77/Makefile.in: Ignore error from $(AR)
	command, in case just doing an install and installer has no write
	access to library (this is a kludge fix -- perhaps install targets
	should never try updating anything?).

Sat Nov 18 19:37:22 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Version 0.5.17 released.

Thu Nov 16 07:20:35 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Incorporate changes by AT&T/Bellcore to libf2c through 1995-11-15.

Fri Sep 22 02:19:59 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libI77/backspace.c, libI77/close.c, libI77/endfile.c,
	libI77/fio.h, libI77/inquire.c, libI77/rawio.h,
	libF77/s_paus.c: Not an MSDOS system if GO32
	is defined, in the sense that the run-time environment
	is thus more UNIX-like.

Wed Sep 20 02:24:51 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libF77/Makefile.in, libI77/Makefile.in: Comment out `ld -r -x'
	and `mv' line pairs, since `-x' isn't supported on systems
	such as Solaris, and these lines don't seem to do anything
	useful after all.

Wed Aug 30 15:58:35 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Version 0.5.16 released.

	* Incorporate changes by AT&T/Bellcore to libf2c through 950829.

Mon Aug 28 12:50:34 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libF77/Makefile.in, libI77/Makefile.in ($(lib)): Force ar'ing
	and ranlib'ing of libf2c.a, else after rm'ing libf2c.a and
	doing a make, only libI77 or libF77 would be added to
	the newly created archive.
	Also, instead of `$?' list all targets explicitly so all
	objects are updated in libf2c.a even if only one actually
	needs recompiling, for similar reason -- we can't easily tell
	if a given object is really up-to-date in libf2c.a, or even
	present there.

Sun Aug 27 14:54:24 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libF77/Makefile.in, libI77/Makefile.in: Fix spacing so
	initial tabs are present in all appropriate places.
	Move identical $(AR) commands in if then/else clauses
	to single command preceding if.
	(.c.o, Version[FI].o): Use $@ instead of $* because AIX (RS/6000)
	says $@ means source, not object, basename, and $@ seems to work
	everywhere.

Wed Aug 23 15:44:25 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libF77/system_.c (system_): Declare as returning `ftnint',
	consistent with signal_, instead of defaulting to `int'.
	Hope dmg@research.att.com agrees, else probably will
	change to whatever he determines is correct (and change
	g77 accordingly).

Thu Aug 17 08:46:17 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libI77/rsne.c (s_rsne): Call f_init if not already done.

Thu Aug 17 04:35:28 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Incorporate changes by Bellcore to libf2c through 950817.
	And this text is for EMACS: (foo at bar).

Wed Aug 16 17:33:06 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libF77/Makefile.in, libI77/Makefile.in (CFLAGS): Put -g1
	after configured CFLAGS but before GCC_CFLAGS, so by default
	the libraries are built with minimal debugging information.

Fri Jul 28 10:30:15 1995  Dave Love  <d.love@dl.ac.uk>

	* libI77/open.c (f_open): Call f_init if not already done.

Sat Jul  1 19:31:56 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* libF77/system_.c (system_): Make buff one byte bigger so
	following byte doesn't get overwritten by call with large
	string.

Tue Jun 27 23:28:16 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Incorporate changes by Bellcore to libf2c through 950613.

	* libF77/Version.c (__G77_LIBF77_VERSION__): Add this string
	to track g77 mods to libf2c.

	* libI77/Version.c (__G77_LIBI77_VERSION__): Add this string
	to track g77 mods to libf2c.

	* libI77/rawio.h: #include <rawio.h> only conditionally,
	using macro intended for that purpose.

Fri May 19 11:20:00 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* configure.in: Incorporate change made by d.love,

	* configure: Regenerated.

Wed Apr 26 21:08:57 BST 1995  Dave Love  <d.love@dl.ac.uk>

	* configure.in: Fix quoting problem in atexit check.

	* configure: Regenerated (with current autoconf).

Wed Mar 15 12:49:58 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Incorporate changes by Bellcore to libf2c through 950315.

Sun Mar  5 18:54:29 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* README: Tell people not to read lib[fi]77/README.

Wed Feb 15 14:30:58 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* configure.in: Update copyright notice at top of file.

	* f2c.h.in (f2c_i2): Make sure defining this crashes compilations.

	* libI77/Makefile.in (F2C_H): Fix typo in definition of this
	symbol (was FF2C_H=...).

Sun Feb 12 13:39:36 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* README: Remove some obsolete items.
	Add date.

	* TODO: Add date.

Sat Feb 11 22:07:54 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Makefile.in (libf77, libi77): Add rules to .PHONY list.

	* f2c.h.in (flag): Make same type as friends.

	* libF77/Makefile.in (libf77): Rename to $(lib), remove from
	.PHONY list.  Fix some typos.

	* libI77/Makefile.in (libi77): Rename to $(lib), remove from
	.PHONY list.  Fix some typos.

Thu Feb  2 12:22:41 1995  Craig Burley  (burley@gnu.ai.mit.edu)

	* Makefile.in (libF77/Makefile): Fix typos in this rule's name
	and dependencies.

	* libF77/Makefile.in (libf77): Add rule to .PHONY list.

	* libI77/Makefile.in (libi77): Add rule to .PHONY list.

Local Variables:
add-log-time-format: current-time-string
End:
