Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
a2c037bd
Commit
a2c037bd
authored
Feb 23, 2011
by
Janne Blomqvist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PR 47694 Read from named pipe fails
Co-Authored-By: Jerry DeLisle <jvdelisle@gcc.gnu.org> From-SVN: r170432
parent
ff72e86d
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
20 deletions
+30
-20
libgfortran/ChangeLog
+8
-0
libgfortran/io/fbuf.h
+6
-0
libgfortran/io/transfer.c
+16
-20
No files found.
libgfortran/ChangeLog
View file @
a2c037bd
2011-02-23 Janne Blomqvist <jb@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/47694
* io/fbuf.h (fbuf_getptr): New inline function.
* io/transfer.c (read_sf): Use fbuf_getptr and fbuf_getc to scan
through the string instead of fbuf_read.
2011-02-22 Tobias Burnus <burnus@net-b.de>
Kai-Uwe Eckhardt <kuehro@gmx.de>
...
...
libgfortran/io/fbuf.h
View file @
a2c037bd
...
...
@@ -78,4 +78,10 @@ fbuf_getc (gfc_unit * u)
return
fbuf_getc_refill
(
u
);
}
static
inline
char
*
fbuf_getptr
(
gfc_unit
*
u
)
{
return
(
char
*
)
(
u
->
fbuf
->
buf
+
u
->
fbuf
->
pos
);
}
#endif
libgfortran/io/transfer.c
View file @
a2c037bd
...
...
@@ -284,7 +284,8 @@ static char *
read_sf
(
st_parameter_dt
*
dtp
,
int
*
length
)
{
static
char
*
empty_string
[
0
];
char
*
base
,
*
p
,
q
;
char
*
base
;
int
q
,
q2
;
int
n
,
lorig
,
seen_comma
;
/* If we have seen an eor previously, return a length of 0. The
...
...
@@ -301,18 +302,18 @@ read_sf (st_parameter_dt *dtp, int * length)
/* Read data into format buffer and scan through it. */
lorig
=
*
length
;
base
=
p
=
fbuf_read
(
dtp
->
u
.
p
.
current_unit
,
length
);
base
=
fbuf_getptr
(
dtp
->
u
.
p
.
current_unit
);
if
(
base
==
NULL
)
return
NULL
;
while
(
n
<
*
length
)
{
q
=
*
p
;
if
(
q
==
'\n'
||
q
==
'\r'
)
q
=
fbuf_getc
(
dtp
->
u
.
p
.
current_unit
);
if
(
q
==
EOF
)
break
;
else
if
(
q
==
'\n'
||
q
==
'\r'
)
{
/* Unexpected end of line. Set the position. */
fbuf_seek
(
dtp
->
u
.
p
.
current_unit
,
n
+
1
,
SEEK_CUR
);
dtp
->
u
.
p
.
sf_seen_eor
=
1
;
/* If we see an EOR during non-advancing I/O, we need to skip
...
...
@@ -323,15 +324,12 @@ read_sf (st_parameter_dt *dtp, int * length)
/* If we encounter a CR, it might be a CRLF. */
if
(
q
==
'\r'
)
/* Probably a CRLF */
{
/* See if there is an LF. Use fbuf_read rather then fbuf_getc so
the position is not advanced unless it really is an LF. */
int
readlen
=
1
;
p
=
fbuf_read
(
dtp
->
u
.
p
.
current_unit
,
&
readlen
);
if
(
*
p
==
'\n'
&&
readlen
==
1
)
{
dtp
->
u
.
p
.
sf_seen_eor
=
2
;
fbuf_seek
(
dtp
->
u
.
p
.
current_unit
,
1
,
SEEK_CUR
);
}
/* See if there is an LF. */
q2
=
fbuf_getc
(
dtp
->
u
.
p
.
current_unit
);
if
(
q2
==
'\n'
)
dtp
->
u
.
p
.
sf_seen_eor
=
2
;
else
if
(
q2
!=
EOF
)
/* Oops, seek back. */
fbuf_seek
(
dtp
->
u
.
p
.
current_unit
,
-
1
,
SEEK_CUR
);
}
/* Without padding, terminate the I/O statement without assigning
...
...
@@ -349,20 +347,18 @@ read_sf (st_parameter_dt *dtp, int * length)
/* Short circuit the read if a comma is found during numeric input.
The flag is set to zero during character reads so that commas in
strings are not ignored */
if
(
q
==
','
)
else
if
(
q
==
','
)
if
(
dtp
->
u
.
p
.
sf_read_comma
==
1
)
{
seen_comma
=
1
;
notify_std
(
&
dtp
->
common
,
GFC_STD_GNU
,
"Comma in formatted numeric read."
);
*
length
=
n
;
break
;
}
n
++
;
p
++
;
}
}
fbuf_seek
(
dtp
->
u
.
p
.
current_unit
,
n
+
seen_comma
,
SEEK_CUR
)
;
*
length
=
n
;
/* A short read implies we hit EOF, unless we hit EOR, a comma, or
some other stuff. Set the relevant flags. */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment