[Gauche-devel-jp] ftp-putのポート版がほしい

Back to archive index

koga kazuo kogak****@gmail*****
2008年 7月 4日 (金) 21:58:47 JST


こんにちは。古賀ともうします。

rfc.ftpのftp-putのプットするデータポートを貰えるAPI 
が欲しいです。
ポートを引数にとる関数を渡してその場でデータを作りながら
リモートに書き込めるようになります。

コードとしてはこんな感じです。
rfc.ftpのreq&send関数の冒頭のcopy-dataを以下のように、
portが手続きだったらソケット出力ポートを引数にして呼び出すように
してあげて、

(define (req&send conn cmdproc port)

   (define (copy-data get-data-socket)
     (define data-port (socket-output-port (get-data-socket)))
     (if (procedure? port)
         (port data-port)
         (copy-port port data-port)))

以下のような関数をつくってあげます。
(define (ftp-put-with-proc conn to-file proc)
   (req&send conn (cut send-command conn "STOR" to-file) proc))

以下のようにして利用します。
(ftp-put-with-proc conn "to-file"
                          (lambda (put-port)
                            (call-with-input-process `(なにか 
の処理)
                              (lambda (input)
                                (copy-port input put-port)))))

現状のftp-putだと"なにかの処理"の出力を一旦from- 
fileファイルに格納して
そのパスを渡してやる必要があって面倒です。
from-fileのかわりにデータを生成するなにかを渡せる
ftp-put-with-proc的なAPIがあるといいなと思いました。


全然別件ですが、<ftp-error>をexportしていただける 
とうれしいです。




Gauche-devel-jp メーリングリストの案内
Back to archive index