Windows の O_BINARY

Windows に移植された Mosh で output-port 周りのテストが通らない。調べてみるとファイルを読み書きすると、ファイルサイズが意図したものよりも大きくなる。更に詳しく調べると write(fd, buf, size) の戻り値は size なのに直後に lseek(fd, 0, SEEK_CUR) すると size + α とファイルが大きくなっている。
出来上がったファイルを見ても異常がない。余分に大きくなったように見えない。あーこれは改行コードかな。ふと以前 nikq さんが Windows ではバイナリーモードとテキストモードがあると言っていたのを思い出す。
というわけで open 時に O_BINARY を明示するようにしたら直った。