FETCH
Section: C Library Functions (3)
索引
jman
BSD mandoc
索引
名称
fetchGetURL
fetchPutURL
fetchStatURL
fetchListURL
fetchParseURL
fetchGet
fetchPut
fetchStat
fetchList
fetchGetFile
fetchPutFile
fetchStatFile
fetchListFile
fetchGetHTTP
fetchPutHTTP
fetchStatHTTP
fetchListHTTP
fetchGetFTP
fetchPutFTP
fetchStatFTP
fetchListFTP
- ファイル転送ライブラリ
索引
書式
Fd #include <sys/param.h>
Fd #include <stdio.h>
Fd #include <fetch.h>
Ft FILE *
Fn fetchGetURL char *URL char *flags
Ft FILE *
Fn fetchPutURL char *URL char *flags
Ft int
Fn fetchStatURL char *URL struct url_stat *us char *flags
Ft struct url_ent *
Fn fetchListURL char *URL char *flags
Ft struct url *
Fn fetchParseURL char *URL char *flags
Ft FILE *
Fn fetchGet struct url *URL char *flags
Ft FILE *
Fn fetchPut struct url *URL char *flags
Ft int
Fn fetchStat struct url *URL struct url_stat *us char *flags
Ft struct url_ent *
Fn fetchList struct url * char *flags
Ft FILE *
Fn fetchGetFile struct url *u char *flags
Ft FILE *
Fn fetchPutFile struct url *u char *flags
Ft int
Fn fetchStatFile struct url *URL struct url_stat *us char *flags
Ft struct url_ent *
Fn fetchListFile struct url * char *flags
Ft FILE *
Fn fetchGetHTTP struct url *u char *flags
Ft FILE *
Fn fetchPutHTTP struct url *u char *flags
Ft int
Fn fetchStatHTTP struct url *URL struct url_stat *us char *flags
Ft struct url_ent *
Fn fetchListHTTP struct url * char *flags
Ft FILE *
Fn fetchGetFTP struct url *u char *flags
Ft FILE *
Fn fetchPutFTP struct url *u char *flags
Ft int
Fn fetchStatFTP struct url *URL struct url_stat *us char *flags
Ft struct url_ent *
Fn fetchListFTP struct url * char *flags
索引
解説
この関数は、URL (Uniform Resource Locators)
を使用してファイルの取り出しとアップロードを行なう、
高レベルなライブラリを実現します。
Fn fetchGetURL
と
Fn fetchPutURL
は、
fetch
ライブラリのインタフェースを構成します。
この関数は渡された URL を検査して転送手法を決め、
適切な低レベル関数を呼び出して実際の転送を実行します。
Fa flags
引数は、転送オプションを指定するキャラクタのストリングです。
それぞれのフラグの意味はスキームによって異なるので、
以下の適切なセクションを参照してください。
Fn fetchStatURL
は、要求された文書のメタデータを入手し、
第 2 引数が指す構造体にデータを入力しようとします。
Fa url_stat
構造体は、
Aq Pa fetch.h
で以下のように定義されています。
struct url_stat {
off_t size;
time_t atime;
time_t mtime;
};
Fn fetchListURL
は、指定された URL が指すディレクトリの内容をリストしようとします。
問題がなければ、malloc で割り振られた
Fa url_ent
構造体の配列を戻します。
Fa url_ent
構造体は、
Aq Pa fetch.h
で以下のように定義されています。
struct url_ent {
char name[MAXPATHLEN];
struct url_stat stat;
};
リストは、名前がないエントリで終わります。
Fn fetchListURL
が戻すポインタは、
Fn free
で解放してください。
Fn fetchParseURL
はナル文字で終わるストリングの URL を取り、RFC1738 に規定されている
Common Internet Scheme Syntax に従って、その URL を
コンポーネント関数に分割します。
このシンタックスを作る正規表現は以下のとおりです。
<scheme>:(//(<user>(:<pwd>)?@)?<host>(:<port>)?)?/(<document>)?
URL の一部のコンポーネントは、
すべての URL スキームで重要ではないことがあることに注意してください。
たとえばファイルスキームでは、<scheme> コンポーネントと
<document> コンポーネントしか必要ありません。
Fn fetchParseURL
が戻すポインタは、
Fn free
で解放してください。
Fn fetchGet
、
Fn fetchPut
、
Fn fetchStat
は、ポインタの形式の事前解析済み URL がストリングではなく
Fa struct url
で必要になることを除けば、
Fn fetchGetURL
、
Fn fetchPutURL
、
Fn fetchStatURL
に似ています。
すべての
Fn fetchGetXXX
関数と
Fn fetchPutXXX
関数は、要求された文書からのデータの読込みや要求された文書へのデータの
書込みに使用できるストリームのポインタを戻します。
それぞれのアクセス手法のシステム詳細は異なりますが、
Fn fetchGetXXX
関数が戻すストリームは読込み専用で、
Fn fetchPutXXX
が戻すストリームは書込み専用であると一般的に仮定されます。
索引
ファイルスキーム
Fn fetchGetFile
と
Fn fetchPutFile
では、ローカルにマウントされたファイルシステムのファイルである文書に
アクセスできます。URL の <document> コンポーネントのみが使用されます。
Fn fetchGetFile
はフラグを受け入れません。
Fn fetchPutFile
は、
Fa a
フラグ (ファイルに追加) を受け入れます。
このフラグを指定した場合、
Fn fetchPutFile
が戻すストリームへ書き込まれたデータは、
ファイルの前の内容を置き換えるのではなくファイルの前の内容に追加されます。
索引
FTP スキーム
Fn fetchGetFTP
と
Fn fetchPutFTP
は、RFC959 に記述されているように FTP プロトコルを実現します。
Fa p
フラグ (受動) を指定すると、能動的ではなく受動的な接続が試されます。
ユーザ名かパスワードを指定しないと、
fetch
ライブラリは、ユーザ名 "ftp"、パスワード "ftp" で匿名ログインを試します。
索引
HTTP スキーム
Fn fetchGetHTTP
関数と
Fn fetchPutHTTP
関数は、HTTP/1.1 プロトコルを実現します。
この関数は、RFC2068 に準拠する可能性があります。
fetch
ライブラリと調和する方法で
HTTP PUT 手法を実現する適切な方法がないようなので、
Fn fetchPutHTTP
は現在のところ実現されていません。
索引
戻り値
Fn fetchParseURL
は、URL のそれぞれのコンポーネントを含む
Fa struct url
のポインタを戻します。メモリを割り振れない場合、
または URL のシンタックスが 正しくない場合、
Fn fetchParseURL
は NULL ポインタを戻します。
Fn fetchStat
関数は、問題がなければ 0 を戻し、問題がある場合は -1 を戻します。
その他すべての関数は、要求された文書へのアクセスに使用できる
ストリームのポインタを戻します。
エラーが発生した場合は NULL を戻します。
Libfetch
は、Common Error Library
( libcom_err
を使用してエラーを報告します。
Fn com_err
に渡されるエラーコードは以下のとおりです。
- Bq Er FETCH_ABORT
-
オペレーションが異常終了しました。
- Bq Er FETCH_AUTH
-
認証がエラーになりました。
- Bq Er FETCH_DOWN
-
サービスが使用できません。
- Bq Er FETCH_EXISTS
-
ファイルが存在します。
- Bq Er FETCH_FULL
-
ファイルシステムの容量が不足しています。
- Bq Er FETCH_INFO
-
情報としての応答です。
- Bq Er FETCH_MEMORY
-
メモリが不足しています。
- Bq Er FETCH_MOVED
-
ファイルが移動されました。
- Bq Er FETCH_NETWORK
-
ネットワークエラー
- Bq Er FETCH_OK
-
エラーはありません。
- Bq Er FETCH_PROTO
-
プロトコルエラー
- Bq Er FETCH_RESOLV
-
リゾルバエラー
- Bq Er FETCH_SERVER
-
サーバエラー
- Bq Er FETCH_TEMP
-
一時的なエラー
- Bq Er FETCH_TIMEOUT
-
オペレーションがタイムアウトになりました。
- Bq Er FETCH_UNAVAIL
-
ファイルが使用できません。
- Bq Er FETCH_UNKNOWN
-
未知のエラー
- Bq Er FETCH_URL
-
URL が正しくありません。
エラーメッセージには、
"File is not available (404 Not Found)" のように、
プロトコルのエラーコードとメッセージが組み込まれます。
索引
環境変数
FTP と HTTP に関連した関数は、
ファイル転送に使用するプロキシサーバのアドレスとして、
HTTP_PROXY
環境変数と
FTP_PROXY
環境変数を使用します。
索引
関連項目
com_err3,
fetch(1),
ftpio(3)
-
T. Berners-Lee
L. Masinter
M. McCahill
December 1994
Uniform Resource Locators (URL)
RFC1738
-
R. Fielding
J. Gettys
J. Mogul
H. Frystyk
T. Berners-Lee
Januray 1997
Hypertext Transfer Protocol -- HTTP/1.1
RFC2068
-
J. Postel
J. K. Reynolds
October 1985
File Transfer Protocol
RFC959
索引
注
fetch
ライブラリは Common Error ライブラリを使用するので、
libfetch
にリンクするアプリケーションは、
libcom_err
にもリンクする必要があります。
索引
歴史
fetch
ライブラリは、
Fx 3.0
に追加されました。
索引
作者
fetch
ライブラリは、
An Jordan K. Hubbard Aq jkh@FreeBSD.org ,
An Eugene Skepner Aq eu@qub.com
、その他の FreeBSD 開発者の提案を受け入れ、
An Dag-Erling Coidan Smograv Aq des@FreeBSD.org
が作成しました。これにより、
An Poul-Henning Kamp Aq pkh@FreeBSD.org
と
An Jordan K. Hubbard Aq jkh@FreeBSD.org
が作成した
ftpio
が置き換えられました。
このマニュアルページの筆者は、
An Dag-Erling Coidan Smograv Aq des@FreeBSD.org
です。
索引
バグ
Fn fetchPutHTTP
、
Fn fetchStatHTTP
、
Fn fetchListHTTP
、
Fn fetchListFTP
、FTP プロキシサポートなど、ライブラリの一部はまだ実現されていません。
HTTP_PROXY
環境変数か
FTP_PROXY
環境変数を適切に設定する以外、
プロキシを実行時に選択する方法はありません。
この環境変数を設定した場合は、
FTP 関数と HTTP 関数によるプロキシの使用を止めることはできません。
HTTP 認証は動作しません。調査した範囲では、
コードにバグがあるとは言い切れません。
libfetch
は HTTP/1.1 基本認証を RFC2068 のとおりに正しく処理しますが、
HTTP サーバは、認証のヘッダフィールドを受け入れません。また
libfetch
は、HTTP サーバの認証要求を解釈してそれに応答しようとしません。
URL でスペースなどをエンコードする試みはなされていません。
URL の文書部分のスペースは、HTTP URL で "%20" に、
FTP URLで "\ " に置き換える必要があります。
エラー番号は、特定コンテキストのみで一意です。
FTP と HTTP で使用するエラーコード、
およびリゾルバとシステムのエラーで使用するエラーコードは重複します。
たとえばエラーコード 202 は、FTPでは "Command not implemented,
superfluous at this site" を表し、HTTP では "Accepted" を表します。
このマニュアルページは不十分で、
テキストのフォーマットも揃っていません。
その他にも多くのことがあります。
索引
Index
- 名称
-
- 書式
-
- 解説
-
- ファイルスキーム
-
- FTP スキーム
-
- HTTP スキーム
-
- 戻り値
-
- 環境変数
-
- 関連項目
-
- 注
-
- 歴史
-
- 作者
-
- バグ
-
Time: 07:06:49 GMT, January 12, 2009