VIS
Section: C Library Functions (3)
Index JM Home Page
BSD mandoc
Linux NetKit (0.17)
名前
vis - 文字を表示可能文字にエンコードする
書式
Fd #include <vis.h> Ft char * Fn vis char *dst char c int flag char nextc Ft int Fn strvis char *dst char *src int flag Ft int Fn strvisx char *dst char *src int len int flag
説明
Fn vis 関数は、文字 Fa c を表現する文字列を Fa dst にコピーする。 Fa c をエンコードする必要がない場合、変更せずにコピーされる。 文字列は NUL 文字で終端され、文字列の最後の文字へのポインタが返される。 エンコードされた文字の最大長は 4 文字である (最後の NUL 文字 は含まない)。 よって、複数の文字をバッファにエンコードする場合、 バッファの大きさは「エンコードされる文字の数の 4 倍 + 最後の NUL 文字 のための 1 文字」でなければならない。 引き数 flag は、エンコードまたは表示可能文字に変更される文字の デフォルトの範囲を変更する。 その他の文字 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 文字分) でなければならない。 どちらの形式でも 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 が参照される。 Fa 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 で初めて登場した。
関連キーワード
文字,
VIS,
Fa,
NUL,
dst,
表現,
形式,
関数,
int,
スペース
Linux マニュアル 一覧
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]
Index
- 名前
- 書式
- 説明
- 関連項目
- 履歴
This document was created by man2html, using the manual pages.
Time: 12:08:56 GMT, June 11, 2022