rfc.ftp
- FTPクライアント ¶このモジュールはFTPサーバーにアクセスするための便利関数群を提供します。
{rfc.ftp
}
ひとつのサーバーへのFTPコネクションを保持するオブジェクト。以下の公開
スロットがあります。
<ftp-connection>
: transfer-type ¶FTPの転送タイプ。以下のシンボルのどれかひとつでなければなりません。
ascii
、binary
(デフォルト)、およびimage
。
<ftp-connection>
: passive ¶パッシブコネクションを使うとき真。
<ftp-connection>
: log-drain ¶このスロットは<log-drain>
のインスタンス(gauche.logger
- ユーザレベルのロギング参照)
を保持しているかあるいは#f
でなければなりません。<log-drain>
のインスタンスを保持している場合、FTP通信のログがそこに記録されます。
{rfc.ftp
}
このタイプの例外はFTPサーバーがエラーコードを返したときに投げられます。
<error>
を継承しています。メッセージフィールドにはステータスコー
ドを含むサーバーからの返答が含まれます。
{rfc.ftp
}
高水準の便利関数で、ひとつのFTPサーバーへのFTPコネクションをオープンし、
与えられた手続きを呼びます。
接続するサーバーはhostで指定します。オプションでユーザー名、ポー
ト番号をuser@servername:port
という形式で指定
できます。もしあれば、hostの部分をキーワード引数にすることもでき
ます。
hostへのFTPコネクション確立が成功したら、procが引数を1つとっ
て呼ばれます。この引数は<ftp-connection>
のインスタンスです。
procから返ったときにこのコネクションはクローズされ、procの
返り値がcall-with-ftp-connection
から返されます。例外がなげられ
たら、その例外がcall-with-ftp-connection
から外へでる前にFTPコネ
クションはクローズされます。
キーワード引数passiveに真値を与えると、FTPコネクションはパッシブ モードになります。デフォルトではアクティブモードです。
キーワード引数port、usernameおよびpasswordは
それぞれ、ポート番号、ユーザー名、パスワードを指定するのに使います。
省略された場合のデフォルトは、ポート番号が21,usernameが
"anonymous"
、passwordが"anonymous@"
にセットされま
す。ポート番号とユーザー名はhost引数で指定されたものが優先されま
す。
キーワード引数accountが与えられた場合には、その値が、ログイン時
にサーバーからの要求でFTPのACCT
コマンドに渡されます。デフォルト
では空文字列""
です。
キーワード引数log-drainが生成したFTPコネクションの
log-drain
スロットに設定されます。
{rfc.ftp
}
指定したFTPコネクションconn
の転送タイプを返します。セッターを適
用することもできます。たとえば、(set! (ftp-transfer-type conn) 'ascii)
とします。
{rfc.ftp
}
指定したFTPコネクションがパッシブモードである場合でその場合に限り真を
返します。
{rfc.ftp
}
hostで指定されたFTPサーバーに接続し、ユーザー認証をすませ、新し
く生成した<ftp-connection>
のインスタンスを返します。この手続き
はcall-with-ftp-connection
を使ったときに暗黙の内に呼ばれます。
host引数およびキーワード引数のセマンティクスは
call-with-ftp-connection
と同じです。
{rfc.ftp
}
FTPのQUIT
コマンドをコネクションconnに送り、コネクションを
シャットダウンします。この手続きはcall-with-ftp-connection
を使っ
たときに暗黙の内に呼ばれます。
いったんシャットダウンしたコネクションをつかっての通信はできません。
{rfc.ftp
}
リモートディレクトリをdirnameに変更します。
{rfc.ftp
}
pathで指定したリモートファイルを削除します。
{rfc.ftp
}
FTPコマンドHELP
を送ります。Optionは文字列でなければなりま
せん。これはHELP
コマンドの引数にわたされます。
{rfc.ftp
}
ディレクトリdirnameを作成します。作成されたディレクトリ名が返り
ます。
{rfc.ftp
}
現在のリモートディレクトリを返します。
{rfc.ftp
}
FTPコマンドSITE
を引数argとともに送ります。SITE
コマ
ンドのセマンティクスはサーバーに依存します。返り値はサーバーのリプライ
です。
{rfc.ftp
}
dirnameで指定したリモートディレクトリを削除します。返り値はサー
バーのリプライです。
{rfc.ftp
}
FTPコマンドSTAT
をサーバーに送信します。
RFC959ではこのコマンドのセマンティクスをいくつか定義しています。詳細は
RFC959を見てください。返り値はサーバーのリプライです。
{rfc.ftp
}
FTPコマンドSYST
をつかってサーバーのオペレーティングシステムを問
合せます。返り値はステータスコードを含まないサーバーのリプライです。
(call-with-ftp-connection "localhost" ftp-system) ⇒ "UNIX Type: L8"
{rfc.ftp
}
pathで指定したリモートファイルのサイズを問合せます。
整数値が返ります。
註:コネクションがasciiモードかbinaryモードかによって、返されるサイズは 異なるかもしれません。ftpサーバによっては、binaryモードでしか sizeリクエストに答えないものもあります。この関数を呼ぶ際には、 コネクションに望みのtransfer typeがセットされているようにしてください。
{rfc.ftp
}
pathで指定したリモートファイルの更新時刻を問合せます。この関数は
サーバーからのリプライをステータスコードも含めそのまま返します。解析済
みの結果が欲しいときは後述のftp-mtime
を使ってください。
{rfc.ftp
}
pathで指定したリモートファイルの更新日時を問合せます。結果は
<date>
オブジェクト(srfi.19
- 時間のデータ型と手続き参照)で
返ります。local-time?
が真値に設定されている場合、日付はローカル
時刻で返ります。そうでない場合は日付はUTCです。
{rfc.ftp
}
FTPコマンドNOOP
を送り、サーバーからのリプライを返します。
{rfc.ftp
}
pathで指定されたリモートディレクトリあるいはリモートファイル内の
ファイルに関する情報を返します。path指定がない場合は現在のリモー
トディレクトリで、結果のフォーマットはls(1)
のフォーマットと非常
によく似ています。文字列のリストが返り、それぞれの文字列はサーバーのリ
プライの行に対応します。正確なフォーマットについてはサーバーに依存しま
す。
{rfc.ftp
}
pathで指定したパスもしくは現在のリモートディレクトリにあるファイ
ル名リストを返します。ただし、他の情報は含みません。ftp-ls
は
ftp-name-list
の別名です。便利なので定義してあります。
リモートディレクトリにファイルが含まれていないときにはサーバーはエラー を返すことがあることに注意してください。
{rfc.ftp
}
リモートファイルpathを検索します。検索データはsinkで与えら
れた出力ポートに送られます。すべてのデータが検索されたあと、
flusherで与えられた手続きをポートsinkを引数として呼びます。
返り値はftp-get
から返されたものです。
sinkおよびflusherのデフォルト値はそれぞれ、新しく作成され
た文字列ポートとget-output-string
です。すなわち、ftp-get
はデフォルトでは検索データを文字列として返します。巨大なファイルの場合
このデフォルトの挙動ではありがたくありません。
{rfc.ftp
}
from-fileで指定したローカルファイルをto-fileで指定した名前
でリモートサーバーに送信します。to-fileが省略された場合にはベー
ス名としてfrom-fileが使われます。返り値はサーバーのレスポンスで
す。
{rfc.ftp
}
from-fileで指定したローカルファイルをリモートサーバーへ送信しま
す。リモート側のファイル名重複しないことを保証します。返り値は2つで、
最終的なリモートサーバーからのレスポンスとリモートファイル名です。2つ
めの値は、リモートサーバーがRFC1123をサポートしていない(ほとんどない)
場合に#f
になります。
{rfc.ftp
}
from-nameで指定したリモートファイル名をto-nameに変更する。
返り値は最終的なサーバーのレスポンスです。