なかだです。

At Sun, 9 Jan 2005 17:01:21 +0900,
SASADA Koichi wrote in [ruby-dev:25446]:
>  DATA.read() をすると,mswin32 版では cr の個数分,先頭を
> スキップしてしまうようです.
> 
>  改行コードが lf だけなら問題ありませんでした.

残りのサイズを計算するときに、すでにバッファに読んでいる分をそ
のまま使うようにするとどうでしょうか。


Index: io.c =================================================================== RCS file: /cvs/ruby/src/ruby/io.c,v retrieving revision 1.359 diff -U2 -p -r1.359 io.c --- io.c 9 Jan 2005 05:12:29 -0000 1.359 +++ io.c 9 Jan 2005 12:59:02 -0000 @@ -1121,5 +1121,5 @@ remain_size(fptr) { struct stat st; - off_t siz = BUFSIZ; + off_t siz = READ_DATA_PENDING_COUNT(fptr); off_t pos; @@ -1130,7 +1130,8 @@ remain_size(fptr) ) { - pos = io_tell(fptr); + io_fflush(fptr); + pos = lseek(fptr->fd, 0, SEEK_CUR); if (st.st_size >= pos && pos >= 0) { - siz = st.st_size - pos + 1; + siz += st.st_size - pos + 1; if (siz > LONG_MAX) { rb_raise(rb_eIOError, "file too big for single read"); @@ -1138,4 +1139,7 @@ remain_size(fptr) } } + else { + siz += BUFSIZ; + } return (long)siz; }
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