1 | static char junk[] = "\n@(#) LIBI77 VERSION pjw,dmg-mods 20001205\n"; |
---|
2 | |
---|
3 | /* |
---|
4 | */ |
---|
5 | |
---|
6 | char __G77_LIBI77_VERSION__[] = "0.5.26 20011220 (release)"; |
---|
7 | |
---|
8 | /* |
---|
9 | 2.01 $ format added |
---|
10 | 2.02 Coding bug in open.c repaired |
---|
11 | 2.03 fixed bugs in lread.c (read * with negative f-format) and lio.c |
---|
12 | and lio.h (e-format conforming to spec) |
---|
13 | 2.04 changed open.c and err.c (fopen and freopen respectively) to |
---|
14 | update to new c-library (append mode) |
---|
15 | 2.05 added namelist capability |
---|
16 | 2.06 allow internal list and namelist I/O |
---|
17 | */ |
---|
18 | |
---|
19 | /* |
---|
20 | close.c: |
---|
21 | allow upper-case STATUS= values |
---|
22 | endfile.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) |
---|
27 | err.c |
---|
28 | use neither setbuf nor setvbuf; make stderr buffered |
---|
29 | fio.h |
---|
30 | #define _bufend |
---|
31 | inquire.c |
---|
32 | upper case responses; |
---|
33 | omit byfile test from SEQUENTIAL= |
---|
34 | answer "YES" to DIRECT= for unopened file (open to debate) |
---|
35 | lio.c |
---|
36 | flush stderr, stdout at end of each stmt |
---|
37 | space before character strings in list output only at line start |
---|
38 | lio.h |
---|
39 | adjust LEW, LED consistent with old libI77 |
---|
40 | lread.c |
---|
41 | use atof() |
---|
42 | allow "nnn*," when reading complex constants |
---|
43 | open.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' |
---|
48 | rdfmt.c |
---|
49 | use atof(); trust EOF == end-of-file (so don't read past |
---|
50 | end-of-file after endfile stmt) |
---|
51 | sfe.c |
---|
52 | flush stderr, stdout at end of each stmt |
---|
53 | wrtfmt.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 | /* 18 June 1999: backspace.c: allow for b->ufd changing in t_runc */ |
---|
305 | /* 27 June 1999: rsne.c: fix bug in namelist input: a misplaced increment */ |
---|
306 | /* could cause wrong array elements to be assigned; e.g., */ |
---|
307 | /* "&input k(5)=10*1 &end" assigned k(5) and k(15..23) */ |
---|
308 | /* 15 Nov. 1999: endfile.c: set state to writing (b->uwrt = 1) when an */ |
---|
309 | /* endfile statement requires copying the file. */ |
---|
310 | /* (Otherwise an immediately following rewind statement */ |
---|
311 | /* could make the file appear empty.) Also, supply a */ |
---|
312 | /* missing (long) cast in the sprintf call. */ |
---|
313 | /* sfe.c: add #ifdef ALWAYS_FLUSH logic, for formatted I/O: */ |
---|
314 | /* Compiling libf2c with -DALWAYS_FLUSH should prevent losing */ |
---|
315 | /* any data in buffers should the program fault. It also */ |
---|
316 | /* makes the program run more slowly. */ |
---|
317 | /* 20 April 2000: rsne.c, xwsne.c: tweaks that only matter if ftnint and */ |
---|
318 | /* ftnlen are of different fundamental types (different numbers */ |
---|
319 | /* of bits). Since these files will not compile when this */ |
---|
320 | /* change matters, the above VERSION string remains unchanged. */ |
---|
321 | /* 4 July 2000: adjustments to permit compilation by C++ compilers; */ |
---|
322 | /* VERSION string remains unchanged. NOT APPLIED FOR G77 */ |
---|
323 | /* 5 Dec. 2000: lread.c: under namelist input, when reading a logical array, */ |
---|
324 | /* treat Tstuff= and Fstuff= as new assignments rather than as */ |
---|
325 | /* logical constants. */ |
---|
326 | |
---|
327 | |
---|
328 | |
---|
329 | /* Changes for GNU Fortran (g77) version of libf2c: */ |
---|
330 | |
---|
331 | /* 17 June 1997: detect recursive I/O and call f__fatal explaining it. */ |
---|
332 | |
---|
333 | #include <stdio.h> |
---|
334 | |
---|
335 | void |
---|
336 | g77__ivers__ () |
---|
337 | { |
---|
338 | fprintf (stderr, "__G77_LIBI77_VERSION__: %s", __G77_LIBI77_VERSION__); |
---|
339 | fputs (junk, stderr); |
---|
340 | } |
---|