スポンサーリンク

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
定義されている場合、パッシブモード FTP を強制的に使 用します。ただし ‘‘NO’’ または ‘‘no’’ に定義されてい る場合は、アクティブモードを強制的に使用します。定義 されている場合、この変数の設定は、 ftpPassive() の呼 び出しに優先します。

バグ

こいつを徹底的に使い込むと、内部状態マシンを混乱させてしまう可能性があり ますが、私がテストした限りでは、非常に丈夫に作られていることが確かめてあ ります。

歴史

Poul-Henning Kamp のシステムインストレーションユーティリティ用 ftp ドライ バとして始まり、Jordan Hubbard が、stdio の拡張というより一般的な形式に変 更しました。 Jean-Marc Zucconi のアイデアと拡張機能もいくつか盛り込まれて います。

作者

Jordan Hubbard,
Poul-Henning Kamp,
Jean-Marc Zucconi

FreeBSD 10.0 June 17, 1996 FreeBSD 10.0

スポンサーリンク