tplate@blackmesacapital.com
2005-May-25 22:37 UTC
[Rd] seek(con, 0, "end", rw="r") does not always work correctly (PR#7896)
I've noticed that seek(con, 0, "end", rw="r") on a file connection does not always work correctly after a write (R 2.1.0 on Windows). [Is a call to fflush() needed inside file_seek() in main/connections.c?] Example (see the lines with the "***WRONG***" comment) > # seek(, rw="r") on a file does not always work correctly after a write > f <- file("tmp3.txt", "w+b") > # Write something earlier in the file > seek(f, 10, rw="w") [1] 0 > writeLines(c("ghi", "jkl"), f) > seek(f, 20, rw="w") [1] 18 > writeLines(c("abc"), f) > seek(f, 0, "end", rw="w") [1] 24 > # Try to read at the end of the file > seek(f, 0, "end", rw="r") [1] 0 > readLines(f, -1) character(0) > seek(f, 0, "end", rw="w") [1] 18 > # write something at the end of the file > writeLines(c("def"), f) > # Try to read at the end of the file > # flush(f) # flushing here makes the seek work correctly > seek(f, 0, "end", rw="r") [1] 24 > seek(f, NA, rw="r") # ***WRONG*** (should return 28) [1] 24 > readLines(f, -1) # ***WRONG*** (should return character(0)) [1] "def" > seek(f, 20, rw="r") [1] 28 > readLines(f, -1) [1] "abc" "def" > seek(f, 0, "end", rw="r") # now it works correctly [1] 28 > seek(f, NA, rw="r") [1] 28 > readLines(f, -1) character(0) > close(f) > > version _ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 1.0 year 2005 month 04 day 18 language R > -- Tony Plate
Seemingly Similar Threads
- seek(con, 0, "end", rw="r") does not always work correctly (PR#7901)
- seek(con, 0, "end", rw="r") does not always work correctly (PR#7899)
- (PR#7899) seek(con, 0, "end", rw="r") does not always work
- problems with truncate() with files > 2Gb under Windows (PR#7880)
- Calculating Portfolio Standard deviation