other versions
| VIS(3) | Library Functions Manual | VIS(3) | 
名前¶
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_WHITEVIS_SP|VIS_TAB|VIS_NLと同じ。VIS_SAFE- 「安全でない」文字だけをエンコードする。 安全でないとは、一般的な端末に予期せぬ機能を動作させてしまうことを意味する。 現在のところ、スペース・タブ・改行・バックスペース・ベル・リターン - そして全ての表示可能文字 - はエンコードされない。
 
\’
  が特殊シーケンスの始まりとして使われる。
  2
  つのバックスペースが実際のバックスペースを表現するために使われる。
  以下のような可視化フォーマットがある:
- (デフォルト)
 - メタ文字 (8
      ビット目を使う文字)
      を表現するためには、
      ‘
M’ を使うこと。 制御文字 (iscntrl(3) を参照) を表現するためには、キャレット ‘^’ を使うこと。 以下のフォーマットが使われる: 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 進数を表す。 
VIS_NOSLASH
  がある。
  このフラグは、2
  つのバックスラッシュと
  デフォルトフォーマットで前におかれるバックスラッシュを使わないようにする。
  (つまり、制御文字は
  ‘^C’
  で、メタ文字は
  ‘M-C’
  で表される)。
  このフラグが設定されると、エンコードは曖昧で可逆でなくなる。
関連項目¶
vis(1), unvis(1), unvis(3)履歴¶
これらの関数は 4.4BSD で初めて登場した。| June 9, 1993 | Linux NetKit (0.17) |