Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
vis — 文字を表示可能文字にエンコードする
書式
#include <vis.h> char * vis(char *dst, char c, int flag, char nextc) int strvis(char *dst, char *src, int flag) int strvisx(char *dst, char *src, int len, int flag)
説明
vis() 関数は、文字 c を表現する文字列を dst にコピーする。 c をエンコードする必要がない場 合、変更せずにコピーされる。 文字列は NUL 文字で終端され、文字列の最後の文字へのポインタが返 される。 エンコードされた文字の最大長は 4 文字である (最後の NUL 文字 は含まない)。 よっ て、複数の文字をバッファにエンコードする場合、 バッファの大きさは「エンコードされる文字の数 の 4 倍 + 最後の NUL 文字 のための 1 文字」でなければならない。 引き数 flag は、エンコードま たは表示可能文字に変更される文字の デフォルトの範囲を変更する。 その他の文字 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_SP | VIS_TAB | VIS_NL と同じ。 VIS_SAFE 「安全でない」文字だけをエンコードする。 安全でないとは、一般的な端末に予期せぬ 機能を動作させてしまうことを意味する。 現在のところ、スペース・タブ・改行・バッ クスペース・ベル・リターン - そして全ての表示可能文字 - はエンコードされない。 3 つのエンコード形式がある。 全ての形式で、バックスペース ‘\’ が特殊シーケンスの始まりとして 使われる。 2 つのバックスペースが実際のバックスペースを表現するために使われる。 以下のような 可視化フォーマットがある: (デフォルト) メタ文字 (8 ビット目を使う文字) を表現するためには、 ‘M’ を使うこと。 制御文字 (iscntrl(3) を参照) を表現するためには、キャレット ‘^’ を使うこと。 以下のフォー マットが使われる: \^C 制御文字 ‘C’ を表す。 ‘\000’ から ‘\037’ の間の文字と ‘\177’ (‘\^?’ と同 じ) を表す。 \M-C 8 ビット目がセットされている文字 ‘C’ を表す。 ‘\241’ から ‘\376’ の間の文 字を表す。 \M^C 8 ビット目がセットされている制御文字 ‘C’ を表す。 with the 8th bit set. Spans characters ‘\200’ から ‘\237’ の間の文字と ‘\377’ (‘\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) このフォーマットを使った場合、 NUL 文字を ‘\000’ ではなく ‘\0’ としてエンコード するかを決定するために、引き数 nextc が参照される。 nextc が 1 個の 8 進数の場 合、曖昧さを避けるため後者の表現が使われる。 VIS_OCTAL 3 個の 8 進数シーケンスを使う。 ‘\ddd’ という形式が使われる。 ここで d は 8 進数 を表す。 さらに、もう 1 つフラグ VIS_NOSLASH がある。 このフラグは、2 つのバックスラッシュと デフォル トフォーマットで前におかれるバックスラッシュを使わないようにする。 (つまり、制御文字は ‘^C’ で、メタ文字は ‘M-C’ で表される)。 このフラグが設定されると、エンコードは曖昧で可逆でなくな る。
関連項目
vis(1), unvis(1), unvis(3)
履歴
これらの関数は 4.4BSD で初めて登場した。