re PR libfortran/20006 ($ format extension doesn't work)
PR libfortran/20006 * io.c (format_item_1): Add check and extension warning for $ edit descriptor. * io/format.c (parse_format_list): Set repeat count of $ format node to 1. * io/transfer.c (read_sf): Add g.seen_dollar to the test concerning advancing I/O. (data_transfer_init): Likewise. (finalize_transfer): Likewise. From-SVN: r100314
This commit is contained in:
parent
12bcc2c1d5
commit
c9330b0331
|
@ -1,3 +1,9 @@
|
||||||
|
2005-05-29 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||||
|
|
||||||
|
PR libfortran/20006
|
||||||
|
* io.c (format_item_1): Add check and extension warning for
|
||||||
|
$ edit descriptor.
|
||||||
|
|
||||||
2005-05-28 Steven G. Kargl <kargls@comcast.net>
|
2005-05-28 Steven G. Kargl <kargls@comcast.net>
|
||||||
|
|
||||||
* arith.c (gfc_arith_init_1): Fix off by one problem;
|
* arith.c (gfc_arith_init_1): Fix off by one problem;
|
||||||
|
|
|
@ -491,9 +491,13 @@ format_item_1:
|
||||||
|
|
||||||
case FMT_DOLLAR:
|
case FMT_DOLLAR:
|
||||||
t = format_lex ();
|
t = format_lex ();
|
||||||
|
|
||||||
|
if (gfc_notify_std (GFC_STD_GNU, "Extension: $ descriptor at %C")
|
||||||
|
== FAILURE)
|
||||||
|
return FAILURE;
|
||||||
if (t != FMT_RPAREN || level > 0)
|
if (t != FMT_RPAREN || level > 0)
|
||||||
{
|
{
|
||||||
error = "$ must the last specifier";
|
error = "$ must be the last specifier";
|
||||||
goto syntax;
|
goto syntax;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
2005-05-29 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||||
|
|
||||||
|
PR libfortran/20006
|
||||||
|
* io/format.c (parse_format_list): Set repeat count of $ format
|
||||||
|
node to 1.
|
||||||
|
* io/transfer.c (read_sf): Add g.seen_dollar to the test
|
||||||
|
concerning advancing I/O.
|
||||||
|
(data_transfer_init): Likewise.
|
||||||
|
(finalize_transfer): Likewise.
|
||||||
|
|
||||||
2005-05-27 Thomas Koenig <Thomas.Koenig@online.de>
|
2005-05-27 Thomas Koenig <Thomas.Koenig@online.de>
|
||||||
|
|
||||||
* runtime/in_pack_generic.c: Adjust copyright years.
|
* runtime/in_pack_generic.c: Adjust copyright years.
|
||||||
|
|
|
@ -579,6 +579,7 @@ parse_format_list (void)
|
||||||
|
|
||||||
case FMT_DOLLAR:
|
case FMT_DOLLAR:
|
||||||
get_fnode (&head, &tail, FMT_DOLLAR);
|
get_fnode (&head, &tail, FMT_DOLLAR);
|
||||||
|
tail->repeat = 1;
|
||||||
goto between_desc;
|
goto between_desc;
|
||||||
|
|
||||||
case FMT_T:
|
case FMT_T:
|
||||||
|
|
|
@ -191,7 +191,7 @@ read_sf (int *length)
|
||||||
|
|
||||||
/* If we see an EOR during non-advancing I/O, we need to skip
|
/* If we see an EOR during non-advancing I/O, we need to skip
|
||||||
the rest of the I/O statement. Set the corresponding flag. */
|
the rest of the I/O statement. Set the corresponding flag. */
|
||||||
if (advance_status == ADVANCE_NO)
|
if (advance_status == ADVANCE_NO || g.seen_dollar)
|
||||||
eor_condition = 1;
|
eor_condition = 1;
|
||||||
|
|
||||||
/* Without padding, terminate the I/O statement without assigning
|
/* Without padding, terminate the I/O statement without assigning
|
||||||
|
@ -1187,7 +1187,7 @@ data_transfer_init (int read_flag)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (advance_status == ADVANCE_YES)
|
if (advance_status == ADVANCE_YES && !g.seen_dollar)
|
||||||
current_unit->read_bad = 1;
|
current_unit->read_bad = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1459,11 +1459,12 @@ finalize_transfer (void)
|
||||||
{
|
{
|
||||||
free_fnodes ();
|
free_fnodes ();
|
||||||
|
|
||||||
if (advance_status == ADVANCE_NO)
|
if (advance_status == ADVANCE_NO || g.seen_dollar)
|
||||||
{
|
{
|
||||||
/* Most systems buffer lines, so force the partial record
|
/* Most systems buffer lines, so force the partial record
|
||||||
to be written out. */
|
to be written out. */
|
||||||
flush (current_unit->s);
|
flush (current_unit->s);
|
||||||
|
g.seen_dollar = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue