aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2008-10-23 02:31:00 +0000
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2008-10-23 02:31:00 +0000
commitb71eda4d769adc97a6acd0ec1a2b6995f77655bc (patch)
tree0f795feb40442d1e9dcbe1cb9af2d4ad6fecd921 /libgfortran
parentd6ff6818b8bb8ed05d08596e0da5e56d59a018b6 (diff)
2008-10-22 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR libfortran/37707 * io/list_read.c (read_character): Remove code to look ahead in namelist reads to descriminate non-delimited strings from namelist objects. * io/write.c (namelist_write): Delimit character strings with quote or apostrophe, defaulting to quote. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141317 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog8
-rw-r--r--libgfortran/io/list_read.c48
-rw-r--r--libgfortran/io/write.c14
3 files changed, 11 insertions, 59 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 3802d69e969..be62b198ee4 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,11 @@
+2008-10-22 Jerry DeLisle <jvdelisle@gcc.gnu.org
+
+ PR libfortran/37707
+ * io/list_read.c (read_character): Remove code to look ahead in namelist
+ reads to descriminate non-delimited strings from namelist objects.
+ * io/write.c (namelist_write): Delimit character strings with quote or
+ apostrophe, defaulting to quote.
+
2008-10-21 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/34670
diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c
index 00cd841df24..1f1023c10d2 100644
--- a/libgfortran/io/list_read.c
+++ b/libgfortran/io/list_read.c
@@ -929,52 +929,8 @@ read_character (st_parameter_dt *dtp, int length __attribute__ ((unused)))
default:
if (dtp->u.p.namelist_mode)
{
- if (dtp->u.p.current_unit->delim_status == DELIM_APOSTROPHE
- || dtp->u.p.current_unit->delim_status == DELIM_QUOTE
- || c == '&' || c == '$' || c == '/')
- {
- unget_char (dtp, c);
- return;
- }
-
- /* Check to see if we are seeing a namelist object name by using the
- line buffer and looking ahead for an '=' or '('. */
- l_push_char (dtp, c);
-
- int i;
- for(i = 0; i < 63; i++)
- {
- c = next_char (dtp);
- if (is_separator(c))
- {
- unget_char (dtp, c);
- eat_separator (dtp);
- c = next_char (dtp);
- if (c != '=')
- {
- l_push_char (dtp, c);
- dtp->u.p.item_count = 0;
- dtp->u.p.line_buffer_enabled = 1;
- goto get_string;
- }
- }
-
- l_push_char (dtp, c);
-
- if (c == '=' || c == '(')
- {
- dtp->u.p.item_count = 0;
- dtp->u.p.nml_read_error = 1;
- dtp->u.p.line_buffer_enabled = 1;
- return;
- }
- }
-
- /* The string is too long to be a valid object name so assume that it
- is a string to be read in as a value. */
- dtp->u.p.item_count = 0;
- dtp->u.p.line_buffer_enabled = 1;
- goto get_string;
+ unget_char (dtp, c);
+ return;
}
push_char (dtp, c);
diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c
index 020f473da7f..12ff2953c62 100644
--- a/libgfortran/io/write.c
+++ b/libgfortran/io/write.c
@@ -1442,20 +1442,8 @@ namelist_write (st_parameter_dt *dtp)
/* Set the delimiter for namelist output. */
tmp_delim = dtp->u.p.current_unit->delim_status;
- switch (tmp_delim)
- {
- case (DELIM_QUOTE):
- dtp->u.p.nml_delim = '"';
- break;
-
- case (DELIM_APOSTROPHE):
- dtp->u.p.nml_delim = '\'';
- break;
- default:
- dtp->u.p.nml_delim = '\0';
- break;
- }
+ dtp->u.p.nml_delim = tmp_delim == DELIM_APOSTROPHE ? '\'' : '"';
/* Temporarily disable namelist delimters. */
dtp->u.p.current_unit->delim_status = DELIM_NONE;