This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
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: