static char junk[] = "\n@(#) LIBI77 VERSION pjw,dmg-mods 19990503\n";
*/
char __G77_LIBI77_VERSION__[] = "0.5.25 20010315 (release)";
2.01 $ format added
2.02 Coding bug in open.c repaired
2.03 fixed bugs in lread.c (read * with negative f-format) and lio.c
and lio.h (e-format conforming to spec)
2.04 changed open.c and err.c (fopen and freopen respectively) to
update to new c-library (append mode)
2.05 added namelist capability
2.06 allow internal list and namelist I/O
*/
close.c:
allow upper-case STATUS= values
endfile.c
create fort.nnn if unit nnn not open;
else if (file length == 0) use creat() rather than copy;
use local copy() rather than forking /bin/cp;
rewind, fseek to clear buffer (for no reading past EOF)
err.c
use neither setbuf nor setvbuf; make stderr buffered
fio.h
#define _bufend
inquire.c
upper case responses;
omit byfile test from SEQUENTIAL=
answer "YES" to DIRECT= for unopened file (open to debate)
lio.c
flush stderr, stdout at end of each stmt
space before character strings in list output only at line start
lio.h
adjust LEW, LED consistent with old libI77
lread.c
use atof()
allow "nnn*," when reading complex constants
open.c
try opening for writing when open for read fails, with
special uwrt value (2) delaying creat() to first write;
set curunit so error messages don't drop core;
no file name ==> fort.nnn except for STATUS='SCRATCH'
rdfmt.c
use atof(); trust EOF == end-of-file (so don't read past
end-of-file after endfile stmt)
sfe.c
flush stderr, stdout at end of each stmt
wrtfmt.c:
use upper case
put wrt_E and wrt_F into wref.c, use sprintf()
rather than ecvt() and fcvt() [more accurate on VAX]
*/
space as blank */
of logical values reject letters other than fFtT;
have nowwriting reset cf */
blank='z...' when reopening an open file */
omit exponent field in list output of values of
magnitude between 10 and 1e8; prevent writing stdin
and reading stdout or stderr; don't close stdin, stdout,
or stderr when reopening units 5, 6, 0. */
iff uinode and udev values agree; use stat rather than
access to check existence of file (when STATUS='OLD')*/
don't clobber the file. */
adjust g_char in util.c for segmented memories. */
sig_die(...,1) (defined in main.c). */
file already exists; allow file= to be omitted in open stmts
and allow status='replace' (Fortran 90 extensions). */
strings in read-only memory. */
records from int to long (for systems where sizeof(int)
can vary, depending on the compiler or compiler options). */
sizeof(uioint) in fseeks in sue.c (missed on 17 Oct.). */
adjust an error return from EOF to off end of record */
the last character of each record to be ignored.
iio.c: adjust error message in internal formatted
input from "end-of-file" to "off end of record" if
the format specifies more characters than the
record contains. */
treat "r* ," and "r*," alike (where r is a
positive integer constant), and fix a bug in
handling null values following items with repeat
counts (e.g., 2*1,,3); for namelist reading
of a numeric array, allow a new name-value subsequence
to terminate the current one (as though the current
one ended with the right number of null values).
lio.h, lwrite.c: omit insignificant zeros in
list and namelist output. To get the old
behavior, compile with -DOld_list_output . */
printing .1 rather than 0.1 (introduced yesterday). */
character following a comma to be ignored. */
work with internal list and formatted I/O. */
an & (e.g. &end). */
recognize Z format (assuming 8-bit bytes). */
(so end-of-file on other files won't confuse namelist
reads of external files). Prepend f__ to external
names that are only of internal interest to lib[FI]77. */
buffer == '\n'.
endfile.c: guard against tiny L_tmpnam; close and reopen
files in t_runc().
lio.h: lengthen LINTW (buffer size in lwrite.c).
err.c, open.c: more prepending of f__ (to [rw]_mode). */
sought; namelists of the wrong name are skipped (after
an error message; xwsne.c: namelist writes have a
newline before each new variable.
open.c: ACCESS='APPEND' positions sequential files
at EOF (nonstandard extension -- that doesn't require
changing data structures). */
err.c: under NON_UNIX_STDIO, avoid close(creat(name,0666))
when the unit has another file descriptor for name. */
open.c: always give f__w_mode[] 4 elements for use
in t_runc (in endfile.c -- for change of 1 Feb. 1993). */
unformatted reads to respond to err= rather than end=. */
the current input line when err=label is specified.
To restore the old behavior (input left mid-line),
either adjust the #definition of errfl in fio.h or
omit the invocation of f__doend in err__fl (in err.c). */
logical data (during list or namelist input).
Change struct f__syl to struct syl (for buggy compilers). */
logical arrays. */
array of numeric data followed by another namelist
item whose name starts with 'd', 'D', 'e', or 'E'. */
#ifndef NON_UNIX_STDIO; Version date not changed. */
short records as though padded with blanks
(rather than causing an "off end of record" error). */
formatted files (avoiding any confusion regarding \n). */
under NON_UNIX_STDIO. */
optimization that requires exponents to have 2 digits
when 2 digits suffice.
lwrite.c wsfe.c (list and formatted external output):
omit ' ' carriage-control when compiled with
-DOMIT_BLANK_CC . Off-by-one bug fixed in character
count for list output of character strings.
Omit '.' in list-directed printing of Nan, Infinity. */
than " .0000E+00". */
oversize item to an empty line. */
ERR= (in list- or format-directed input) from working
after a NAMELIST READ. */
INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8
in NAMELISTs. */
GOOD_SPRINTF_EXPONENT is not #defined. */
internal reading of characters with high-bit set
(on machines that sign-extend characters). */
check for end-of-file (to prevent infinite loops
with empty read statements). */
in internal writes whose last item is written to
an earlier position than some previous item. */
whose subscripts do not involve colons similarly
to the name without a subscript: accept several
values, stored in successive elements starting at
the indicated subscript. Adjust namelist output
to quote character strings (avoiding confusion with
arrays of character strings). Adjust f_init calls
for people who don't use libF77's main(); now open and
namelist read statements invoke f_init if needed. */
Add -DNo_Namelist_Comments lines to rsne.c. */
always zeroed in mv_cur). */
to err.c */
too few items in the input string will honor end= . */
make ic signed on ANSI systems. If formatted writes of
integer*1 values trouble you when using a K&R C compiler,
switch to an ANSI compiler or use a compiler flag that
makes characters signed. */
in direct read and write statements.
ftell_.c: change param "unit" to "Unit" for -DKR_headers. */
SEEK_SET, SEEK_CUR, SEEK_END for *whence = 0, 1, 2. */
(but still treat missing ".nnn" as ".0"). */
than fully buffered. (Buffering is needed for format
items T and TR.) */
treated as 2 on some systems). */
draft (in 1990 or 1991) that rescinded permission to elide
quote marks in namelist input of character data; compile
with -DF8X_NML_ELIDE_QUOTES to get the old behavior.
wrtfmt.o: wrt_G: tweak to print the right number of 0's
for zero under G format. */
strings that sometimes caused one more array element than
required by the format to be blank-filled. Example:
format(1x). */
with 64-bit pointers and 32-bit ints that did not 64-bit
align struct syl (e.g., Linux on the DEC Alpha). */
sizeof(uiolen). On machines where this would make a
difference, it is best for portability to compile libI77 with
-DUIOLEN_int (which will render the change invisible). */
-DNON_UNIX_STDIO */
unless compiled with -DNON_ANSI_STDIO, which uses mktemp().
New buffering scheme independent of NON_UNIX_STDIO for
handling T format items. Now -DNON_UNIX_STDIO is no
longer be necessary for Linux, and libf2c no longer
causes stderr to be buffered -- the former setbuf or
setvbuf call for stderr was to make T format items work.
open.c: use the Posix access() function to check existence
or nonexistence of files, except under -DNON_POSIX_STDIO,
where trial fopen calls are used. */
changes of 17 March 1998. */
set f__curunit sooner so various error messages will
correctly identify the I/O unit involved. */
ALLOW_FLOAT_IN_INTEGER_LIST_INPUT #defined, treat
floating-point numbers (containing either a decimal point
or an exponent field) as errors when they appear as list
input for integer data. */
Why did it ever move to sfe.c? */
right in the error message if we cannot open the file).
err.c: cast a pointer difference to (int) for %d.
rdfmt.c: omit fixed-length buffer that could be overwritten
by formats Inn or Lnn with nn > 83. */
#include <stdio.h>
void
g77__ivers__ ()
{
fprintf (stderr, "__G77_LIBI77_VERSION__: %s", __G77_LIBI77_VERSION__);
fputs (junk, stderr);
}