[Gauche-devel-jp] テンポラリファイルのseek

アーカイブの一覧に戻る

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




Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る