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
3535fread = 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