Shiro Kawai
shiro****@lava*****
2010年 5月 13日 (木) 19:25:30 JST
そもそもScm_MakePortWithFdでseekerをNULLにした理由が思い出せません。 file_seekerをセットしてしまえばいいような気がするのですが、 念のため、もし誰か、Scm_MakePortWithFdでオープンしたポートを seekしたらまずいケースを思いついたら教えてください。 (fdが共有されてると面倒なことになりますが、それは読み書きでも同じ ことなので、seekだけがまずい理由ですね)。 特にobjectionが無ければScm_MakePortFdで作るポートをseekableに しちゃいます。 --shiro From: Masatake YAMATO <yamat****@redha*****> Subject: [Gauche-devel-jp] テンポラリファイルのseek Date: Thu, 13 May 2010 19:14:34 +0900 (JST) > テンポラリファイルのportに対するport-tellが効きません。 > > 以下のテストで cannot-seekとなります。 > > ;; system.scm > (test* "sys-mkstemp" 'can-seek > (receive (oport name) (sys-mkstemp "gauche-self-utest") > (sys-unlink name) > (if (port-tell oport) > 'can-seek > 'cannot-seek))) > > sys-mkstempが使っているScm_MakePortWithFdにてseekerメソッドをNULLに設定 > しているためのようです。Scm_OpenFilePortを使えば良いと考えたのですが > 引数にpathを期待していてfdを渡せません。 > > Scm_MakePortWithFdとScm_OpenFilePortの共通処理を担当する関数Xを用意して > Scm_MakePortWithFdとScm_OpenFilePortから使えば良さそうです。 > > > sys-mkstempの返すファイル名でopen-output-fileし直せば回避できますが、 > sys-mkstempを修正して頂けるとうれしいです。 > > 大和 > > _______________________________________________ > Gauche-devel-jp mailing list > Gauch****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp