VIS

Section: C Library Functions (3)
索引 jman

BSD mandoc
 

索引

名称

vis - キャラクタを視覚的にコード化  

索引

ライブラリ

Lb libc  

索引

書式

In vis.h Ft char * Fn vis char *dst int c int flag int nextc Ft int Fn strvis char *dst const char *src int flag Ft int Fn strvisx char *dst const char *src size_t len int flag  

索引

解説

Fn vis 関数は、キャラクタ Fa c を表す文字列を Fa dst にコピーします。 Fa c がコード化を必要としない場合は、何も変更せずにコピーします。 文字列は null で終端され、文字列の最後へのポインタが返されます。 コード化の長さの最大値は 4 キャラクタです (最後の NUL は含まない)。従って、キャラクタのセットを バッファにコード化するときは、バッファのサイズはコード化される キャラクタ数の 4 倍と、最後に付ける NUL の分の 1 が必要です。コード化する キャラクタのデフォルト範囲を変更するため、また視覚的な表現を 変更するためにはフラグパラメータを使います。追加のキャラクタ、 Fa nextc は、コード化形式 VIS_CSTYLE を選択したときにのみ使います (以下に説明します)。

Fn strvis および Fn strvisx 関数は、文字列 Fa src の視覚的表現を Fa dst にコピーします。 Fn strvis 関数は、 Fa src から最初の NUL までのキャラクタをコード化します。 Fn strvisx 関数は、 Fa src から正確に Fa len 個のキャラクタをコード化します (これは、複数の NUL を含む可能性のあるデータのブロックを コード化する場合に役に立ちます)。どちらの形式でも Fa dst を NUL で終端します。 Fa dst のサイズは、 Fa src からコード化されるキャラクタ数の 4 倍でなければなりません (プラス NUL のための 1)。どちらの形式でも、キャラクタ数を Fa dst に返します (最後の NUL は含まずに)。

コード化は、すべてグラフィックキャラクタで構成されたユニークで 逆変換可能な表現です。すなわち、 unvis(3) または strunvis(3) 関数を使えば元の形に戻すことができます。

制御できるパラメータは 2 つあります:コード化するキャラクタの範囲、 および使用する表現のタイプです。デフォルトでは、スペース、タブ、改行を 除くすべての非グラフィックキャラクタがコード化されます。( isgraph(3) 参照) これは、以下のフラグによって変更されます:

VIS_SP
スペースもコード化します。
VIS_TAB
タブもコード化します。
VIS_NL
改行もコード化します。
VIS_WHITE
VIS_SP | VIS_TAB | VIS_NL と同義。
VIS_SAFE
"unsafe" キャラクタのみをコード化します。"unsafe"キャラクタとは、 普通の端末に予期しない機能を引き起こすような制御キャラクタ のことです。現在のところ、この形式ではすべてのグラフィックキャラクタに 加えて、スペース、タブ、改行、バックスペース、ベル、リターンを コード化しないでおきます。

コード化には 4 つの形式があります。すべての形式は、 バックスラッシュキャラクタ `\' を使って特殊シーケンスを導入します。本当のバックスラッシュを表すには、
 2 つのバックスラッシュを使います。次のような視覚的形式があります:

(default)
`M' を使ってメタキャラクタ (8 番目のビットがセットされた キャラクタ) を表し、カラット `^' を使って制御キャラクタを表します ( iscntrl(3) 参照)。 次のような形式を使います:

\^C
制御キャラクタ `C' を表します。 `\000' から `\037' まで、および `\177' のキャラクタを 含みます ( のように)。
\M-C
8 番目のビットがセットされたキャラクタ `C' を表します。 `\241' から `\377' までのキャラクタを含みます。
\M^C
8 番目のビットがセットされた制御キャラクタ `C' を表します。 `\200' から `\237' まで、および のキャラクタを含みます ( `\M^?' のように)。
\040
ASCII のスペースを表します。
\240
メタスペースを表します。

VIS_CSTYLE
C スタイルのバックスラッシュシーケンスを使って、標準非印刷 キャラクタを表します。次に示すシーケンスを使って、指定されているキャラクタ を表します:
\a - BEL (007)


\b - BS (010)


\f - NP (014)


\n - NL (012)


\r - CR (015)


\t - HT (011)


\v - VT (013)


\0 - NUL (000)


この形式を使う場合は、nextc パラメータを見て NUL キャラクタを `\000' ではなく `\0' とコード化するかどうかを判断します。 Fa nextc が 8 進数字である場合は、あいまいさを避けるために `\000' の表現を使います。

VIS_HTTPSTYLE
RFC 1808 に記述された URI エンコードを使用します。 形式は `%dd' であり、 d は、16 進数の桁を表現します。
VIS_OCTAL
3 桁の 8 進法シーケンスを使います。 d が 8 進数字を表す場合は、形式は `\ddd' となります。

もう一つのフラグ、 VIS_NOSLASH は、バックスラッシュの重複およびデフォルト形式 (すなわち、 制御キャラクタを `^C' で、メタキャラクタを `M-C' で表す形式) の前のバックスラッシュを抑制します。このフラグがセット してあると、コード化はあいまいとなり逆変換不能となります。  

索引

関連項目

unvis(1), unvis(3)
R. Fielding Relative Uniform Resource Locators RFC1808
 

索引

歴史

これらの関数は BSD 4.4 ではじめて登場しました。


 

索引

Index

名称
ライブラリ
書式
解説
関連項目
歴史

jman



Time: 07:07:15 GMT, January 12, 2009