1static char junk[] = "\n@(#) LIBI77 VERSION pjw,dmg-mods 19990503\n"; 2 3/* 4*/ 5 6char __G77_LIBI77_VERSION__[] = "0.5.25 20010315 (release)"; 7 8/* 92.01 $ format added 102.02 Coding bug in open.c repaired 112.03 fixed bugs in lread.c (read * with negative f-format) and lio.c 12 and lio.h (e-format conforming to spec) 132.04 changed open.c and err.c (fopen and freopen respectively) to 14 update to new c-library (append mode) 152.05 added namelist capability 162.06 allow internal list and namelist I/O 17*/ 18 19/* 20close.c: 21 allow upper-case STATUS= values 22endfile.c 23 create fort.nnn if unit nnn not open; 24 else if (file length == 0) use creat() rather than copy; 25 use local copy() rather than forking /bin/cp; 26 rewind, fseek to clear buffer (for no reading past EOF) 27err.c 28 use neither setbuf nor setvbuf; make stderr buffered 29fio.h 30 #define _bufend 31inquire.c 32 upper case responses; 33 omit byfile test from SEQUENTIAL= 34 answer "YES" to DIRECT= for unopened file (open to debate) 35lio.c 36 flush stderr, stdout at end of each stmt 37 space before character strings in list output only at line start 38lio.h 39 adjust LEW, LED consistent with old libI77 40lread.c 41 use atof() 42 allow "nnn*," when reading complex constants 43open.c 44 try opening for writing when open for read fails, with 45 special uwrt value (2) delaying creat() to first write; 46 set curunit so error messages don't drop core; 47 no file name ==> fort.nnn except for STATUS='SCRATCH' 48rdfmt.c 49 use atof(); trust EOF == end-of-file (so don't read past 50 end-of-file after endfile stmt) 51sfe.c 52 flush stderr, stdout at end of each stmt 53wrtfmt.c: 54 use upper case 55 put wrt_E and wrt_F into wref.c, use sprintf() 56 rather than ecvt() and fcvt() [more accurate on VAX] 57*/ 58 59/* 16 Oct. 1988: uwrt = 3 after write, rewind, so close won't zap the file. */ 60 61/* 10 July 1989: change _bufend to buf_end in fio.h, wsfe.c, wrtfmt.c */ 62 63/* 28 Nov. 1989: corrections for IEEE and Cray arithmetic */ 64/* 29 Nov. 1989: change various int return types to long for f2c */ 65/* 30 Nov. 1989: various types from f2c.h */ 66/* 6 Dec. 1989: types corrected various places */ 67/* 19 Dec. 1989: make iostat= work right for internal I/O */ 68/* 8 Jan. 1990: add rsne, wsne -- routines for handling NAMELIST */ 69/* 28 Jan. 1990: have NAMELIST read treat $ as &, general white 70 space as blank */ 71/* 27 Mar. 1990: change an = to == in rd_L(rdfmt.c) so formatted reads 72 of logical values reject letters other than fFtT; 73 have nowwriting reset cf */ 74/* 14 Aug. 1990: adjust lread.c to treat tabs as spaces in list input */ 75/* 17 Aug. 1990: adjust open.c to recognize blank='Z...' as well as 76 blank='z...' when reopening an open file */ 77/* 30 Aug. 1990: prevent embedded blanks in list output of complex values; 78 omit exponent field in list output of values of 79 magnitude between 10 and 1e8; prevent writing stdin 80 and reading stdout or stderr; don't close stdin, stdout, 81 or stderr when reopening units 5, 6, 0. */ 82/* 18 Sep. 1990: add component udev to unit and consider old == new file 83 iff uinode and udev values agree; use stat rather than 84 access to check existence of file (when STATUS='OLD')*/ 85/* 2 Oct. 1990: adjust rewind.c so two successive rewinds after a write 86 don't clobber the file. */ 87/* 9 Oct. 1990: add #include "fcntl.h" to endfile.c, err.c, open.c; 88 adjust g_char in util.c for segmented memories. */ 89/* 17 Oct. 1990: replace abort() and _cleanup() with calls on 90 sig_die(...,1) (defined in main.c). */ 91/* 5 Nov. 1990: changes to open.c: complain if new= is specified and the 92 file already exists; allow file= to be omitted in open stmts 93 and allow status='replace' (Fortran 90 extensions). */ 94/* 11 Dec. 1990: adjustments for POSIX. */ 95/* 15 Jan. 1991: tweak i_ungetc in rsli.c to allow reading from 96 strings in read-only memory. */ 97/* 25 Apr. 1991: adjust namelist stuff to work with f2c -i2 */ 98/* 26 Apr. 1991: fix some bugs with NAMELIST read of multi-dim. arrays */ 99/* 16 May 1991: increase LEFBL in lio.h to bypass NeXT bug */ 100/* 17 Oct. 1991: change type of length field in sequential unformatted 101 records from int to long (for systems where sizeof(int) 102 can vary, depending on the compiler or compiler options). */ 103/* 14 Nov. 1991: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c. */ 104/* 25 Nov. 1991: change uint to Uint in lwrite.c; change sizeof(int) to 105 sizeof(uioint) in fseeks in sue.c (missed on 17 Oct.). */ 106/* 1 Dec. 1991: uio.c: add test for read failure (seq. unformatted reads); 107 adjust an error return from EOF to off end of record */ 108/* 12 Dec. 1991: rsli.c: fix bug with internal list input that caused 109 the last character of each record to be ignored. 110 iio.c: adjust error message in internal formatted 111 input from "end-of-file" to "off end of record" if 112 the format specifies more characters than the 113 record contains. */ 114/* 17 Jan. 1992: lread.c, rsne.c: in list and namelist input, 115 treat "r* ," and "r*," alike (where r is a 116 positive integer constant), and fix a bug in 117 handling null values following items with repeat 118 counts (e.g., 2*1,,3); for namelist reading 119 of a numeric array, allow a new name-value subsequence 120 to terminate the current one (as though the current 121 one ended with the right number of null values). 122 lio.h, lwrite.c: omit insignificant zeros in 123 list and namelist output. To get the old 124 behavior, compile with -DOld_list_output . */ 125/* 18 Jan. 1992: make list output consistent with F format by 126 printing .1 rather than 0.1 (introduced yesterday). */ 127/* 3 Feb. 1992: rsne.c: fix namelist read bug that caused the 128 character following a comma to be ignored. */ 129/* 19 May 1992: adjust iio.c, ilnw.c, rdfmt.c and rsli.c to make err= 130 work with internal list and formatted I/O. */ 131/* 18 July 1992: adjust rsne.c to allow namelist input to stop at 132 an & (e.g. &end). */ 133/* 23 July 1992: switch to ANSI prototypes unless KR_headers is #defined ; 134 recognize Z format (assuming 8-bit bytes). */ 135/* 14 Aug. 1992: tweak wrt_E in wref.c to avoid -NaN */ 136/* 23 Oct. 1992: Supply missing l_eof = 0 assignment to s_rsne() in rsne.c 137 (so end-of-file on other files won't confuse namelist 138 reads of external files). Prepend f__ to external 139 names that are only of internal interest to lib[FI]77. */ 140/* 1 Feb. 1993: backspace.c: fix bug that bit when last char of 2nd 141 buffer == '\n'. 142 endfile.c: guard against tiny L_tmpnam; close and reopen 143 files in t_runc(). 144 lio.h: lengthen LINTW (buffer size in lwrite.c). 145 err.c, open.c: more prepending of f__ (to [rw]_mode). */ 146/* 5 Feb. 1993: tweaks to NAMELIST: rsne.c: ? prints the namelist being 147 sought; namelists of the wrong name are skipped (after 148 an error message; xwsne.c: namelist writes have a 149 newline before each new variable. 150 open.c: ACCESS='APPEND' positions sequential files 151 at EOF (nonstandard extension -- that doesn't require 152 changing data structures). */ 153/* 9 Feb. 1993: Change some #ifdef MSDOS lines to #ifdef NON_UNIX_STDIO. 154 err.c: under NON_UNIX_STDIO, avoid close(creat(name,0666)) 155 when the unit has another file descriptor for name. */ 156/* 4 March 1993: err.c, open.c: take declaration of fdopen from rawio.h; 157 open.c: always give f__w_mode[] 4 elements for use 158 in t_runc (in endfile.c -- for change of 1 Feb. 1993). */ 159/* 6 March 1993: uio.c: adjust off-end-of-record test for sequential 160 unformatted reads to respond to err= rather than end=. */ 161/* 12 March 1993: various tweaks for C++ */ 162/* 6 April 1993: adjust error returns for formatted inputs to flush 163 the current input line when err=label is specified. 164 To restore the old behavior (input left mid-line), 165 either adjust the #definition of errfl in fio.h or 166 omit the invocation of f__doend in err__fl (in err.c). */ 167/* 23 June 1993: iio.c: fix bug in format reversions for internal writes. */ 168/* 5 Aug. 1993: lread.c: fix bug in handling repetition counts for 169 logical data (during list or namelist input). 170 Change struct f__syl to struct syl (for buggy compilers). */ 171/* 7 Aug. 1993: lread.c: fix bug in namelist reading of incomplete 172 logical arrays. */ 173/* 9 Aug. 1993: lread.c: fix bug in namelist reading of an incomplete 174 array of numeric data followed by another namelist 175 item whose name starts with 'd', 'D', 'e', or 'E'. */ 176/* 8 Sept. 1993: open.c: protect #include "sys/..." with 177 #ifndef NON_UNIX_STDIO; Version date not changed. */ 178/* 10 Nov. 1993: backspace.c: add nonsense for #ifdef MSDOS */ 179/* 8 Dec. 1993: iio.c: adjust internal formatted reads to treat 180 short records as though padded with blanks 181 (rather than causing an "off end of record" error). */ 182/* 22 Feb. 1994: lread.c: check that realloc did not return NULL. */ 183/* 6 June 1994: Under NON_UNIX_STDIO, use binary mode for direct 184 formatted files (avoiding any confusion regarding \n). */ 185/* 5 July 1994: Fix bug (introduced 6 June 1994?) in reopening files 186 under NON_UNIX_STDIO. */ 187/* 6 July 1994: wref.c: protect with #ifdef GOOD_SPRINTF_EXPONENT an 188 optimization that requires exponents to have 2 digits 189 when 2 digits suffice. 190 lwrite.c wsfe.c (list and formatted external output): 191 omit ' ' carriage-control when compiled with 192 -DOMIT_BLANK_CC . Off-by-one bug fixed in character 193 count for list output of character strings. 194 Omit '.' in list-directed printing of Nan, Infinity. */ 195/* 12 July 1994: wrtfmt.c: under G11.4, write 0. as " .0000 " rather 196 than " .0000E+00". */ 197/* 3 Aug. 1994: lwrite.c: do not insert a newline when appending an 198 oversize item to an empty line. */ 199/* 12 Aug. 1994: rsli.c rsne.c: fix glitch (reset nml_read) that kept 200 ERR= (in list- or format-directed input) from working 201 after a NAMELIST READ. */ 202/* 7 Sept. 1994: typesize.c: adjust to allow types LOGICAL*1, LOGICAL*2, 203 INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8 204 in NAMELISTs. */ 205/* 6 Oct. 1994: util.c: omit f__mvgbt, as it is never used. */ 206/* 2 Nov. 1994: add #ifdef ALWAYS_FLUSH logic. */ 207/* 26 Jan. 1995: wref.c: fix glitch in printing the exponent of 0 when 208 GOOD_SPRINTF_EXPONENT is not #defined. */ 209/* 24 Feb. 1995: iio.c: z_getc: insert (unsigned char *) to allow 210 internal reading of characters with high-bit set 211 (on machines that sign-extend characters). */ 212/* 14 March 1995:lread.c and rsfe.c: adjust s_rsle and s_rsfe to 213 check for end-of-file (to prevent infinite loops 214 with empty read statements). */ 215/* 26 May 1995: iio.c: z_wnew: fix bug in handling T format items 216 in internal writes whose last item is written to 217 an earlier position than some previous item. */ 218/* 29 Aug. 1995: backspace.c: adjust MSDOS logic. */ 219/* 6 Sept. 1995: Adjust namelist input to treat a subscripted name 220 whose subscripts do not involve colons similarly 221 to the name without a subscript: accept several 222 values, stored in successive elements starting at 223 the indicated subscript. Adjust namelist output 224 to quote character strings (avoiding confusion with 225 arrays of character strings). Adjust f_init calls 226 for people who don't use libF77's main(); now open and 227 namelist read statements invoke f_init if needed. */ 228/* 7 Sept. 1995: Fix some bugs with -DAllow_TYQUAD (for integer*8). 229 Add -DNo_Namelist_Comments lines to rsne.c. */ 230/* 5 Oct. 1995: wrtfmt.c: fix bug with t editing (f__cursor was not 231 always zeroed in mv_cur). */ 232/* 11 Oct. 1995: move defs of f__hiwater, f__svic, f__icptr from wrtfmt.c 233 to err.c */ 234/* 15 Mar. 1996: lread.c, rsfe.c: honor END= in READ stmt with empty iolist */ 235 236/* 13 May 1996: add ftell_.c and fseek_.c */ 237/* 9 June 1996: Adjust rsli.c and lread.c so internal list input with 238 too few items in the input string will honor end= . */ 239/* 12 Sept. 1995:fmtlib.c: fix glitch in printing the most negative integer. */ 240/* 25 Sept. 1995:fmt.h: for formatted writes of negative integer*1 values, 241 make ic signed on ANSI systems. If formatted writes of 242 integer*1 values trouble you when using a K&R C compiler, 243 switch to an ANSI compiler or use a compiler flag that 244 makes characters signed. */ 245/* 9 Dec. 1996: d[fu]e.c, err.c: complain about non-positive rec= 246 in direct read and write statements. 247 ftell_.c: change param "unit" to "Unit" for -DKR_headers. */ 248/* 26 Feb. 1997: ftell_.c: on systems that define SEEK_SET, etc., use 249 SEEK_SET, SEEK_CUR, SEEK_END for *whence = 0, 1, 2. */ 250/* 7 Apr. 1997: fmt.c: adjust to complain at missing numbers in formats 251 (but still treat missing ".nnn" as ".0"). */ 252/* 11 Apr. 1997: err.c: attempt to make stderr line buffered rather 253 than fully buffered. (Buffering is needed for format 254 items T and TR.) */ 255/* 27 May 1997: ftell_.c: fix typo (that caused the third argument to be 256 treated as 2 on some systems). */ 257/* 5 Aug. 1997: lread.c: adjust to accord with a change to the Fortran 8X 258 draft (in 1990 or 1991) that rescinded permission to elide 259 quote marks in namelist input of character data; compile 260 with -DF8X_NML_ELIDE_QUOTES to get the old behavior. 261 wrtfmt.o: wrt_G: tweak to print the right number of 0's 262 for zero under G format. */ 263/* 16 Aug. 1997: iio.c: fix bug in internal writes to an array of character 264 strings that sometimes caused one more array element than 265 required by the format to be blank-filled. Example: 266 format(1x). */ 267/* 16 Sept. 1997:fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines 268 with 64-bit pointers and 32-bit ints that did not 64-bit 269 align struct syl (e.g., Linux on the DEC Alpha). */ 270/* 19 Jan. 1998: backspace.c: for b->ufmt==0, change sizeof(int) to 271 sizeof(uiolen). On machines where this would make a 272 difference, it is best for portability to compile libI77 with 273 -DUIOLEN_int (which will render the change invisible). */ 274/* 4 March 1998: open.c: fix glitch in comparing file names under 275 -DNON_UNIX_STDIO */ 276/* 17 March 1998: endfile.c, open.c: acquire temporary files from tmpfile(), 277 unless compiled with -DNON_ANSI_STDIO, which uses mktemp(). 278 New buffering scheme independent of NON_UNIX_STDIO for 279 handling T format items. Now -DNON_UNIX_STDIO is no 280 longer be necessary for Linux, and libf2c no longer 281 causes stderr to be buffered -- the former setbuf or 282 setvbuf call for stderr was to make T format items work. 283 open.c: use the Posix access() function to check existence 284 or nonexistence of files, except under -DNON_POSIX_STDIO, 285 where trial fopen calls are used. */ 286/* 5 April 1998: wsfe.c: make $ format item work: this was lost in the 287 changes of 17 March 1998. */ 288/* 28 May 1998: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c: 289 set f__curunit sooner so various error messages will 290 correctly identify the I/O unit involved. */ 291/* 17 June 1998: lread.c: unless compiled with 292 ALLOW_FLOAT_IN_INTEGER_LIST_INPUT #defined, treat 293 floating-point numbers (containing either a decimal point 294 or an exponent field) as errors when they appear as list 295 input for integer data. */ 296/* 7 Sept. 1998: move e_wdfe from sfe.c to dfe.c, where it was originally. 297 Why did it ever move to sfe.c? */ 298/* 2 May 1999: open.c: set f__external (to get "external" versus "internal" 299 right in the error message if we cannot open the file). 300 err.c: cast a pointer difference to (int) for %d. 301 rdfmt.c: omit fixed-length buffer that could be overwritten 302 by formats Inn or Lnn with nn > 83. */ 303/* 3 May 1999: open.c: insert two casts for machines with 64-bit longs. */ 304 305 306 307/* Changes for GNU Fortran (g77) version of libf2c: */ 308 309/* 17 June 1997: detect recursive I/O and call f__fatal explaining it. */ 310 311#include <stdio.h> 312 313void 314g77__ivers__ () 315{ 316 fprintf (stderr, "__G77_LIBI77_VERSION__: %s", __G77_LIBI77_VERSION__); 317 fputs (junk, stderr); 318} 319