| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 | 
							-  char
 
- _libi77_version_f2c[] = "\n@(#) LIBI77 VERSION (f2c) pjw,dmg-mods 20030321\n";
 
- /*
 
- 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]
 
- */
 
- /* 16 Oct. 1988: uwrt = 3 after write, rewind, so close won't zap the file. */
 
- /* 10 July 1989: change _bufend to buf_end in fio.h, wsfe.c, wrtfmt.c */
 
- /* 28 Nov. 1989: corrections for IEEE and Cray arithmetic */
 
- /* 29 Nov. 1989: change various int return types to long for f2c */
 
- /* 30 Nov. 1989: various types from f2c.h */
 
- /*  6 Dec. 1989: types corrected various places */
 
- /* 19 Dec. 1989: make iostat= work right for internal I/O */
 
- /*  8 Jan. 1990: add rsne, wsne -- routines for handling NAMELIST */
 
- /* 28 Jan. 1990: have NAMELIST read treat $ as &, general white
 
- 		 space as blank */
 
- /* 27 Mar. 1990: change an = to == in rd_L(rdfmt.c) so formatted reads
 
- 		 of logical values reject letters other than fFtT;
 
- 		 have nowwriting reset cf */
 
- /* 14 Aug. 1990: adjust lread.c to treat tabs as spaces in list input */
 
- /* 17 Aug. 1990: adjust open.c to recognize blank='Z...' as well as
 
- 		 blank='z...' when reopening an open file */
 
- /* 30 Aug. 1990: prevent embedded blanks in list output of complex values;
 
- 		 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. */
 
- /* 18 Sep. 1990: add component udev to unit and consider old == new file
 
- 		 iff uinode and udev values agree; use stat rather than
 
- 		 access to check existence of file (when STATUS='OLD')*/
 
- /* 2 Oct. 1990:  adjust rewind.c so two successive rewinds after a write
 
- 		 don't clobber the file. */
 
- /* 9 Oct. 1990:  add #include "fcntl.h" to endfile.c, err.c, open.c;
 
- 		 adjust g_char in util.c for segmented memories. */
 
- /* 17 Oct. 1990: replace abort() and _cleanup() with calls on
 
- 		 sig_die(...,1) (defined in main.c). */
 
- /* 5 Nov. 1990:  changes to open.c: complain if new= is specified and the
 
- 		 file already exists; allow file= to be omitted in open stmts
 
- 		 and allow status='replace' (Fortran 90 extensions). */
 
- /* 11 Dec. 1990: adjustments for POSIX. */
 
- /* 15 Jan. 1991: tweak i_ungetc in rsli.c to allow reading from
 
- 		 strings in read-only memory. */
 
- /* 25 Apr. 1991: adjust namelist stuff to work with f2c -i2 */
 
- /* 26 Apr. 1991: fix some bugs with NAMELIST read of multi-dim. arrays */
 
- /* 16 May 1991:  increase LEFBL in lio.h to bypass NeXT bug */
 
- /* 17 Oct. 1991: change type of length field in sequential unformatted
 
- 		 records from int to long (for systems where sizeof(int)
 
- 		 can vary, depending on the compiler or compiler options). */
 
- /* 14 Nov. 1991: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c. */
 
- /* 25 Nov. 1991: change uint to Uint in lwrite.c; change sizeof(int) to
 
- 		 sizeof(uioint) in fseeks in sue.c (missed on 17 Oct.). */
 
- /* 1 Dec. 1991:  uio.c: add test for read failure (seq. unformatted reads);
 
- 		 adjust an error return from EOF to off end of record */
 
- /* 12 Dec. 1991: rsli.c: fix bug with internal list input that caused
 
- 		 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. */
 
- /* 17 Jan. 1992: lread.c, rsne.c: in list and namelist input,
 
- 		 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 . */
 
- /* 18 Jan. 1992: make list output consistent with F format by
 
- 		 printing .1 rather than 0.1 (introduced yesterday). */
 
- /* 3 Feb. 1992:  rsne.c: fix namelist read bug that caused the
 
- 		 character following a comma to be ignored. */
 
- /* 19 May 1992:  adjust iio.c, ilnw.c, rdfmt.c and rsli.c to make err=
 
- 		 work with internal list and formatted I/O. */
 
