]> gcc.gnu.org Git - gcc.git/commit
re PR libfortran/29568 (implement unformatted files with subrecords (Intel style))
authorThomas Koenig <Thomas.Koenig@online.de>
Fri, 1 Dec 2006 21:04:38 +0000 (21:04 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Fri, 1 Dec 2006 21:04:38 +0000 (21:04 +0000)
commit07b3bbf2007bb9fab8b6c08321abf9c2cc7a2443
treefa9d74bece4649b8f0f42522f03ff4b74899826b
parent7c6a62dd399b670aac5a1d8c96ba591b75df74b7
re PR libfortran/29568 (implement unformatted files with subrecords (Intel style))

2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>

PR libfortran/29568
* gfortran.dg/convert_implied_open.f90:  Change to
new default record length.
* gfortran.dg/unf_short_record_1.f90:  Adapt to
new error message.
* gfortran.dg/unformatted_subrecords_1.f90:  New test.

2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>

PR libfortran/29568
* gfortran.h (gfc_option_t):  Add max_subrecord_length.
(top level): Define MAX_SUBRECORD_LENGTH.
* lang.opt:  Add option -fmax-subrecord-length=.
* trans-decl.c:  Add new function set_max_subrecord_length.
(gfc_generate_function_code): If we are within the main
program and max_subrecord_length has been set, call
set_max_subrecord_length.
* options.c (gfc_init_options):  Add defaults for
max_subrecord_lenght, convert and record_marker.
(gfc_handle_option):  Add handling for
-fmax_subrecord_length.
* invoke.texi:  Document the new default for
-frecord-marker=<n>.

2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>

PR libfortran/29568
* libgfortran/libgfortran.h (compile_options_t):  Add
record_marker. (top level):  Define GFC_MAX_SUBRECORD_LENGTH.
* runtime/compile_options.c (set_record_marker):  Change
default to four-byte record marker.
(set_max_subrecord_length):  New function.
* runtime/error.c (translate_error):  Change error message
for short record on unformatted read.
* io/io.h (gfc_unit):  Add recl_subrecord, bytes_left_subrecord
and continued.
* io/file_pos.c (unformatted_backspace):  Change default of record
marker size to four bytes.  Loop over subrecords.
* io/open.c:  Default recl is max_offset.  If
compile_options.max_subrecord_length has been set, set set
u->recl_subrecord to its value, to the maximum value otherwise.
* io/transfer.c (top level):  Add prototypes for us_read, us_write,
next_record_r_unf and next_record_w_unf.
(read_block_direct):  Separate codepaths for unformatted direct
and unformatted sequential.  If a recl has been set by the
user, use the number of bytes left for the record if it is smaller
than the read request.  Loop over subrecords.  Set an error if the
user has set a recl and the read was short.
(write_buf):  Separate codepaths for unformatted direct and
unformatted sequential. If a recl has been set by the
user, use the number of bytes left for the record if it is smaller
than the read request.  Loop over subrecords.  Set an error if the
user has set a recl and the read was short.
(us_read):  Add parameter continued (to indicate that bytes_left
should not be intialized).  Change default of record marker size
to four bytes. Use subrecord.  If the subrecord length is smaller than
zero, this indicates a continuation.
(us_write):  Add parameter continued (to indicate that the continued
flag should be set).  Use subrecord.
(pre_position):  Use 0 for continued on us_write and us_read calls.
(skip_record):  New function.
(next_record_r_unf):  New function.
(next_record_r):  Use next_record_r_unf.
(write_us_marker):  Default size for record markers is four bytes.
(next_record_w_unf):  New function.
(next_record_w):  Use next_record_w_unf.

From-SVN: r119412
18 files changed:
gcc/fortran/ChangeLog
gcc/fortran/gfortran.h
gcc/fortran/invoke.texi
gcc/fortran/lang.opt
gcc/fortran/options.c
gcc/fortran/trans-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/convert_implied_open.f90
gcc/testsuite/gfortran.dg/unf_short_record_1.f90
gcc/testsuite/gfortran.dg/unformatted_subrecord_1.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/file_pos.c
libgfortran/io/io.h
libgfortran/io/open.c
libgfortran/io/transfer.c
libgfortran/libgfortran.h
libgfortran/runtime/compile_options.c
libgfortran/runtime/error.c
This page took 0.062947 seconds and 5 git commands to generate.