A small note: while working on this I realized that readBin/writeBin documentation was still saying that these functions, even though not intended for text connections, _may_ work with them. But with readBin/writeBin there is always a runtime error when invoked on a text connection, so I updated the docs. Thanks again for the report,
Best Tomas On 05/30/2018 03:38 PM, Tomas Kalibera wrote: > For now I have added a warning that is issued (only) when there is > definitely a problem (currently a read buffer, a pushback buffer or > encoding conversion of the input). And I have added a similar warning > for writing when there is encoding conversion of the output > (writeChar). But, as you say, the behavior is undefined and it remains > so regardless of whether there is a warning or not: programs should > only use these functions with binary connections. > > Best > Tomas > > On 05/30/2018 12:00 AM, Aaron Goodman wrote: >> Tomas, >> >> Thank you for the explanation. I see in the documentation: "These >> functions are intended to be used with binary-mode connections." So >> I see how using it on a text connection is undefined, and not a bug. >> An error or warning when attempting to use a it on a text connection >> would be helpful considering how the behavior has changed in R-3.5. >> >> On Tue, May 29, 2018 at 3:09 AM, Tomas Kalibera >> <tomas.kalib...@gmail.com <mailto:tomas.kalib...@gmail.com>> wrote: >> >> On 05/26/2018 05:15 AM, Aaron Goodman wrote: >> >> I noticed an issue where readChar does not return the correct >> value after a >> call to readline. It appears that readChar is not aware of >> the buffering, >> so it reads from the end of the buffer, rather than the >> current position in >> the file. This is a significant change of behavior from R-3.4.4. >> >> Below is a test case that I used to home in on the problem. >> >> Thanks for the report and analysis, you are right, readChar >> ignores the buffer (and it also ignores the pushback). But please >> note that this behavior is in line with the documentation, see >> ?readChar: readChar must only be used with binary connections, >> but the example uses it on a text connection. Buffering and >> pushback are only used on (readable) text connections. I will >> check whether we could report a runtime error. >> >> Best >> Tomas >> >> --- >> >> p<-"test2.txt" >> cat("abcdefg >> hijklmn >> opqrstu",file=p) >> >> cat("read char after readline (h)\n") >> con <- file(p,"r") >> invisible(readLines(con,1)) >> print(readChar(con,1)) >> close(con) >> >> cat("read char after readline and seek (h)\n") >> con <- file(p,"r") >> invisible(readLines(con,1)) >> invisible(seek(con,seek(con))) >> print(readChar(con,1)) >> close(con) >> >> cat("read lines after readline (hijklmn)\n") >> con <- file(p,"r") >> invisible(readLines(con,1) ) >> print(readLines(con,1)) >> close(con) >> >> >> cat("read line after char (bcdefg):\n") >> con <- file(p,"r") >> invisible(readChar(con,1) ) >> print(readLines(con,1)) >> close(con) >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-devel@r-project.org <mailto:R-devel@r-project.org> mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> <https://stat.ethz.ch/mailman/listinfo/r-devel> >> >> >> >> > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel