This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Some NAMELIST tidying up


The comments in the patch give the reasons.

Paul T


--- old_list_read.c 2004-12-04 21:10:40.597095400 +0100 +++ list_read.c 2004-12-04 21:19:21.300220400 +0100 @@ -1428,8 +1428,9 @@ { char c; int name_matched, next_name ; - namelist_info * nl; - int len, m; + namelist_info * nl; +/* Add char_len for CHARACTER namelist conversion PRT 22/11/2004 */ + int char_len, len, m; void * p;

namelist_mode = 1;
@@ -1446,6 +1447,9 @@
{
case ' ':
goto restart;
+/*modification to permit blank lines before namelist block PRT 11/22/2004*/
+ case '\n':
+ goto restart;
case '!':
do
c = next_char ();
@@ -1470,10 +1474,20 @@
c = next_char ();
switch (c)
{
- case '/':


- input_complete = 1;

- next_record (0);

- break; I do not believe this to be correct PRT 11/22/2004

+/* case '/':

+ input_complete = 1;

+ next_record (0);

+          break;
+I do not believe the above to be correct
+It should be the same as &end        PRT  11/22/2004  */
+        case '/':
+          return;
+/* allow comments within data block  PRT  11/22/2004*/
+        case '!':
+          do
+            c = next_char ();
+          while (c != '\n');
+          break;
        case '&':
          match_namelist_name("end",3);
          return;
@@ -1496,7 +1510,7 @@

          len = nl->len;
          p = nl->mem_pos;
-
+
          /* skip any blanks or tabs after the = */
          eat_spaces ();

@@ -1534,11 +1548,12 @@
              break;

            case BT_CHARACTER:
-             m = (len < saved_used) ? len : saved_used;
+/* nml->string_length used instead of nml->len        PRT 24/11/04 */
+              m = (char_len < saved_used) ? char_len : saved_used;
              memcpy (p, saved_string, m);

-              if (m < len)
-                memset (((char *) p) + m, ' ', len - m);
+              if (m < char_len)
+                memset (((char *) p) + m, ' ', char_len - m);
              break;

case BT_NULL:



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]