VIS
Section: C Library Functions (3)
Index
JM Home Page
roff 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 で初めて登場した。
Index
- 名前
-
- 書式
-
- 説明
-
- 関連項目
-
- 履歴
-
This document was created by
man2html,
using the manual pages.
Time: 16:46:45 GMT, November 24, 2023