+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>
* arith.c (gfc_arith_init_1): Fix off by one problem;
case FMT_DOLLAR:
t = format_lex ();
+
+ if (gfc_notify_std (GFC_STD_GNU, "Extension: $ descriptor at %C")
+ == FAILURE)
+ return FAILURE;
if (t != FMT_RPAREN || level > 0)
{
- error = "$ must the last specifier";
+ error = "$ must be the last specifier";
goto syntax;
}
+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>
* runtime/in_pack_generic.c: Adjust copyright years.
case FMT_DOLLAR:
get_fnode (&head, &tail, FMT_DOLLAR);
+ tail->repeat = 1;
goto between_desc;
case FMT_T:
/* 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. */
- if (advance_status == ADVANCE_NO)
+ if (advance_status == ADVANCE_NO || g.seen_dollar)
eor_condition = 1;
/* Without padding, terminate the I/O statement without assigning
}
else
{
- if (advance_status == ADVANCE_YES)
+ if (advance_status == ADVANCE_YES && !g.seen_dollar)
current_unit->read_bad = 1;
}
{
free_fnodes ();
- if (advance_status == ADVANCE_NO)
+ if (advance_status == ADVANCE_NO || g.seen_dollar)
{
/* Most systems buffer lines, so force the partial record
to be written out. */
flush (current_unit->s);
+ g.seen_dollar = 0;
return;
}