io.h (unit_flags): Add new flag has_recl.

2006-11-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* io/io.h (unit_flags): Add new flag has_recl.
	* io.open.c (new_unit): Set flag if RECL= was specified.
	* io/transfer.c (us_write): If flag set, leave recl as initialized by
	new_unit.

From-SVN: r119087
This commit is contained in:
Jerry DeLisle 2006-11-22 07:32:09 +00:00
parent 50bc8a4d6e
commit b0c6db58ad
4 changed files with 18 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2006-11-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* io/io.h (unit_flags): Add new flag has_recl.
* io.open.c (new_unit): Set flag if RECL= was specified.
* io/transfer.c (us_write): If flag set, leave recl as initialized by
new_unit.
2006-11-16 Francois-Xavier Coudert <coudert@clipper.ens.fr>
* io/open.c (new_unit): Format %d expects an int variable.

View File

@ -470,6 +470,7 @@ typedef struct
unit_status status;
unit_pad pad;
unit_convert convert;
int has_recl;
}
unit_flags;

View File

@ -406,9 +406,13 @@ new_unit (st_parameter_open *opp, gfc_unit *u, unit_flags * flags)
/* Unspecified recl ends up with a processor dependent value. */
if ((opp->common.flags & IOPARM_OPEN_HAS_RECL_IN))
u->recl = opp->recl_in;
{
u->flags.has_recl = 1;
u->recl = opp->recl_in;
}
else
{
u->flags.has_recl = 0;
switch (compile_options.record_marker)
{
case 0:

View File

@ -1459,10 +1459,11 @@ us_write (st_parameter_dt *dtp)
if (swrite (dtp->u.p.current_unit->s, &dummy, &nbytes) != 0)
generate_error (&dtp->common, ERROR_OS, NULL);
/* For sequential unformatted, we write until we have more bytes
than can fit in the record markers. If disk space runs out first,
it will error on the write. */
dtp->u.p.current_unit->recl = max_offset;
/* For sequential unformatted, if RECL= was not specified in the OPEN
we write until we have more bytes than can fit in the record markers.
If disk space runs out first, it will error on the write. */
if (dtp->u.p.current_unit->flags.has_recl == 0)
dtp->u.p.current_unit->recl = max_offset;
dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;
}