FTPIO(3) FreeBSD ライブラリ関数マニュアル FTPIO(3)
名称
ftpLogin, ftpChdir, ftpErrno, ftpGetModtime, ftpGetSize, ftpGet, ftpPut, ftpBinary, ftpPassive, ftpVerbose, ftpGetURL, ftpPutURL, ftpLoginAf, ftpGetURLAf, ftpPutURLAf − FTPIO ユーザライブラリ |
書式
#include <ftpio.h> FILE * |
ftpLogin(char *host, char *user, char *passwd, int ftp_port, int verbose, int *retcode); int |
ftpChdir(FILE *stream, char *dirname); int |
ftpErrno(FILE *stream); const char * |
ftpErrString(int errno); time_t |
ftpGetModtime(FILE *stream, char *file); off_t |
ftpGetSize(FILE *stream, char *file); FILE * |
ftpGet(FILE *stream, char *file, off_t *seekto); FILE * |
ftpPut(FILE *stream, char *file); int |
ftpAscii(FILE *stream); int |
ftpBinary(FILE *stream); int |
ftpPassive(FILE *stream, int status); void |
ftpVerbose(FILE *stream, int status); FILE * |
ftpGetURL(char *url, char *user, char *passwd, int *retcode); FILE * |
ftpPutURL(char *url, char *user, char *passwd, int *retcode); FILE * |
ftpLoginAf(char *host, int af, char *user, char *passwd, int ftp_port, int verbose, int *retcode); FILE * |
ftpGetURLAf(char *url, int af, char *user, char *passwd, int *retcode); FILE * |
ftpPutURLAf(char *url, int af, char *user, char *passwd, int *retcode); |
解説 |
この関数は、FTP コネクションを管理するための高レベルなライブラリを実装し ます。 ftpLogin() は、指定された user, passwd, ftp_port (0 を渡した場合、標準 FTP ポートの 21 がデフォルトで ftp_port になる), verbose フィールドを使用 してログインしようとします。ログインに成功すれば、標準的なストリーム記述 子が返されます。この記述子は、後の FTP オペレーションに渡してください。エ ラーが発生した場合は NULL が返され、 retcode には、外部サーバが返すエラー コードが入ります。 ftpChdir() は、サーバの CD コマンドを出し、 dir で指定されたディレクトリ に変更しようとします。問題がなければ 0 が返されます。問題がある場合は、 サーバのエラーコードが返されます。 ftpErrno() は、最後のオペレーションのサーバエラーコードを返します。 FTP のエラーコードに精通している場合は、エラーの原因の確認に有益です。 ftpErrString() は、人間が判読できるサーバエラーコードを返します。 ftpGet() は、 file 引数が指定するファイルを取り出し (FTP サーバのカレント ディレクトリからの相対パスと想定される。 ftpChdir() 参照)、そのファイルの ための新しい FILE* ポインタを返します。エラーが発生した場合は NULL を返し ます。 seekto が NULL ではない場合、これが指す整数の内容は、ファイルの再 開ポイントとして使用されます。つまり、返されたストリームは、ファイルの *seekto バイトを指しているということです。これは、エラーで失敗した転送を 効率的に再開する際に便利です。シーク操作がエラーになった場合、 *seekto の 値は 0 になります。 ftpGetModtime() は、 file 引数が指定するファイルの最終修正時刻を返しま す。ファイルをオープンできない場合は 0 が返されます。 ftpGetSize() は、 file 引数が指定するファイルのサイズをバイト単位で返しま す。ファイルをオープンできない場合は -1 が返されます。 ftpPut() は、 file 引数が指定する新しいファイルを作成し (FTP サーバのカレ ントディレクトリからの相対パスと想定される。 ftpChdir() 参照)、ファイルの 新しい stream ポインタを返します。エラーが発生した場合は NULL を返しま す。 ftpAscii() は、 stream が指定する現行サーバのコネクションに ASCII モード を設定します。 ftpBinary() は、 stream が指定する現行サーバのコネクションにバイナリモー ドを設定します。 ftpPassive() は、 stream が指定する現在のサーバのコネクションのパッシブ モード (ファイアウォール用)を論理値 status に設定します。 ftpVerbose() は、 stream が指定する現在のサーバのコネクションの冗長モード を論理値 status に設定します。 ftpGetURL() は、 URL が指定するファイルを取り出します。これは、サーバの stream が返されないこと除けば、 ftpLogin(), ftpChdir(), ftpGet() を組み合 わせた操作と同じとみなすことができます。サーバとのコネクションは、ファイ ルが完全に読み込まれた時点でクローズされます。複数のファイルを取り出す場 合は、低レベルのルーチンを使用してください。この方がはるかに効率的です。 ftpPutURL() は、 URL が指定するファイルを作成します。これは、サーバの stream が返されないことを除けば、 ftpLogin(), ftpChdir(), ftpPut() を組み 合わせた操作と同じとみなすことができます。サーバとのコネクションは、ファ イルが完全に書き込まれた時点でクローズされます。複数のファイルを作成する 場合は、低レベルのルーチンを使用してください。この方がはるかに効率的で す。 ftpLoginAf(), ftpGetURLAf(), ftpPutURLAf() は、 ftpLogin(), ftpGetURL(), ftpPutURL() と同様ですが、アドレスファミリ except that they are able to specify address family af を指定可能な点が異なります。 |
環境変数
FTP_TIMEOUT
FTP 接続を異常終了させる前に、通信相手からの応答を待 つ最大時間 (秒単位) です。 FTP_PASSIVE_MODE バグ |
こいつを徹底的に使い込むと、内部状態マシンを混乱させてしまう可能性があり ますが、私がテストした限りでは、非常に丈夫に作られていることが確かめてあ ります。 |
歴史
Poul-Henning Kamp のシステムインストレーションユーティリティ用 ftp ドライ バとして始まり、Jordan Hubbard が、stdio の拡張というより一般的な形式に変 更しました。 Jean-Marc Zucconi のアイデアと拡張機能もいくつか盛り込まれて います。 |
作者
Jordan Hubbard, FreeBSD 10.0 June 17, 1996 FreeBSD 10.0 |