diff options
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 7 | ||||
-rw-r--r-- | libgfortran/io/write.c | 30 |
2 files changed, 33 insertions, 4 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 27531d84d72..05609b4f5b4 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,4 +1,11 @@ 2004-05-16 Janne Blomqvist <jblomqvi@cc.hut.fi> + Paul Brook <paul@codesourcery.com> + + * io/write.c (write_logical): Don't print extra blank. + (write_integer): Base field width on kind. + (list_formatted_write): Output initial blank. + +2004-05-16 Janne Blomqvist <jblomqvi@cc.hut.fi> * io/io.h (flush): Add prototype. * io/transfer.c (finalize_transfer): Flush partial records. diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index 05dbd9bb789..8e5a3204d86 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -875,12 +875,10 @@ write_char (char c) /* write_logical()-- Write a list-directed logical value */ -/* Default logical output should be L2 - according to DEC fortran Manual. */ + static void write_logical (const char *source, int length) { - write_char (' '); write_char (extract_int (source, length) ? 'T' : 'F'); } @@ -893,10 +891,33 @@ write_integer (const char *source, int length) char *p; const char *q; int digits; - int width = 12; + int width; q = itoa (extract_int (source, length)); + switch (length) + { + case 1: + width = 4; + break; + + case 2: + width = 6; + break; + + case 4: + width = 11; + break; + + case 8: + width = 20; + break; + + default: + width = 0; + break; + } + digits = strlen (q); if(width < digits ) @@ -1039,6 +1060,7 @@ list_formatted_write (bt type, void *p, int len) { g.first_item = 0; char_flag = 0; + write_char (' '); } else { |