Skip to content

Commit 4235a5c

Browse files
committed
reopen connection
1 parent c3f7cf6 commit 4235a5c

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

R/fread.R

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
# S3 generic for reopening connections in binary mode
2-
reopen_connection = function(con, ...) {
2+
reopen_connection = function(con, description, ...) {
33
UseMethod("reopen_connection")
44
}
55

6-
reopen_connection.default = function(con, ...) {
6+
reopen_connection.default = function(con, description, ...) {
77
con_class = class1(con)
88
stopf("Don't know how to reopen connection type '%s'. Need a connection opened in binary mode to continue.", con_class)
99
}
1010

11-
reopen_connection.file = function(con, ...) {
12-
file(summary(con)$description, "rb")
11+
reopen_connection.file = function(con, description, ...) {
12+
file(description, "rb")
1313
}
1414

15-
reopen_connection.gzfile = function(con, ...) {
16-
gzfile(summary(con)$description, "rb")
15+
reopen_connection.gzfile = function(con, description, ...) {
16+
gzfile(description, "rb")
1717
}
1818

19-
reopen_connection.bzfile = function(con, ...) {
20-
bzfile(summary(con)$description, "rb")
19+
reopen_connection.bzfile = function(con, description, ...) {
20+
bzfile(description, "rb")
2121
}
2222

23-
reopen_connection.url = function(con, ...) {
24-
url(summary(con)$description, "rb")
23+
reopen_connection.url = function(con, description, ...) {
24+
url(description, "rb")
2525
}
2626

27-
reopen_connection.unz = function(con, ...) {
28-
unz(summary(con)$description, "rb")
27+
reopen_connection.unz = function(con, description, ...) {
28+
unz(description, "rb")
2929
}
3030

31-
reopen_connection.pipe = function(con, ...) {
32-
pipe(summary(con)$description, "rb")
31+
reopen_connection.pipe = function(con, description, ...) {
32+
pipe(description, "rb")
3333
}
3434

3535
fread = function(
@@ -131,11 +131,11 @@ yaml=FALSE, tmpdir=tempdir(), tz="UTC")
131131
flush.console()
132132
}
133133
spill_started.at = proc.time()
134-
con_summary = summary(input)
135134
con_open = isOpen(input)
136135

137136
needs_reopen = FALSE
138137
if (con_open) {
138+
con_summary = summary(input)
139139
binary_modes = c("rb", "r+b", "wb", "w+b", "ab", "a+b")
140140
if (!con_summary$mode %chin% binary_modes) needs_reopen = TRUE
141141
}
@@ -144,7 +144,7 @@ yaml=FALSE, tmpdir=tempdir(), tz="UTC")
144144

145145
if (needs_reopen) {
146146
close(input)
147-
input = reopen_connection(input)
147+
input = reopen_connection(input, con_summary$description)
148148
close_con = input
149149
} else if (!con_open) {
150150
open(input, "rb")

0 commit comments

Comments
 (0)