VIS(3) FreeBSD ライブラリ関数マニュアル VIS(3)
名称
vis − キャラクタを視覚的にコード化 |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <vis.h> char * |
vis(char *dst, int c, int flag, int nextc); int |
strvis(char *dst, const char *src, int flag); int |
strvisx(char *dst, const char *src, size_t len, int flag); |
解説 |
vis() 関数は、キャラクタ c を表す文字列を dst にコピーします。 c がコード 化を必要としない場合は、何も変更せずにコピーします。文字列は null で終端 され、文字列の最後へのポインタが返されます。コード化の長さの最大値は 4 キャラクタです (最後の NUL は含まない)。従って、キャラクタのセットをバッ ファにコード化するときは、バッファのサイズはコード化されるキャラクタ数の 4 倍と、最後に付ける NUL の分の 1 が必要です。コード化するキャラクタのデ フォルト範囲を変更するため、また視覚的な表現を変更するためにはフラグパラ メータを使います。追加のキャラクタ、 nextc は、コード化形式 VIS_CSTYLE を 選択したときにのみ使います (以下に説明します)。 strvis() および strvisx() 関数は、文字列 src の視覚的表現を dst にコピー します。 strvis() 関数は、 src から最初の NUL までのキャラクタをコード化 します。 strvisx() 関数は、 src から正確に len 個のキャラクタをコード化し ます (これは、複数の NUL を含む可能性のあるデータのブロックをコード化する 場合に役に立ちます)。どちらの形式でも dst を NUL で終端します。 dst のサ イズは、 src からコード化されるキャラクタ数の 4 倍でなければなりません ( プラス NUL のための 1)。どちらの形式でも、キャラクタ数を dst に返します ( 最後の NUL は含まずに)。 コード化は、すべてグラフィックキャラクタで構成されたユニークで逆変換可能 な表現です。すなわち、 unvis(3) または strunvis(3) 関数を使えば元の形に戻 すことができます。 制御できるパラメータは 2 つあります:コード化するキャラクタの範囲、および 使用する表現のタイプです。デフォルトでは、スペース、タブ、改行を除くすべ ての非グラフィックキャラクタがコード化されます。( isgraph(3) 参照) これ は、以下のフラグによって変更されます: |
VIS_SP
スペースもコード化します。 VIS_TAB VIS_NL VIS_WHITE VIS_SAFE コード化には 4 つの形式があります。すべての形式は、バックスラッシュキャラ クタ ‘\’ を使って特殊シーケンスを導入します。本当のバックスラッシュを表す には、 2 つのバックスラッシュを使います。次のような視覚的形式があります: (default) \^C \M-C \M^C \040 \240 VIS_CSTYLE \a - BEL (007) この形式を使う場合は、nextc パラメータを見て NUL キャラク タを ‘\000’ ではなく ‘\0’ とコード化するかどうかを判断しま す。 nextc が 8 進数字である場合は、あいまいさを避けるため に ‘\000’ の表現を使います。 |
VIS_HTTPSTYLE
RFC 1808 に記述された URI エンコードを使用します。形式は ‘%dd’ であり、 d は、16 進数の桁を表現します。 VIS_OCTAL もう一つのフラグ、 VIS_NOSLASH は、バックスラッシュの重複およびデフォルト 形式 (すなわち、制御キャラクタを ‘^C’ で、メタキャラクタを ‘M-C’ で表す形 式) の前のバックスラッシュを抑制します。このフラグがセットしてあると、 コード化はあいまいとなり逆変換不能となります。 関連項目 |
R. Fielding, Relative Uniform Resource Locators, RFC1808.
歴史
これらの関数は 4.4BSD ではじめて登場しました。 FreeBSD 10.0 July 25, 1996 FreeBSD 10.0 |