Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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 で初めて登場した。

Linux NetKit (0.17)                               June 9, 1993                                            VIS(3)