- /* 18 July 1992: adjust rsne.c to allow namelist input to stop at
 
- 		 an & (e.g. &end). */
 
- /* 23 July 1992: switch to ANSI prototypes unless KR_headers is #defined ;
 
- 		 recognize Z format (assuming 8-bit bytes). */
 
- /* 14 Aug. 1992: tweak wrt_E in wref.c to avoid -NaN */
 
- /* 23 Oct. 1992: Supply missing l_eof = 0 assignment to s_rsne() in rsne.c
 
- 		 (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. */
 
- /* 1 Feb. 1993:  backspace.c: fix bug that bit when last char of 2nd
 
- 		 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). */
 
- /* 5 Feb. 1993:  tweaks to NAMELIST: rsne.c: ? prints the namelist being
 
- 		 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). */
 
- /* 9 Feb. 1993:  Change some #ifdef MSDOS lines to #ifdef NON_UNIX_STDIO.
 
- 		 err.c: under NON_UNIX_STDIO, avoid close(creat(name,0666))
 
- 		 when the unit has another file descriptor for name. */
 
- /* 4 March 1993: err.c, open.c: take declaration of fdopen from rawio.h;
 
- 		 open.c: always give f__w_mode[] 4 elements for use
 
- 		 in t_runc (in endfile.c -- for change of 1 Feb. 1993). */
 
- /* 6 March 1993: uio.c: adjust off-end-of-record test for sequential
 
- 		 unformatted reads to respond to err= rather than end=. */
 
- /* 12 March 1993: various tweaks for C++ */
 
- /* 6 April 1993: adjust error returns for formatted inputs to flush
 
- 		 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).	*/
 
- /* 23 June 1993: iio.c: fix bug in format reversions for internal writes. */
 
- /* 5 Aug. 1993:  lread.c: fix bug in handling repetition counts for
 
- 		 logical data (during list or namelist input).
 
- 		 Change struct f__syl to struct syl (for buggy compilers). */
 
- /* 7 Aug. 1993:  lread.c: fix bug in namelist reading of incomplete
 
- 		 logical arrays. */
 
- /* 9 Aug. 1993:  lread.c: fix bug in namelist reading of an incomplete
 
- 		 array of numeric data followed by another namelist
 
- 		 item whose name starts with 'd', 'D', 'e', or 'E'. */
 
- /* 8 Sept. 1993: open.c: protect #include "sys/..." with
 
- 		 #ifndef NON_UNIX_STDIO; Version date not changed. */
 
- /* 10 Nov. 1993: backspace.c: add nonsense for #ifdef MSDOS */
 
- /* 8 Dec. 1993:  iio.c: adjust internal formatted reads to treat
 
- 		 short records as though padded with blanks
 
- 		 (rather than causing an "off end of record" error). */
 
- /* 22 Feb. 1994: lread.c: check that realloc did not return NULL. */
 
- /* 6 June 1994:  Under NON_UNIX_STDIO, use binary mode for direct
 
- 		 formatted files (avoiding any confusion regarding \n). */
 
- /* 5 July 1994:  Fix bug (introduced 6 June 1994?) in reopening files
 
- 		 under NON_UNIX_STDIO. */
 
- /* 6 July 1994:  wref.c: protect with #ifdef GOOD_SPRINTF_EXPONENT an
 
- 		 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. */
 
- /* 12 July 1994: wrtfmt.c: under G11.4, write 0. as "  .0000    " rather
 
- 		 than "  .0000E+00". */
 
- /* 3 Aug. 1994:  lwrite.c: do not insert a newline when appending an
 
- 		 oversize item to an empty line. */
 
- /* 12 Aug. 1994: rsli.c rsne.c: fix glitch (reset nml_read) that kept
 
- 		 ERR= (in list- or format-directed input) from working
 
- 		 after a NAMELIST READ. */
 
- /* 7 Sept. 1994: typesize.c: adjust to allow types LOGICAL*1, LOGICAL*2,
 
- 		 INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8
 
- 		 in NAMELISTs. */
 
- /* 6 Oct. 1994:  util.c: omit f__mvgbt, as it is never used. */
 
