~ubuntu-branches/ubuntu/trusty/libf2c2/trusty

« back to all changes in this revision

Viewing changes to libI77/i77vers.c

  • Committer: Bazaar Package Importer
  • Author(s): Alan Bain
  • Date: 2008-05-19 22:50:54 UTC
  • mfrom: (2.1.4 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080519225054-jlymia0wdvvfq7dg
Tags: 20061008-4
Remove CVS directory left in source package

Show diffs side-by-side

added added

removed removed

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