From 7fcb18047a53780b572b72c964d1df9cddec1660 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tobias=20Schl=C3=BCter?= Date: Mon, 23 Aug 2004 16:28:31 +0200 Subject: [PATCH] io.h, [...]: Fix formatting issues, update copyright years. * io/io.h, io/list_read.c, io/open.c, io/transfer.c, io/write.c: Fix formatting issues, update copyright years. From-SVN: r86425 --- libgfortran/io/io.h | 2 +- libgfortran/io/list_read.c | 190 +++++++++++---------- libgfortran/io/open.c | 70 ++++---- libgfortran/io/transfer.c | 328 +++++++++++++++++++------------------ libgfortran/io/write.c | 105 ++++++------ 5 files changed, 346 insertions(+), 349 deletions(-) diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index 87a70f836cd..796a6247f21 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of the GNU Fortran 95 runtime library (libgfortran). diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index 92ef1e7b9e9..95b5b883491 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of the GNU Fortran 95 runtime library (libgfortran). @@ -27,19 +27,19 @@ Boston, MA 02111-1307, USA. */ /* List directed input. Several parsing subroutines are practically - * reimplemented from formatted input, the reason being that there are - * all kinds of small differences between formatted and list directed - * parsing. */ + reimplemented from formatted input, the reason being that there are + all kinds of small differences between formatted and list directed + parsing. */ /* Subroutines for reading characters from the input. Because a - * repeat count is ambiguous with an integer, we have to read the - * whole digit string before seeing if there is a '*' which signals - * the repeat count. Since we can have a lot of potential leading - * zeros, we have to be able to back up by arbitrary amount. Because - * the input might not be seekable, we have to buffer the data - * ourselves. Data is buffered in scratch[] until it becomes too - * large, after which we start allocating memory on the heap. */ + repeat count is ambiguous with an integer, we have to read the + whole digit string before seeing if there is a '*' which signals + the repeat count. Since we can have a lot of potential leading + zeros, we have to be able to back up by arbitrary amount. Because + the input might not be seekable, we have to buffer the data + ourselves. Data is buffered in scratch[] until it becomes too + large, after which we start allocating memory on the heap. */ static int repeat_count, saved_length, saved_used, input_complete, at_eol; static int comma_flag, namelist_mode; @@ -50,7 +50,7 @@ static bt saved_type; /* Storage area for values except for strings. Must be large enough - * to hold a complex value (two reals) of the largest kind */ + to hold a complex value (two reals) of the largest kind. */ static char value[20]; @@ -59,18 +59,17 @@ static char value[20]; #define CASE_SEPARATORS case ' ': case ',': case '/': case '\n': case '\t' -/* This macro assumes that we're operating on a variable */ +/* This macro assumes that we're operating on a variable. */ #define is_separator(c) (c == '/' || c == ',' || c == '\n' || c == ' ' \ || c == '\t') -/* Maximum repeat count. Less than ten times the maximum signed int32. */ +/* Maximum repeat count. Less than ten times the maximum signed int32. */ #define MAX_REPEAT 200000000 -/* push_char()-- Save a character to a string buffer, enlarging it as - * necessary. */ +/* Save a character to a string buffer, enlarging it as necessary. */ static void push_char (char c) @@ -103,7 +102,7 @@ push_char (char c) } -/* free_saved()-- Free the input buffer if necessary. */ +/* Free the input buffer if necessary. */ static void free_saved (void) @@ -152,7 +151,7 @@ done: } -/* unget_char()-- Push a character back onto the input */ +/* Push a character back onto the input. */ static void unget_char (char c) @@ -162,9 +161,8 @@ unget_char (char c) } -/* eat_spaces()-- Skip over spaces in the input. Returns the nonspace - * character that terminated the eating and also places it back on the - * input. */ +/* Skip over spaces in the input. Returns the nonspace character that + terminated the eating and also places it back on the input. */ static char eat_spaces (void) @@ -182,17 +180,16 @@ eat_spaces (void) } -/* eat_separator()-- Skip over a separator. Technically, we don't - * always eat the whole separator. This is because if we've processed - * the last input item, then a separator is unnecessary. Plus the - * fact that operating systems usually deliver console input on a line - * basis. - * - * The upshot is that if we see a newline as part of reading a - * separator, we stop reading. If there are more input items, we - * continue reading the separator with finish_separator() which takes - * care of the fact that we may or may not have seen a comma as part - * of the separator. */ +/* Skip over a separator. Technically, we don't always eat the whole + separator. This is because if we've processed the last input item, + then a separator is unnecessary. Plus the fact that operating + systems usually deliver console input on a line basis. + + The upshot is that if we see a newline as part of reading a + separator, we stop reading. If there are more input items, we + continue reading the separator with finish_separator() which takes + care of the fact that we may or may not have seen a comma as part + of the separator. */ static void eat_separator (void) @@ -220,7 +217,7 @@ eat_separator (void) case '!': if (namelist_mode) - { /* Eat a namelist comment */ + { /* Eat a namelist comment. */ do c = next_char (); while (c != '\n'); @@ -228,7 +225,7 @@ eat_separator (void) break; } - /* Fall Through */ + /* Fall Through... */ default: unget_char (c); @@ -237,9 +234,9 @@ eat_separator (void) } -/* finish_separator()-- Finish processing a separator that was - * interrupted by a newline. If we're here, then another data item is - * present, so we finish what we started on the previous line. */ +/* Finish processing a separator that was interrupted by a newline. + If we're here, then another data item is present, so we finish what + we started on the previous line. */ static void finish_separator (void) @@ -289,10 +286,9 @@ restart: } -/* convert_integer()-- Convert an unsigned string to an integer. The - * length value is -1 if we are working on a repeat count. Returns - * nonzero if we have a range problem. As a side effect, frees the - * saved_string. */ +/* Convert an unsigned string to an integer. The length value is -1 + if we are working on a repeat count. Returns nonzero if we have a + range problem. As a side effect, frees the saved_string. */ static int convert_integer (int length, int negative) @@ -363,9 +359,9 @@ overflow: } -/* parse_repeat()-- Parse a repeat count for logical and complex - * values which cannot begin with a digit. Returns nonzero if we are - * done, zero if we should continue on. */ +/* Parse a repeat count for logical and complex values which cannot + begin with a digit. Returns nonzero if we are done, zero if we + should continue on. */ static int parse_repeat (void) @@ -441,7 +437,7 @@ bad_repeat: } -/* read_logical()-- Read a logical character on the input */ +/* Read a logical character on the input. */ static void read_logical (int length) @@ -485,7 +481,7 @@ read_logical (int length) CASE_SEPARATORS: unget_char (c); eat_separator (); - return; /* Null value */ + return; /* Null value. */ default: goto bad_logical; @@ -494,8 +490,7 @@ read_logical (int length) saved_type = BT_LOGICAL; saved_length = length; - /* Eat trailing garbage */ - + /* Eat trailing garbage. */ do { c = next_char (); @@ -517,10 +512,10 @@ bad_logical: } -/* read_integer()-- Reading integers is tricky because we can actually - * be reading a repeat count. We have to store the characters in a - * buffer because we could be reading an integer that is larger than the - * default int used for repeat counts. */ +/* Reading integers is tricky because we can actually be reading a + repeat count. We have to store the characters in a buffer because + we could be reading an integer that is larger than the default int + used for repeat counts. */ static void read_integer (int length) @@ -535,13 +530,13 @@ read_integer (int length) { case '-': negative = 1; - /* Fall through */ + /* Fall through... */ case '+': c = next_char (); goto get_integer; - CASE_SEPARATORS: /* Single null */ + CASE_SEPARATORS: /* Single null. */ unget_char (c); eat_separator (); return; @@ -554,7 +549,7 @@ read_integer (int length) goto bad_integer; } - /* Take care of what may be a repeat count */ + /* Take care of what may be a repeat count. */ for (;;) { @@ -569,7 +564,7 @@ read_integer (int length) push_char ('\0'); goto repeat; - CASE_SEPARATORS: /* Not a repeat count */ + CASE_SEPARATORS: /* Not a repeat count. */ goto done; default: @@ -581,7 +576,7 @@ repeat: if (convert_integer (-1, 0)) return; -/* Get the real integer */ + /* Get the real integer. */ c = next_char (); switch (c) @@ -596,7 +591,7 @@ repeat: case '-': negative = 1; - /* Fall through */ + /* Fall through... */ case '+': c = next_char (); @@ -649,14 +644,14 @@ done: } -/* read_character()-- Read a character variable */ +/* Read a character variable. */ static void read_character (int length) { char c, quote, message[100]; - quote = ' '; /* Space means no quote character */ + quote = ' '; /* Space means no quote character. */ c = next_char (); switch (c) @@ -666,7 +661,7 @@ read_character (int length) break; CASE_SEPARATORS: - unget_char (c); /* NULL value */ + unget_char (c); /* NULL value. */ eat_separator (); return; @@ -680,7 +675,7 @@ read_character (int length) goto get_string; } -/* Deal with a possible repeat count */ + /* Deal with a possible repeat count. */ for (;;) { @@ -693,7 +688,7 @@ read_character (int length) CASE_SEPARATORS: unget_char (c); - goto done; /* String was only digits! */ + goto done; /* String was only digits! */ case '*': push_char ('\0'); @@ -701,7 +696,7 @@ read_character (int length) default: push_char (c); - goto get_string; /* Not a repeat count after all */ + goto get_string; /* Not a repeat count after all. */ } } @@ -709,13 +704,13 @@ got_repeat: if (convert_integer (-1, 0)) return; - /* Now get the real string */ + /* Now get the real string. */ c = next_char (); switch (c) { CASE_SEPARATORS: - unget_char (c); /* repeated NULL values */ + unget_char (c); /* Repeated NULL values. */ eat_separator (); return; @@ -743,7 +738,8 @@ get_string: break; } - /* See if we have a doubled quote character or the end of the string */ + /* See if we have a doubled quote character or the end of + the string. */ c = next_char (); if (c == quote) @@ -772,7 +768,8 @@ get_string: } } -/* At this point, we have to have a separator, or else the string is invalid */ +/* At this point, we have to have a separator, or else the string is + invalid. */ done: c = next_char (); @@ -791,9 +788,8 @@ done: } -/* parse_real()-- Parse a component of a complex constant or a real - * number that we are sure is already there. This is a straight real - * number parser. */ +/* Parse a component of a complex constant or a real number that we + are sure is already there. This is a straight real number parser. */ static int parse_real (void *buffer, int length) @@ -906,8 +902,8 @@ bad: } -/* read_complex()-- Reading a complex number is straightforward - * because we can tell what it is right away. */ +/* Reading a complex number is straightforward because we can tell + what it is right away. */ static void read_complex (int length) @@ -968,7 +964,7 @@ bad_complex: } -/* read_real()-- Parse a real number with a possible repeat count. */ +/* Parse a real number with a possible repeat count. */ static void read_real (int length) @@ -995,7 +991,7 @@ read_real (int length) goto got_sign; CASE_SEPARATORS: - unget_char (c); /* Single null */ + unget_char (c); /* Single null. */ eat_separator (); return; @@ -1003,7 +999,7 @@ read_real (int length) goto bad_real; } - /* Get the digit string that might be a repeat count */ + /* Get the digit string that might be a repeat count. */ for (;;) { @@ -1041,7 +1037,7 @@ read_real (int length) CASE_SEPARATORS: if (c != '\n') - unget_char (c); /* Real number that is just a digit-string */ + unget_char (c); /* Real number that is just a digit-string. */ goto done; default: @@ -1053,11 +1049,11 @@ got_repeat: if (convert_integer (-1, 0)) return; -/* Now get the number itself */ + /* Now get the number itself. */ c = next_char (); if (is_separator (c)) - { /* Repeated null value */ + { /* Repeated null value. */ unget_char (c); eat_separator (); return; @@ -1178,8 +1174,8 @@ bad_real: } -/* check_type()-- Check the current type against the saved type to - * make sure they are compatible. Returns nonzero if incompatible. */ +/* Check the current type against the saved type to make sure they are + compatible. Returns nonzero if incompatible. */ static int check_type (bt type, int len) @@ -1211,11 +1207,10 @@ check_type (bt type, int len) } -/* list_formatted_read()-- Top level data transfer subroutine for list - * reads. Because we have to deal with repeat counts, the data item - * is always saved after reading, usually in the value[] array. If a - * repeat count is greater than one, we copy the data item multiple - * times. */ +/* Top level data transfer subroutine for list reads. Because we have + to deal with repeat counts, the data item is always saved after + reading, usually in the value[] array. If a repeat count is + greater than one, we copy the data item multiple times. */ void list_formatted_read (bt type, void *p, int len) @@ -1240,7 +1235,7 @@ list_formatted_read (bt type, void *p, int len) c = eat_spaces (); if (is_separator (c)) - { /* Found a null value */ + { /* Found a null value. */ eat_separator (); repeat_count = 0; if (at_eol) @@ -1304,7 +1299,7 @@ set_value: { case BT_COMPLEX: len = 2 * len; - /* Fall through */ + /* Fall through. */ case BT_INTEGER: case BT_REAL: @@ -1318,7 +1313,8 @@ set_value: m = (len < saved_used) ? len : saved_used; memcpy (p, saved_string, m); } - else /* just delimiters encountered, nothing to copy but SPACE */ + else + /* Just delimiters encountered, nothing to copy but SPACE. */ m = 0; if (m < len) @@ -1339,7 +1335,7 @@ init_at_eol() at_eol = 0; } -/* finish_list_read()-- Finish a list read */ +/* Finish a list read. */ void finish_list_read (void) @@ -1386,7 +1382,7 @@ match_namelist_name (char *name, int len) char * namelist_name = name; name_len = 0; - /* Match the name of the namelist */ + /* Match the name of the namelist. */ if (tolower (next_char ()) != tolower (namelist_name[name_len++])) { @@ -1408,8 +1404,9 @@ match_namelist_name (char *name, int len) Namelist reads ********************************************************************/ -/* namelist_read()-- Process a namelist read. This subroutine - * initializes things, positions to the first element and */ +/* Process a namelist read. This subroutine initializes things, + positions to the first element and + FIXME: was this comment ever complete? */ void namelist_read (void) @@ -1449,10 +1446,10 @@ restart: return; } - /* Match the name of the namelist */ + /* Match the name of the namelist. */ match_namelist_name(ioparm.namelist_name, ioparm.namelist_name_len); - /* Ready to read namelist elements */ + /* Ready to read namelist elements. */ while (!input_complete) { c = next_char (); @@ -1509,7 +1506,7 @@ restart: { case BT_COMPLEX: len = 2 * len; - /* Fall through */ + /* Fall through... */ case BT_INTEGER: case BT_REAL: @@ -1537,4 +1534,3 @@ restart: } } } - diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c index f88bdeccf59..2d04537045f 100644 --- a/libgfortran/io/open.c +++ b/libgfortran/io/open.c @@ -1,5 +1,4 @@ - -/* Copyright (C) 2002-2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of the GNU Fortran 95 runtime library (libgfortran). @@ -134,10 +133,10 @@ static st_option access_opt[] = { }; -/* test_endfile()-- Given a unit, test to see if the file is - * positioned at the terminal point, and if so, change state from - * NO_ENDFILE flag to AT_ENDFILE. This prevents us from changing the - * state from AFTER_ENDFILE to AT_ENDFILE. */ +/* Given a unit, test to see if the file is positioned at the terminal + point, and if so, change state from NO_ENDFILE flag to AT_ENDFILE. + This prevents us from changing the state from AFTER_ENDFILE to + AT_ENDFILE. */ void test_endfile (gfc_unit * u) @@ -148,14 +147,14 @@ test_endfile (gfc_unit * u) } -/* edit_modes()-- Change the modes of a file, those that are allowed - * to be changed. */ +/* Change the modes of a file, those that are allowed * to be + changed. */ static void edit_modes (gfc_unit * u, unit_flags * flags) { - /* Complain about attempts to change the unchangeable */ + /* Complain about attempts to change the unchangeable. */ if (flags->status != STATUS_UNSPECIFIED && u->flags.status != flags->position) @@ -178,7 +177,7 @@ edit_modes (gfc_unit * u, unit_flags * flags) generate_error (ERROR_BAD_OPTION, "Cannot change ACTION parameter in OPEN statement"); - /* Status must be OLD if present */ + /* Status must be OLD if present. */ if (flags->status != STATUS_UNSPECIFIED && flags->status != STATUS_OLD) generate_error (ERROR_BAD_OPTION, @@ -203,7 +202,8 @@ edit_modes (gfc_unit * u, unit_flags * flags) } if (ioparm.library_return == LIBRARY_OK) - { /* Change the changeable */ + { + /* Change the changeable: */ if (flags->blank != BLANK_UNSPECIFIED) u->flags.blank = flags->blank; if (flags->delim != DELIM_UNSPECIFIED) @@ -212,7 +212,7 @@ edit_modes (gfc_unit * u, unit_flags * flags) u->flags.pad = flags->pad; } - /* Reposition the file if necessary. */ + /* Reposition the file if necessary. */ switch (flags->position) { @@ -227,7 +227,7 @@ edit_modes (gfc_unit * u, unit_flags * flags) u->current_record = 0; u->last_record = 0; - test_endfile (u); /* We might be at the end */ + test_endfile (u); /* We might be at the end. */ break; case POSITION_APPEND: @@ -235,7 +235,7 @@ edit_modes (gfc_unit * u, unit_flags * flags) goto seek_error; u->current_record = 0; - u->endfile = AT_ENDFILE; /* We are at the end */ + u->endfile = AT_ENDFILE; /* We are at the end. */ break; seek_error: @@ -245,7 +245,7 @@ edit_modes (gfc_unit * u, unit_flags * flags) } -/* new_unit()-- Open an unused unit */ +/* Open an unused unit. */ void new_unit (unit_flags * flags) @@ -254,13 +254,13 @@ new_unit (unit_flags * flags) stream *s; char tmpname[5 /* fort. */ + 10 /* digits of unit number */ + 1 /* 0 */]; - /* Change unspecifieds to defaults */ + /* Change unspecifieds to defaults. */ if (flags->access == ACCESS_UNSPECIFIED) flags->access = ACCESS_SEQUENTIAL; if (flags->action == ACTION_UNSPECIFIED) - flags->action = ACTION_READWRITE; /* Processor dependent */ + flags->action = ACTION_READWRITE; /* Processor dependent. */ if (flags->form == FORM_UNSPECIFIED) flags->form = (flags->access == ACCESS_SEQUENTIAL) @@ -321,7 +321,7 @@ new_unit (unit_flags * flags) if (flags->status == STATUS_UNSPECIFIED) flags->status = STATUS_UNKNOWN; - /* Checks */ + /* Checks. */ if (flags->access == ACCESS_DIRECT && ioparm.recl_in == 0) { @@ -362,7 +362,7 @@ new_unit (unit_flags * flags) internal_error ("new_unit(): Bad status"); } - /* Make sure the file isn't already open someplace else */ + /* Make sure the file isn't already open someplace else. */ if (find_file () != NULL) { @@ -370,7 +370,7 @@ new_unit (unit_flags * flags) goto cleanup; } - /* Open file */ + /* Open file. */ s = open_external (flags->action, flags->status); if (s == NULL) @@ -382,7 +382,7 @@ new_unit (unit_flags * flags) if (flags->status == STATUS_NEW || flags->status == STATUS_REPLACE) flags->status = STATUS_OLD; - /* Create the unit structure */ + /* Create the unit structure. */ u = get_mem (sizeof (gfc_unit) + ioparm.file_len); @@ -390,15 +390,15 @@ new_unit (unit_flags * flags) u->s = s; u->flags = *flags; - /* Unspecified recl ends up with a processor dependent value */ + /* Unspecified recl ends up with a processor dependent value. */ u->recl = (ioparm.recl_in != 0) ? ioparm.recl_in : DEFAULT_RECL; u->last_record = 0; u->current_record = 0; /* If the file is direct access, calculate the maximum record number - * via a division now instead of letting the multiplication overflow - * later. */ + via a division now instead of letting the multiplication overflow + later. */ if (flags->access == ACCESS_DIRECT) u->maxrec = g.max_offset / u->recl; @@ -409,25 +409,24 @@ new_unit (unit_flags * flags) insert_unit (u); /* The file is now connected. Errors after this point leave the - * file connected. Curiously, the standard requires that the - * position specifier be ignored for new files so a newly connected - * file starts out that the initial point. We still need to figure - * out if the file is at the end or not. */ + file connected. Curiously, the standard requires that the + position specifier be ignored for new files so a newly connected + file starts out that the initial point. We still need to figure + out if the file is at the end or not. */ test_endfile (u); cleanup: - /* Free memory associated with a temporary filename */ + /* Free memory associated with a temporary filename. */ if (flags->status == STATUS_SCRATCH) free_mem (ioparm.file); } -/* already_open()-- Open a unit which is already open. This involves - * changing the modes or closing what is there now and opening the new - * file. */ +/* Open a unit which is already open. This involves changing the + modes or closing what is there now and opening the new file. */ static void already_open (gfc_unit * u, unit_flags * flags) @@ -440,7 +439,7 @@ already_open (gfc_unit * u, unit_flags * flags) } /* If the file is connected to something else, close it and open a - * new unit */ + new unit. */ if (!compare_file_filename (u->s, ioparm.file, ioparm.file_len)) { @@ -458,8 +457,7 @@ already_open (gfc_unit * u, unit_flags * flags) } -/*************/ -/* open file */ +/* Open file. */ void st_open (void) @@ -469,7 +467,7 @@ st_open (void) library_start (); - /* Decode options */ + /* Decode options. */ flags.access = (ioparm.access == NULL) ? ACCESS_UNSPECIFIED : find_option (ioparm.access, ioparm.access_len, access_opt, diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index dc12745bb13..b6f7c0e0129 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -1,5 +1,4 @@ - -/* Copyright (C) 2002-2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of the GNU Fortran 95 runtime library (libgfortran). @@ -20,7 +19,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* transfer.c -- Top level handling of data transfer statements. */ +/* transfer.c -- Top level handling of data transfer statements. */ #include "config.h" #include @@ -30,30 +29,29 @@ Boston, MA 02111-1307, USA. */ /* Calling conventions: Data transfer statements are unlike other - * library calls in that they extend over several calls. - - * The first call is always a call to st_read() or st_write(). These - * subroutines return no status unless a namelist read or write is - * being done, in which case there is the usual status. No further - * calls are necessary in this case. - * - * For other sorts of data transfer, there are zero or more data - * transfer statement that depend on the format of the data transfer - * statement. - * - * transfer_integer - * transfer_logical - * transfer_character - * transfer_real - * transfer_complex - * - * These subroutines do not return status. - * - * The last call is a call to st_[read|write]_done(). While - * something can easily go wrong with the initial st_read() or - * st_write(), an error inhibits any data from actually being - * transferred. - */ + library calls in that they extend over several calls. + + The first call is always a call to st_read() or st_write(). These + subroutines return no status unless a namelist read or write is + being done, in which case there is the usual status. No further + calls are necessary in this case. + + For other sorts of data transfer, there are zero or more data + transfer statement that depend on the format of the data transfer + statement. + + transfer_integer + transfer_logical + transfer_character + transfer_real + transfer_complex + + These subroutines do not return status. + + The last call is a call to st_[read|write]_done(). While + something can easily go wrong with the initial st_read() or + st_write(), an error inhibits any data from actually being + transferred. */ gfc_unit *current_unit; static int sf_seen_eor = 0; @@ -101,20 +99,20 @@ current_mode (void) /* Mid level data transfer statements. These subroutines do reading - * and writing in the style of salloc_r()/salloc_w() within the - * current record. */ - -/* read_sf()-- When reading sequential formatted records we have a - * problem. We don't know how long the line is until we read the - * trailing newline, and we don't want to read too much. If we read - * too much, we might have to do a physical seek backwards depending - * on how much data is present, and devices like terminals aren't - * seekable and would cause an I/O error. - * - * Given this, the solution is to read a byte at a time, stopping if - * we hit the newline. For small locations, we use a static buffer. - * For larger allocations, we are forced to allocate memory on the - * heap. Hopefully this won't happen very often. */ + and writing in the style of salloc_r()/salloc_w() within the + current record. */ + +/* When reading sequential formatted records we have a problem. We + don't know how long the line is until we read the trailing newline, + and we don't want to read too much. If we read too much, we might + have to do a physical seek backwards depending on how much data is + present, and devices like terminals aren't seekable and would cause + an I/O error. + + Given this, the solution is to read a byte at a time, stopping if + we hit the newline. For small locations, we use a static buffer. + For larger allocations, we are forced to allocate memory on the + heap. Hopefully this won't happen very often. */ static char * read_sf (int *length) @@ -138,7 +136,8 @@ read_sf (int *length) { if (is_internal_unit()) { - /* unity may be modified inside salloc_r if is_internal_unit() is true */ + /* unity may be modified inside salloc_r if + is_internal_unit() is true. */ unity = 1; } @@ -149,11 +148,11 @@ read_sf (int *length) if (*q == '\n') { if (current_unit->unit_number == options.stdin_unit) - { + { if (n <= 0) continue; - } - /* Unexpected end of line */ + } + /* Unexpected end of line. */ if (current_unit->flags.pad == PAD_NO) { generate_error (ERROR_EOR, NULL); @@ -176,15 +175,15 @@ read_sf (int *length) } -/* read_block()-- Function for reading the next couple of bytes from - * the current file, advancing the current position. We return a - * pointer to a buffer containing the bytes. We return NULL on end of - * record or end of file. - * - * If the read is short, then it is because the current record does not - * have enough data to satisfy the read request and the file was - * opened with PAD=YES. The caller must assume tailing spaces for - * short reads. */ +/* Function for reading the next couple of bytes from the current + file, advancing the current position. We return a pointer to a + buffer containing the bytes. We return NULL on end of record or + end of file. + + If the read is short, then it is because the current record does not + have enough data to satisfy the read request and the file was + opened with PAD=YES. The caller must assume tailing spaces for + short reads. */ void * read_block (int *length) @@ -194,13 +193,13 @@ read_block (int *length) if (current_unit->flags.form == FORM_FORMATTED && current_unit->flags.access == ACCESS_SEQUENTIAL) - return read_sf (length); /* Special case */ + return read_sf (length); /* Special case. */ if (current_unit->bytes_left < *length) { if (current_unit->flags.pad == PAD_NO) { - generate_error (ERROR_EOR, NULL); /* Not enough data left */ + generate_error (ERROR_EOR, NULL); /* Not enough data left. */ return NULL; } @@ -216,7 +215,7 @@ read_block (int *length) *ioparm.size += nread; if (nread != *length) - { /* Short read, this shouldn't happen */ + { /* Short read, this shouldn't happen. */ if (current_unit->flags.pad == PAD_YES) *length = nread; else @@ -230,10 +229,10 @@ read_block (int *length) } -/* write_block()-- Function for writing a block of bytes to the - * current file at the current position, advancing the file pointer. - * We are given a length and return a pointer to a buffer that the - * caller must (completely) fill in. Returns NULL on error. */ +/* Function for writing a block of bytes to the current file at the + current position, advancing the file pointer. We are given a length + and return a pointer to a buffer that the caller must (completely) + fill in. Returns NULL on error. */ void * write_block (int length) @@ -256,7 +255,7 @@ write_block (int length) } -/* unformatted_read()-- Master function for unformatted reads. */ +/* Master function for unformatted reads. */ static void unformatted_read (bt type, void *dest, int length) @@ -274,6 +273,8 @@ unformatted_read (bt type, void *dest, int length) } } +/* Master function for unformatted writes. */ + static void unformatted_write (bt type, void *source, int length) { @@ -284,7 +285,7 @@ unformatted_write (bt type, void *source, int length) } -/* type_name()-- Return a pointer to the name of a type. */ +/* Return a pointer to the name of a type. */ const char * type_name (bt type) @@ -316,9 +317,9 @@ type_name (bt type) } -/* write_constant_string()-- write a constant string to the output. - * This is complicated because the string can have doubled delimiters - * in it. The length in the format node is the true length. */ +/* Write a constant string to the output. + This is complicated because the string can have doubled delimiters + in it. The length in the format node is the true length. */ static void write_constant_string (fnode * f) @@ -341,14 +342,14 @@ write_constant_string (fnode * f) { c = *p++ = *q++; if (c == delimiter && c != 'H') - q++; /* Skip the doubled delimiter */ + q++; /* Skip the doubled delimiter. */ } } -/* require_type()-- Given actual and expected types in a formatted - * data transfer, make sure they agree. If not, an error message is - * generated. Returns nonzero if something went wrong. */ +/* Given actual and expected types in a formatted data transfer, make + sure they agree. If not, an error message is generated. Returns + nonzero if something went wrong. */ static int require_type (bt expected, bt actual, fnode * f) @@ -366,14 +367,13 @@ require_type (bt expected, bt actual, fnode * f) } -/* formatted_transfer()-- This subroutine is the main loop for a - * formatted data transfer statement. It would be natural to - * implement this as a coroutine with the user program, but C makes - * that awkward. We loop, processesing format elements. When we - * actually have to transfer data instead of just setting flags, we - * return control to the user program which calls a subroutine that - * supplies the address and type of the next element, then comes back - * here to process it. */ +/* This subroutine is the main loop for a formatted data transfer + statement. It would be natural to implement this as a coroutine + with the user program, but C makes that awkward. We loop, + processesing format elements. When we actually have to transfer + data instead of just setting flags, we return control to the user + program which calls a subroutine that supplies the address and type + of the next element, then comes back here to process it. */ static void formatted_transfer (bt type, void *p, int len) @@ -383,14 +383,14 @@ formatted_transfer (bt type, void *p, int len) int i, n; int consume_data_flag; - /* Change a complex data item into a pair of reals */ + /* Change a complex data item into a pair of reals. */ n = (p == NULL) ? 0 : ((type != BT_COMPLEX) ? 1 : 2); if (type == BT_COMPLEX) type = BT_REAL; /* If reversion has occurred and there is another real data item, - * then we have to move to the next record */ + then we have to move to the next record. */ if (g.reversion_flag && n > 0) { @@ -405,7 +405,7 @@ formatted_transfer (bt type, void *p, int len) f = next_format (); if (f == NULL) - return; /* No data descriptors left (already raised) */ + return; /* No data descriptors left (already raised). */ switch (f->format) { @@ -598,7 +598,7 @@ formatted_transfer (bt type, void *p, int len) write_constant_string (f); break; - /* Format codes that don't transfer data */ + /* Format codes that don't transfer data. */ case FMT_X: case FMT_TR: consume_data_flag = 0 ; @@ -690,9 +690,10 @@ formatted_transfer (bt type, void *p, int len) break; case FMT_COLON: - /* A colon descriptor causes us to exit this loop (in particular - * preventing another / descriptor from being processed) unless there - * is another data item to be transferred. */ + /* A colon descriptor causes us to exit this loop (in + particular preventing another / descriptor from being + processed) unless there is another data item to be + transferred. */ consume_data_flag = 0 ; if (n == 0) return; @@ -703,8 +704,8 @@ formatted_transfer (bt type, void *p, int len) } /* Free a buffer that we had to allocate during a sequential - * formatted read of a block that was larger than the static - * buffer. */ + formatted read of a block that was larger than the static + buffer. */ if (line_buffer != NULL) { @@ -712,7 +713,7 @@ formatted_transfer (bt type, void *p, int len) line_buffer = NULL; } - /* Adjust the item count and data pointer */ + /* Adjust the item count and data pointer. */ if ((consume_data_flag > 0) && (n > 0)) { @@ -724,8 +725,8 @@ formatted_transfer (bt type, void *p, int len) return; /* Come here when we need a data descriptor but don't have one. We - * push the current format node back onto the input, then return and - * let the user program call us back with the data. */ + push the current format node back onto the input, then return and + let the user program call us back with the data. */ need_data: unget_format (f); @@ -734,8 +735,8 @@ need_data: /* Data transfer entry points. The type of the data entity is - * implicit in the subroutine call. This prevents us from having to - * share a common enum with the compiler. */ + implicit in the subroutine call. This prevents us from having to + share a common enum with the compiler. */ void transfer_integer (void *p, int kind) @@ -792,7 +793,7 @@ transfer_complex (void *p, int kind) } -/* us_read()-- Preposition a sequential unformatted file while reading. */ +/* Preposition a sequential unformatted file while reading. */ static void us_read (void) @@ -813,9 +814,8 @@ us_read (void) } -/* us_write()-- Preposition a sequential unformatted file while - * writing. This amount to writing a bogus length that will be filled - * in later. */ +/* Preposition a sequential unformatted file while writing. This + amount to writing a bogus length that will be filled in later. */ static void us_write (void) @@ -832,29 +832,29 @@ us_write (void) return; } - *p = 0; /* Bogus value for now */ + *p = 0; /* Bogus value for now. */ if (sfree (current_unit->s) == FAILURE) generate_error (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 */ + /* 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. */ current_unit->recl = g.max_offset; current_unit->bytes_left = current_unit->recl; } -/* pre_position()-- position to the next record prior to transfer. We - * are assumed to be before the next record. We also calculate the - * bytes in the next record. */ +/* Position to the next record prior to transfer. We are assumed to + be before the next record. We also calculate the bytes in the next + record. */ static void pre_position (void) { if (current_unit->current_record) - return; /* Already positioned */ + return; /* Already positioned. */ switch (current_mode ()) { @@ -877,26 +877,26 @@ pre_position (void) } -/* data_transfer_init()-- Initialize things for a data transfer. This - * code is common for both reading and writing. */ +/* Initialize things for a data transfer. This code is common for + both reading and writing. */ static void data_transfer_init (int read_flag) { - unit_flags u_flags; /* used for creating a unit if needed */ + unit_flags u_flags; /* Used for creating a unit if needed. */ g.mode = read_flag ? READING : WRITING; if (ioparm.size != NULL) - *ioparm.size = 0; /* Initialize the count */ + *ioparm.size = 0; /* Initialize the count. */ current_unit = get_unit (read_flag); if (current_unit == NULL) - { /* open the unit with some default flags */ + { /* Open the unit with some default flags. */ memset (&u_flags, '\0', sizeof (u_flags)); u_flags.access = ACCESS_SEQUENTIAL; u_flags.action = ACTION_READWRITE; - /* is it unformatted ?*/ + /* Is it unformatted? */ if (ioparm.format == NULL && !ioparm.list_format) u_flags.form = FORM_UNFORMATTED; else @@ -919,7 +919,7 @@ data_transfer_init (int read_flag) empty_internal_buffer (current_unit->s); } - /* Check the action */ + /* Check the action. */ if (read_flag && current_unit->flags.action == ACTION_WRITE) generate_error (ERROR_BAD_ACTION, @@ -931,7 +931,7 @@ data_transfer_init (int read_flag) if (ioparm.library_return != LIBRARY_OK) return; - /* Check the format */ + /* Check the format. */ if (ioparm.format) parse_format (); @@ -960,7 +960,7 @@ data_transfer_init (int read_flag) generate_error (ERROR_OPTION_CONFLICT, "Internal file cannot be accessed by UNFORMATTED data transfer"); - /* Check the record number */ + /* Check the record number. */ if (current_unit->flags.access == ACCESS_DIRECT && ioparm.rec == 0) { @@ -976,7 +976,7 @@ data_transfer_init (int read_flag) return; } - /* Process the ADVANCE option */ + /* Process the ADVANCE option. */ advance_status = (ioparm.advance == NULL) ? ADVANCE_UNSPECIFIED : find_option (ioparm.advance, ioparm.advance_len, advance_opt, @@ -1009,8 +1009,7 @@ data_transfer_init (int read_flag) } else - { /* Write constraints */ - + { /* Write constraints. */ if (ioparm.end != 0) generate_error (ERROR_OPTION_CONFLICT, "END specification cannot appear in a write statement"); @@ -1029,7 +1028,7 @@ data_transfer_init (int read_flag) if (ioparm.library_return != LIBRARY_OK) return; - /* Sanity checks on the record number */ + /* Sanity checks on the record number. */ if (ioparm.rec) { @@ -1045,14 +1044,14 @@ data_transfer_init (int read_flag) return; } - /* Position the file */ + /* Position the file. */ if (sseek (current_unit->s, (ioparm.rec - 1) * current_unit->recl) == FAILURE) generate_error (ERROR_OS, NULL); } - /* Set the initial value of flags */ + /* Set the initial value of flags. */ g.blank_status = current_unit->flags.blank; g.sign_status = SIGN_S; @@ -1063,7 +1062,7 @@ data_transfer_init (int read_flag) pre_position (); - /* Set up the subroutine that will handle the transfers */ + /* Set up the subroutine that will handle the transfers. */ if (read_flag) { @@ -1093,7 +1092,7 @@ data_transfer_init (int read_flag) } } - /* Make sure that we don't do a read after a nonadvancing write */ + /* Make sure that we don't do a read after a nonadvancing write. */ if (read_flag) { @@ -1110,7 +1109,7 @@ data_transfer_init (int read_flag) current_unit->read_bad = 1; } - /* Start the data transfer if we are doing a formatted transfer */ + /* Start the data transfer if we are doing a formatted transfer. */ if (current_unit->flags.form == FORM_FORMATTED && !ioparm.list_format && ioparm.namelist_name == NULL && ionml == NULL) @@ -1119,9 +1118,9 @@ data_transfer_init (int read_flag) } -/* next_record_r()-- Space to the next record for read mode. If the - * file is not seekable, we read MAX_READ chunks until we get to the - * right position. */ +/* Space to the next record for read mode. If the file is not + seekable, we read MAX_READ chunks until we get to the right + position. */ #define MAX_READ 4096 @@ -1137,7 +1136,7 @@ next_record_r (int done) case UNFORMATTED_SEQUENTIAL: current_unit->bytes_left += sizeof (gfc_offset); /* Skip over tail */ - /* Fall through */ + /* Fall through... */ case FORMATTED_DIRECT: case UNFORMATTED_DIRECT: @@ -1148,14 +1147,14 @@ next_record_r (int done) { new = file_position (current_unit->s) + current_unit->bytes_left; - /* Direct access files do not generate END conditions, only I/O errors */ - + /* Direct access files do not generate END conditions, + only I/O errors. */ if (sseek (current_unit->s, new) == FAILURE) generate_error (ERROR_OS, NULL); } else - { /* Seek by reading data */ + { /* Seek by reading data. */ while (current_unit->bytes_left > 0) { rlength = length = (MAX_READ > current_unit->bytes_left) ? @@ -1183,7 +1182,7 @@ next_record_r (int done) { p = salloc_r (current_unit->s, &length); - /*In case of internal file, there may not be any '\n'.*/ + /* In case of internal file, there may not be any '\n'. */ if (is_internal_unit() && p == NULL) { break; @@ -1211,7 +1210,7 @@ next_record_r (int done) } -/* next_record_w()-- Position to the next record in write mode */ +/* Position to the next record in write mode. */ static void next_record_w (int done) @@ -1243,12 +1242,12 @@ next_record_w (int done) break; case UNFORMATTED_SEQUENTIAL: - m = current_unit->recl - current_unit->bytes_left; /* Bytes written */ + m = current_unit->recl - current_unit->bytes_left; /* Bytes written. */ c = file_position (current_unit->s); length = sizeof (gfc_offset); - /* Write the length tail */ + /* Write the length tail. */ p = salloc_w (current_unit->s, &length); if (p == NULL) @@ -1258,7 +1257,8 @@ next_record_w (int done) if (sfree (current_unit->s) == FAILURE) goto io_error; - /* Seek to the head and overwrite the bogus length with the real length */ + /* Seek to the head and overwrite the bogus length with the real + length. */ p = salloc_w_at (current_unit->s, &length, c - m - length); if (p == NULL) @@ -1268,7 +1268,7 @@ next_record_w (int done) if (sfree (current_unit->s) == FAILURE) goto io_error; - /* Seek past the end of the current record */ + /* Seek past the end of the current record. */ if (sseek (current_unit->s, c + sizeof (gfc_offset)) == FAILURE) goto io_error; @@ -1282,7 +1282,7 @@ next_record_w (int done) if (!is_internal_unit()) { if (p) - *p = '\n'; /* no CR for internal writes */ + *p = '\n'; /* No CR for internal writes. */ else goto io_error; } @@ -1299,15 +1299,15 @@ next_record_w (int done) } -/* next_record()-- Position to the next record, which means moving to - * the end of the current record. This can happen under several - * different conditions. If the done flag is not set, we get ready to - * process the next record. */ +/* Position to the next record, which means moving to the end of the + current record. This can happen under several different + conditions. If the done flag is not set, we get ready to process + the next record. */ void next_record (int done) { - gfc_offset fp; /* file position */ + gfc_offset fp; /* File position. */ current_unit->read_bad = 0; @@ -1333,7 +1333,7 @@ next_record (int done) /* Finalize the current data transfer. For a nonadvancing transfer, - * this means advancing to the next record. */ + this means advancing to the next record. */ static void finalize_transfer (void) @@ -1430,7 +1430,7 @@ st_iolength_done (void) } -/* The READ statement */ +/* The READ statement. */ void st_read (void) @@ -1441,9 +1441,9 @@ st_read (void) data_transfer_init (1); /* Handle complications dealing with the endfile record. It is - * significant that this is the only place where ERROR_END is - * generated. Reading an end of file elsewhere is either end of - * record or an I/O error. */ + significant that this is the only place where ERROR_END is + generated. Reading an end of file elsewhere is either end of + record or an I/O error. */ if (current_unit->flags.access == ACCESS_SEQUENTIAL) switch (current_unit->endfile) @@ -1490,19 +1490,19 @@ st_write_done (void) finalize_transfer (); - /* Deal with endfile conditions associated with sequential files */ + /* Deal with endfile conditions associated with sequential files. */ if (current_unit != NULL && current_unit->flags.access == ACCESS_SEQUENTIAL) switch (current_unit->endfile) { - case AT_ENDFILE: /* Remain at the endfile record */ + case AT_ENDFILE: /* Remain at the endfile record. */ break; case AFTER_ENDFILE: - current_unit->endfile = AT_ENDFILE; /* Just at it now */ + current_unit->endfile = AT_ENDFILE; /* Just at it now. */ break; - case NO_ENDFILE: /* Get rid of whatever is after this record */ + case NO_ENDFILE: /* Get rid of whatever is after this record. */ if (struncate (current_unit->s) == FAILURE) generate_error (ERROR_OS, NULL); @@ -1519,8 +1519,7 @@ st_set_nml_var (void * var_addr, char * var_name, int var_name_len, int kind, bt type, int string_length) { namelist_info *t1 = NULL, *t2 = NULL; - namelist_info *nml = (namelist_info *) get_mem (sizeof( - namelist_info )); + namelist_info *nml = (namelist_info *) get_mem (sizeof (namelist_info)); nml->mem_pos = var_addr; if (var_name) { @@ -1557,37 +1556,42 @@ st_set_nml_var (void * var_addr, char * var_name, int var_name_len, void st_set_nml_var_int (void * var_addr, char * var_name, int var_name_len, - int kind) + int kind) { - st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_INTEGER, 0); + + st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_INTEGER, 0); } void st_set_nml_var_float (void * var_addr, char * var_name, int var_name_len, - int kind) + int kind) { - st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_REAL, 0); + + st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_REAL, 0); } void st_set_nml_var_char (void * var_addr, char * var_name, int var_name_len, - int kind, gfc_strlen_type string_length) + int kind, gfc_strlen_type string_length) { - st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_CHARACTER, - string_length); + + st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_CHARACTER, + string_length); } void st_set_nml_var_complex (void * var_addr, char * var_name, int var_name_len, - int kind) + int kind) { - st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_COMPLEX, 0); + + st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_COMPLEX, 0); } void st_set_nml_var_log (void * var_addr, char * var_name, int var_name_len, - int kind) + int kind) { + st_set_nml_var (var_addr, var_name, var_name_len, kind, BT_LOGICAL, 0); } diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index 67c769ae920..551e686b753 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of the GNU Fortran 95 runtime library (libgfortran). @@ -104,9 +104,8 @@ extract_real (const void *p, int len) } -/* calculate sign()-- Given a flag that indicate if a value is - * negative or not, return a sign_t that gives the sign that we need - * to produce. */ +/* Given a flag that indicate if a value is negative or not, return a + sign_t that gives the sign that we need to produce. */ static sign_t calculate_sign (int negative_flag) @@ -133,7 +132,7 @@ calculate_sign (int negative_flag) } -/* calculate_exp()-- returns the value of 10**d. */ +/* Returns the value of 10**d. */ static double calculate_exp (int d) @@ -150,8 +149,7 @@ calculate_exp (int d) } -/* calculate_G_format()-- geneate corresponding I/O format for - FMT_G output. +/* Generate corresponding I/O format for FMT_G output. The rules to translate FMT_G to FMT_E or FNT_F from DEC fortran LRM (table 11-2, Chapter 11, "I/O Formatting", P11-25) is: @@ -252,8 +250,7 @@ calculate_G_format (fnode *f, double value, int len, int *num_blank) } -/* output_float() -- output a real number according to its format - which is FMT_G free */ +/* Output a real number according to its format which is FMT_G free. */ static void output_float (fnode *f, double value, int len) @@ -275,17 +272,17 @@ output_float (fnode *f, double value, int len) int intval = 0, intlen = 0; int j; - /* EXP value for this number */ + /* EXP value for this number. */ neval = 0; - /* Width of EXP and it's sign*/ + /* Width of EXP and it's sign. */ nesign = 0; ft = f->format; w = f->u.real.w; d = f->u.real.d + 1; - /* Width of the EXP */ + /* Width of the EXP. */ e = 0; sca = g.scale_factor; @@ -295,7 +292,7 @@ output_float (fnode *f, double value, int len) if (n < 0) n = -n; - /* Width of the sign for the whole number */ + /* Width of the sign for the whole number. */ nsign = (sign == SIGN_NONE ? 0 : 1); digits = 0; @@ -312,8 +309,8 @@ output_float (fnode *f, double value, int len) minv = 0.1; maxv = 1.0; - /* Here calculate the new val of the number with consideration - of Globle Scale value */ + /* Calculate the new val of the number with consideration + of global scale value. */ while (sca > 0) { minv *= 10.0; @@ -323,7 +320,7 @@ output_float (fnode *f, double value, int len) neval --; } - /* Now calculate the new Exp value for this number */ + /* Now calculate the new Exp value for this number. */ sca = g.scale_factor; while(sca >= 1) { @@ -343,7 +340,7 @@ output_float (fnode *f, double value, int len) maxv = 10.0; } - /* OK, let's scale the number to appropriate range */ + /* OK, let's scale the number to appropriate range. */ while (scale_flag && n > 0.0 && n < minv) { if (n < minv) @@ -361,12 +358,11 @@ output_float (fnode *f, double value, int len) } } - /* It is time to process the EXP part of the number. - Value of 'nesign' is 0 unless following codes is executed. - */ + /* It is time to process the EXP part of the number. + Value of 'nesign' is 0 unless following codes is executed. */ if (ft != FMT_F) { - /* Sign of the EXP value */ + /* Sign of the EXP value. */ if (neval >= 0) esign = SIGN_PLUS; else @@ -375,7 +371,7 @@ output_float (fnode *f, double value, int len) neval = - neval ; } - /* Width of the EXP*/ + /* Width of the EXP. */ e_new = 0; j = neval; while (j > 0) @@ -386,15 +382,15 @@ output_float (fnode *f, double value, int len) if (e <= e_new) e = e_new; - /* Got the width of EXP */ + /* Got the width of EXP. */ if (e < digits) e = digits ; - /* Minimum value of the width would be 2 */ + /* Minimum value of the width would be 2. */ if (e < 2) e = 2; - nesign = 1 ; /* We must give a position for the 'exp_char' */ + nesign = 1 ; /* We must give a position for the 'exp_char' */ if (e > 0) nesign = e + nesign + (esign != SIGN_NONE ? 1 : 0); } @@ -424,7 +420,7 @@ output_float (fnode *f, double value, int len) nesign -= 1; nblank = w - (nsign + intlen + d + nesign); } - /* don't let a leading '0' cause field overflow */ + /* Don't let a leading '0' cause field overflow. */ if (nblank == -1 && ft == FMT_F && q[0] == '0') { q++; @@ -487,7 +483,7 @@ write_l (fnode * f, char *source, int len) { char *p; int64_t n; - + p = write_block (f->u.w); if (p == NULL) return; @@ -497,7 +493,7 @@ write_l (fnode * f, char *source, int len) p[f->u.w - 1] = (n) ? 'T' : 'F'; } -/* write_float() -- output a real number according to its format */ +/* Output a real number according to its format. */ static void write_float (fnode *f, const char *source, int len) @@ -562,7 +558,7 @@ write_float (fnode *f, const char *source, int len) p = write_block (nb); memset (p, ' ', nb); } - } + } } @@ -579,7 +575,7 @@ write_int (fnode *f, const char *source, int len, char *(*conv) (uint64_t)) n = extract_int (source, len); - /* Special case */ + /* Special case: */ if (m == 0 && n == 0) { @@ -606,7 +602,7 @@ write_int (fnode *f, const char *source, int len, char *(*conv) (uint64_t)) digits = strlen (q); /* Select a width if none was specified. The idea here is to always - * print something. */ + print something. */ if (w == 0) w = ((digits < m) ? m : digits); @@ -619,7 +615,7 @@ write_int (fnode *f, const char *source, int len, char *(*conv) (uint64_t)) if (digits < m) nzero = m - digits; - /* See if things will work */ + /* See if things will work. */ nblank = w - (nzero + digits); @@ -654,7 +650,7 @@ write_decimal (fnode *f, const char *source, int len, char *(*conv) (int64_t)) n = extract_int (source, len); - /* Special case */ + /* Special case: */ if (m == 0 && n == 0) { @@ -679,7 +675,7 @@ write_decimal (fnode *f, const char *source, int len, char *(*conv) (int64_t)) digits = strlen (q); /* Select a width if none was specified. The idea here is to always - * print something. */ + print something. */ if (w == 0) w = ((digits < m) ? m : digits) + nsign; @@ -692,7 +688,7 @@ write_decimal (fnode *f, const char *source, int len, char *(*conv) (int64_t)) if (digits < m) nzero = m - digits; - /* See if things will work */ + /* See if things will work. */ nblank = w - (nsign + nzero + digits); @@ -727,7 +723,7 @@ done: } -/* otoa()-- Convert unsigned octal to ascii */ +/* Convert unsigned octal to ascii. */ static char * otoa (uint64_t n) @@ -755,7 +751,7 @@ otoa (uint64_t n) } -/* btoa()-- Convert unsigned binary to ascii */ +/* Convert unsigned binary to ascii. */ static char * btoa (uint64_t n) @@ -816,6 +812,7 @@ write_z (fnode * f, const char *p, int len) void write_d (fnode *f, const char *p, int len) { + write_float (f, p, len); } @@ -823,6 +820,7 @@ write_d (fnode *f, const char *p, int len) void write_e (fnode *f, const char *p, int len) { + write_float (f, p, len); } @@ -830,6 +828,7 @@ write_e (fnode *f, const char *p, int len) void write_f (fnode *f, const char *p, int len) { + write_float (f, p, len); } @@ -837,6 +836,7 @@ write_f (fnode *f, const char *p, int len) void write_en (fnode *f, const char *p, int len) { + write_float (f, p, len); } @@ -844,11 +844,12 @@ write_en (fnode *f, const char *p, int len) void write_es (fnode *f, const char *p, int len) { + write_float (f, p, len); } -/* write_x()-- Take care of the X/TR descriptor */ +/* Take care of the X/TR descriptor. */ void write_x (fnode * f) @@ -863,11 +864,11 @@ write_x (fnode * f) } -/* List-directed writing */ +/* List-directed writing. */ -/* write_char()-- Write a single character to the output. Returns - * nonzero if something goes wrong. */ +/* Write a single character to the output. Returns nonzero if + something goes wrong. */ static int write_char (char c) @@ -884,7 +885,7 @@ write_char (char c) } -/* write_logical()-- Write a list-directed logical value */ +/* Write a list-directed logical value. */ static void write_logical (const char *source, int length) @@ -893,7 +894,7 @@ write_logical (const char *source, int length) } -/* write_integer()-- Write a list-directed integer value. */ +/* Write a list-directed integer value. */ static void write_integer (const char *source, int length) @@ -939,9 +940,8 @@ write_integer (const char *source, int length) } -/* write_character()-- Write a list-directed string. We have to worry - * about delimiting the strings if the file has been opened in that - * mode. */ +/* Write a list-directed string. We have to worry about delimiting + the strings if the file has been opened in that mode. */ static void write_character (const char *source, int length) @@ -995,8 +995,8 @@ write_character (const char *source, int length) } -/* Output the Real number with default format. - REAL(4) is 1PG14.7E2, and REAL(8) is 1PG23.15E3 */ +/* Output a real number with default format. + This is 1PG14.7E2 for REAL(4) and 1PG23.15E3 for REAL(8). */ static void write_real (const char *source, int length) @@ -1038,7 +1038,7 @@ write_complex (const char *source, int len) } -/* write_separator()-- Write the separator between items. */ +/* Write the separator between items. */ static void write_separator (void) @@ -1053,9 +1053,9 @@ write_separator (void) } -/* list_formatted_write()-- Write an item with list formatting. - * TODO: handle skipping to the next record correctly, particularly - * with strings. */ +/* Write an item with list formatting. + TODO: handle skipping to the next record correctly, particularly + with strings. */ void list_formatted_write (bt type, void *p, int len) @@ -1160,4 +1160,3 @@ namelist_write (void) write_character("/",1); } - -- 2.30.2