日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
UNVIS(3) FreeBSD ライブラリ関数マニュアル UNVIS(3) 名称 unvis, strunvis, strnunvis, strunvisx, strnunvisx -- 文字の視覚表現をデ コード (復号化) する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <vis.h> int unvis(char *cp, int c, int *astate, int flag); int strunvis(char *dst, const char *src); int strnunvis(char *dst, size_t dlen, const char *src); int strunvisx(char *dst, const char *src, int flag); int strnunvisx(char *dst, size_t dlen, const char *src, int flag); 解説 unvis(), strunvis() と strunvisx() 関数は、元の形式に戻す vis(3) 関数に よって生成されるような、文字の視覚表現をデコード (復号化) するために使用 されます。 unvis() 関数は、デコードされた文字が、cp によって指される文字で利用可能で ある時点で、有効なシーケンスが認識されるまで、c の連続する文字で呼び出さ れます。 strunvis() 関数は、src によって指される文字を dst によって指されるバッ ファへデコードします。strunvis() 関数は、途中のあらゆるエスケープシーケン スをデコードして、src を dst へ単にコピーし、dst に入れられた文字の数を返 すか、または無効のエスケープシーケンスが検出されたなら、-1 を返します。 dst のサイズは、src のサイズと等しくなければなりません (すなわち、拡張 は、デコードの間に起こりません)。 strunvisx() 関数は、strunvis() 関数と同じように行いますが、利用者は、文字 列 src がエンコード (符号化) されるスタイルを指定するフラグを追加すること ができます。現在、サポートされたフラグは、次の通りです: VIS_HTTPSTYLE と VIS_MIMESTYLE。 unvis() 関数は、任意のバイトのストリームをデコードするために使用すること ができる状態マシン (state machine) を実装しています。デコードされているバ イトに関連するすべての状態は、unvis() 関数の外側に格納される (すなわち、 状態へのポインタが渡され) ので、異なるストリームをデコードする呼び出しを 自由に混在することができます。バイトのストリームのデコードを開始するため には、最初に整数を 0 に初期化します。この整数へのポインタとあて先の文字へ のポインタとともに、各連続するバイトで unvis() を呼び出します。unvis() 関 数には、適切に扱われなければならない、いくつかの返りコードがあります。そ れらは、次の通りです: 0 (ゼロ) 別の文字が必要です。まだ何も認識されていません。 UNVIS_VALID 有効な文字が認識されており、cp によって指される場所で利 用可能です。 UNVIS_VALIDPUSH 有効な文字が認識されており、cp によって指される場所で利 用可能です。しかしながら、現在渡された文字は、再び渡され るべきです。 UNVIS_NOCHAR 有効なシーケンスが検出されましたが、文字は、作成されませ んでした。この返りコードは、文字の間の論理的な中断を示す ために必要です。 UNVIS_SYNBAD 無効のエスケープシーケンスが検出されるか、またはデコーダ が未知の状態です。デコーダは、開始している状態に置かれま す。 ストリーム中のすべてのバイトが処理されたとき、あらゆる残っている文字を抽 出するために、もう一度 UNVIS_END に設定されたフラグで unvis() を呼び出し ます (渡された文字は、無視されます)。 また flag 引数は、ソースのエンコード (符号化) スタイルを指定するために使 用されます。VIS_HTTPSTYLE または VIS_HTTP1808, に設定されるなら、unvis() は、RFC 1808 で指定されるように URI 文字列をデコードします。VIS_HTTP1866 に設定されるなら、unvis() は、RFC 1866 で指定されるように実体の参照と番号 文字の参照をデコードします。VIS_MIMESTYLE に設定されるなら、unvis() は、 RFC 2045 で指定されるように MIME Quoted-Printable 文字列をデコードしま す。VIS_NOESCAPE に設定されるなら、unvis() は、`\' で引用された文字をデ コードしません。 次のコードの破片は、unvis() の適切な使用を説明しています。 int state = 0; char out; while ((ch = getchar()) != EOF) { again: switch(unvis(&out, ch, &state, 0)) { case 0: case UNVIS_NOCHAR: break; case UNVIS_VALID: (void)putchar(out); break; case UNVIS_VALIDPUSH: (void)putchar(out); goto again; case UNVIS_SYNBAD: errx(EXIT_FAILURE, "Bad character sequence!"); } } if (unvis(&out, '\0', &state, UNVIS_END) == UNVIS_VALID) (void)putchar(out); エラー 関数 strunvis(), strnunvis(), strunvisx() と strnunvisx() は、エラーで -1 を返し、errno を次のように設定します: [EINVAL] 無効のエスケープシーケンスが検出されたか、またはデコー ダが未知の状態です。 さらに、関数 strnunvis() と strnunvisx() は、またエラーで errno を次のよ うに設定します: [ENOSPC] 変換を実行するための十分な空間がありません。 関連項目 unvis(1), vis(1), vis(3) R. Fielding, Relative Uniform Resource Locators, RFC1808. 歴史 unvis() 関数は、4.4BSD ではじめて登場しました。strnunvis() と strnunvisx() 関数は、NetBSD 6.0 と FreeBSD 9.2 で登場しました。 バグ 名前 VIS_HTTP1808 と VIS_HTTP1866 は、間違っています。パーセントエンコー ディング (符号化) は、URL のためのオリジナルの RFC である、RFC 1738 定義 されました。RFC 1866 は、番号文字の参照と実体の参照の概念を継承する、SGML の アプリケーション、HTML 2.0 を定義しています。 FreeBSD 11.2 March 12, 2011 FreeBSD 11.2