- /* 2 Nov. 1994:  add #ifdef ALWAYS_FLUSH logic. */
 
- /* 26 Jan. 1995: wref.c: fix glitch in printing the exponent of 0 when
 
- 		 GOOD_SPRINTF_EXPONENT is not #defined. */
 
- /* 24 Feb. 1995: iio.c: z_getc: insert (unsigned char *) to allow
 
- 		 internal reading of characters with high-bit set
 
- 		 (on machines that sign-extend characters). */
 
- /* 14 March 1995:lread.c and rsfe.c: adjust s_rsle and s_rsfe to
 
- 		 check for end-of-file (to prevent infinite loops
 
- 		 with empty read statements). */
 
- /* 26 May 1995:  iio.c: z_wnew: fix bug in handling T format items
 
- 		 in internal writes whose last item is written to
 
- 		 an earlier position than some previous item. */
 
- /* 29 Aug. 1995: backspace.c: adjust MSDOS logic. */
 
- /* 6 Sept. 1995: Adjust namelist input to treat a subscripted name
 
- 		 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. */
 
- /* 7 Sept. 1995: Fix some bugs with -DAllow_TYQUAD (for integer*8).
 
- 		 Add -DNo_Namelist_Comments lines to rsne.c. */
 
- /* 5 Oct. 1995:  wrtfmt.c: fix bug with t editing (f__cursor was not
 
- 		 always zeroed in mv_cur). */
 
- /* 11 Oct. 1995: move defs of f__hiwater, f__svic, f__icptr from wrtfmt.c
 
- 		 to err.c */
 
- /* 15 Mar. 1996: lread.c, rsfe.c: honor END= in READ stmt with empty iolist */
 
- /* 13 May 1996:  add ftell_.c and fseek_.c */
 
- /* 9 June 1996:  Adjust rsli.c and lread.c so internal list input with
 
- 		 too few items in the input string will honor end= . */
 
- /* 12 Sept. 1995:fmtlib.c: fix glitch in printing the most negative integer. */
 
- /* 25 Sept. 1995:fmt.h: for formatted writes of negative integer*1 values,
 
- 		 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. */
 
- /* 9 Dec. 1996:	 d[fu]e.c, err.c: complain about non-positive rec=
 
- 		 in direct read and write statements.
 
- 		 ftell_.c: change param "unit" to "Unit" for -DKR_headers. */
 
- /* 26 Feb. 1997: ftell_.c: on systems that define SEEK_SET, etc., use
 
- 		 SEEK_SET, SEEK_CUR, SEEK_END for *whence = 0, 1, 2. */
 
- /* 7 Apr. 1997:	 fmt.c: adjust to complain at missing numbers in formats
 
- 		 (but still treat missing ".nnn" as ".0"). */
 
- /* 11 Apr. 1997: err.c: attempt to make stderr line buffered rather
 
- 		 than fully buffered.  (Buffering is needed for format
 
- 		 items T and TR.) */
 
- /* 27 May 1997:  ftell_.c: fix typo (that caused the third argument to be
 
- 		 treated as 2 on some systems). */
 
- /* 5 Aug. 1997:  lread.c: adjust to accord with a change to the Fortran 8X
 
- 		 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. */
 
- /* 16 Aug. 1997: iio.c: fix bug in internal writes to an array of character
 
- 		 strings that sometimes caused one more array element than
 
- 		 required by the format to be blank-filled.  Example:
 
- 		 format(1x). */
 
- /* 16 Sept. 1997:fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines
 
- 		 with 64-bit pointers and 32-bit ints that did not 64-bit
 
- 		 align struct syl (e.g., Linux on the DEC Alpha). */
 
- /* 19 Jan. 1998: backspace.c: for b->ufmt==0, change sizeof(int) to
 
- 		 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). */
 
- /* 4 March 1998: open.c: fix glitch in comparing file names under
 
- 		-DNON_UNIX_STDIO */
 
- /* 17 March 1998: endfile.c, open.c: acquire temporary files from tmpfile(),
 
- 		 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. */
 
- /* 5 April 1998: wsfe.c: make $ format item work: this was lost in the
 
- 		 changes of 17 March 1998. */
 
