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

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

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

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

Fri Oct  2 01:27:50 1998  Kamil Iskra  <iskra@student.uci.agh.edu.pl>

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

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.

Sat Sep  5 23:06:56 1998  Craig Burley  <burley@gnu.org>

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

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:20:12 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.

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  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.

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.

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.

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.

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.

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>

	* libI77/fio.h: Include <string.h> if STDC_HEADERS.
	* libU77/chmod_.c: Likewise.

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.

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.

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.

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.

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): 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.

	* lib[FI]77/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.

	* lib[FI]77/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.
