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していただける とうれしいです。