スポンサーリンク

TERMCAP(3) FreeBSD ライブラリ関数マニュアル TERMCAP(3)

名称

tgetent, tgetnum, tgetflag, tgetstr, tgoto, tputs, tparm, __set_ospeed − ターミナルとは独立した操作関数

書式

#include <termcap.h>

char PC;
char *BC;
char *UP;
short ospeed;

int

tgetent(char *bp, const char *name);

int

tgetnum(const char *id);

int

tgetflag(const char *id);

char *

tgetstr(const char *id, char **area);

char *

tgoto(const char *cm, int destcol, int destline);

int

tputs(const char *cp, int affcnt, int (*outc)(int));

char *

tparm(const char *cp, ...);

void

__set_ospeed(unsigned int speed);

解説

これらの関数は、端末機能データベース、普通は /usr/share/misc/termcap から 機能を抽出して使用し、その形式は termcap(5) に説明してあります。これらは 低レベルのルーチンです。より高レベルのパッケージについては、 curses(3) を 参照してください。

tgetent() 関数は、端末名の入力を bp のバッファに抽出します。引数 bp はサ イズ 1024 のキャラクタバッファでなければならず、またそれに続いて関数 tgetnum(), tgetflag(), tgetstr() などの呼び出しが行われても保持されます。 tgetent() 関数は、データベースファイル termcap がどれも開けない場合は −1 を返し、与えた端末名が入力されていない場合は 0 を返し、すべてがうまく処理 された場合は 1 を返します。この関数は環境の中で TERMCAP 変数を探します。 それが見つかり、その値がスラッシュで始まっておらず、また端末タイプ name が環境ストリング TERM と同じである場合は、 termcap ファイルを読まずに TERMCAP ストリングを使用します。スラッシュで始まっている場合は、検索する termcap ファイルのパス名としてそのストリングを使います。 TERMCAP がスラッ シュで始まっておらす、かつ name が TERM と異なる場合は、環境変数 TERMPATH が存在しなければ tgetent() 関数はファイル $HOME/.termcap および /usr/share/misc/termcap をこの順番で探します。 TERMPATH が存在すれば、そ れが検索するファイルの(空白またはコロンで区切られた)パス名リストを指定 します。複数のファイルを探す場合で要求されたエントリに tc フィールドがあ る場合は、それが指名するエントリを同じファイルまたはそれに続くファイルの 中に探さねばなりません。これによって、 tgetent() 関数を呼び出すプログラム への入力のスピードを上げることができるとともに、新しい端末記述のデバッグ や /usr/share/misc/termcap ファイルを書けない場合に自分の端末の端末説明を 作ることが簡単になります。

tgetnum() 関数は、機能 id の数値を取り入れて、それが端末に対して与えられ ていない場合は −1 を返します。 tgetflag() 関数は、指定された機能が端末の エントリに存在する場合には 1 を返し、存在しない場合には 0 を返します。 tgetstr() 関数は、機能 id のストリング値を返し、それを area のバッファに 入れ、 area ポインタを進めます。この関数は、カーソルのアドレスおよびパッ ディング情報を除いて、 termcap(5) に記述されたこのフィールドの略称をデ コードします。 tgetstr() 関数は、その機能が見つからない場合は NULL を返し ます。

tgoto() 関数は、 destline 行の cm から go to カラムまででデコードされた カーソルアドレスストリングを返します。この関数は、返すストリングに \n, ^D または ^@ を入れることを避けるために必要な場合には外部変数 UP ( up 機能か ら ) および BC ( bs ではなく bc が与えられている場合 ) を使います。( tgoto() 関数を呼び出すプログラムは、 tgoto() 関数がタブを出力する可能性が あるので、必ず XTABS ビットをオフにしておかなければなりません。いずれにせ よ、termcap を使っているプログラムは、端末によっては control-I を他の機 能、例えば破壊不能スペースに使っているので、一般に XTABS をオフにする必要 があることに注意してください ) 。 理解できない % シーケンスが与えられてい る場合は、 tgoto() 関数は (OOPS) を返します。

tputs() 関数は、 cp ストリングの先頭のパッディング情報をデコードします。 affcnt は、この操作によって影響を受ける行数を与え、これに該当しない場合は 行数は 1 となり、 outc は各キャラクタとともに順に呼び出されるルーチンで す。外部変数 PC には、パッドキャラクタが null (^@) では不適当な場合に は、( pc 機能から ) 使用すべきパッドキャラクタが入っていなければなりませ ん。外部変数 ospeed には、 stty(3) によりエンコードされた端末の出力速度が 入っていなければなりません。 __set_ospeed() 関数は、cps で表した速度 speed をもっとも近い stty(3) コード化された速度に変換し、その結果を ospeed に保存します。

tparm() 関数は、ストリング cp を与えられたパラメータによってインスタンス に変換します。 cp にそのパラメータが適用された結果を指すポインタが返され ます。理解できない % シーケンスが与えられた場合は、 tparm() 関数は (OOPS) を返します。

ファイル

       /usr/lib/libtermcap.a

−l ltermcap ライブラリ ( −l ltermlib とも呼ばれ ます )
/usr/share/misc/termcap
標準端末機能データベース
$HOME/.termcap
ユーザの端末機能データベース

参照

ex(1), curses(3), termcap(5)

歴史

tgetent() 関数は、 4.0BSD に現れました。

4th Berkeley Distribution December 11, 1993 4th Berkeley Distribution

スポンサーリンク