- /* 28 May 1998:	 backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c:
 
- 		 set f__curunit sooner so various error messages will
 
- 		 correctly identify the I/O unit involved. */
 
- /* 17 June 1998: lread.c: unless compiled with
 
- 		 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. */
 
- /* 7 Sept. 1998: move e_wdfe from sfe.c to dfe.c, where it was originally.
 
- 		 Why did it ever move to sfe.c? */
 
- /* 2 May 1999:	 open.c: set f__external (to get "external" versus "internal"
 
- 		 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. */
 
- /* 3 May 1999:	open.c: insert two casts for machines with 64-bit longs. */
 
- /* 18 June 1999: backspace.c: allow for b->ufd changing in t_runc */
 
- /* 27 June 1999: rsne.c: fix bug in namelist input: a misplaced increment */
 
- /*		 could cause wrong array elements to be assigned; e.g.,	*/
 
- /*		 "&input k(5)=10*1 &end" assigned k(5) and k(15..23)	*/
 
- /* 15 Nov. 1999: endfile.c: set state to writing (b->uwrt = 1) when an */
 
- /*		endfile statement requires copying the file. */
 
- /*		(Otherwise an immediately following rewind statement */
 
- /*		could make the file appear empty.)  Also, supply a */
 
- /*		missing (long) cast in the sprintf call. */
 
- /*		 sfe.c: add #ifdef ALWAYS_FLUSH logic, for formatted I/O: */
 
- /*		Compiling libf2c with -DALWAYS_FLUSH should prevent losing */
 
- /*		any data in buffers should the program fault.  It also */
 
- /*		makes the program run more slowly. */
 
- /* 20 April 2000: rsne.c, xwsne.c: tweaks that only matter if ftnint and */
 
- /*		ftnlen are of different fundamental types (different numbers */
 
- /*		of bits).  Since these files will not compile when this */
 
- /*		change matters, the above VERSION string remains unchanged. */
 
- /* 4 July 2000: adjustments to permit compilation by C++ compilers; */
 
- /*		VERSION string remains unchanged. */
 
- /* 5 Dec. 2000: lread.c: under namelist input, when reading a logical array, */
 
- /*		treat Tstuff= and Fstuff= as new assignments rather than as */
 
- /*		logical constants. */
 
- /* 22 Feb. 2001: endfile.c: adjust to use truncate() unless compiled with */
 
- /*		-DNO_TRUNCATE (or with -DMSDOS). */
 
- /* 1 March 2001: endfile.c:  switch to ftruncate (absent -DNO_TRUNCATE), */
 
- /*		thus permitting truncation of scratch files on true Unix */
 
- /*		systems, where scratch files have no name.  Add an fflush() */
 
- /*		(surprisingly) needed on some Linux systems. */
 
- /* 11 Oct. 2001: backspac.c dfe.c due.c endfile.c err.c fio.h fmt.c fmt.h */
 
- /*		inquire.c open.c rdfmt.c sue.c util.c: change fseek and */
 
- /*		ftell to FSEEK and FTELL (#defined to be fseek and ftell, */
 
- /*		respectively, in fio.h unless otherwise #defined), and use */
 
- /*		type OFF_T (#defined to be long unless otherwise #defined) */
 
- /*		to permit handling files over 2GB long where possible, */
 
- /*		with suitable -D options, provided for some systems in new */
 
- /*		header file sysdep1.h (copied from sysdep1.h0 by default). */
 
- /* 15 Nov. 2001: endfile.c: add FSEEK after FTRUNCATE. */
 
- /* 28 Nov. 2001: fmt.h lwrite.c wref.c and (new) signbit.c: on IEEE systems, */
 
- /*		print -0 as -0 when compiled with -DSIGNED_ZEROS.  See */
 
- /*		comments in makefile or (better) libf2c/makefile.* . */
 
- /* 6 Sept. 2002: rsne.c: fix bug with multiple repeat counts in reading */
 
- /*		namelists, e.g., &nl a(2) = 3*1.0, 2*2.0, 3*3.0 /  */
 
- /* 21 March 2003: err.c: before writing to a file after reading from it, */
 
- /*		f_seek(file, 0, SEEK_CUR) to make writing legal in ANSI C. */
 
 
  |