EN JA
curs_termcap(3X)
curs_termcap(3X) curs_termcap(3X)

名称

tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs - terminfo ケーパビリティデータベースへの直接の curses インタフェース

書式

#include <curses.h>
 
#include <term.h>
 
extern char PC;
 
extern char * UP;
 
extern char * BC;
 
extern short ospeed;
 
int tgetent(char *bp, const char *name);
 
int tgetflag(char *id);
 
int tgetnum(char *id);
 
char *tgetstr(char *id, char **area);
 
char *tgoto(const char *cap, int col, int row);
 
int tputs(const char *str, int affcnt, int (*putc)(int));
 

解説

これらのルーチンは、 termcap ライブラリを使用するプログラムのための変換支援として含まれています。それらのパラメータは、同じで、ルーチンは、 terminfo データベースを使用してエミュレートされます。したがって、terminfo エントリがコンパイルされたエントリのケーパビリティを問い合わせるためだけに、それらを使用することができます。

tgetent ルーチンは、 name のためのエントリをロードします。成功すれば、1 を返し、そのようなエントリがないなら、0 を返し、 terminfo データベースを見つけることができないなら、-1 を返します。エミュレーションは、バッファポインタ bp を無視します。

tgetflag ルーチンは、 id のためのブール値のエントリを取得し、それが利用可能でないなら、0 を取得します。

tgetnum ルーチンは、 id のための数値のエントリを取得し、それが利用可能でないなら、-1 を取得します。

tgetstr ルーチンは、 id のための文字列のエントリを返し、それが利用可能でないなら、0 を返します。返された文字列を出力するためには、 tputs を使用します。また、返り値は、 area によって指されるバッファにコピーされ、 area 値は、この値を終了するヌル文字の次を指すために更新されます。

tgetflag, tgetnumtgetstrid パラメータの最初の 2 つの文字だけが検索で比較されます。

tgoto ルーチンは、与えられたケーパビリティへパラメータのインスタンスを作成します。このルーチンからの出力は、 tputs に渡されることになっています。

tputs ルーチンは、 curs_terminfo(3X) マニュアルページに説明されています。 termcap または terminfo 名のいずれかによってケーパビリティを検索して取り出すことができます。

変数 PCUPBC は、それぞれ pad_charcursor_upbackspace_if_not_bs のための terminfo エントリのデータに tgetent によって設定されます。 UP は、ncurses で使用されません。 PC は、 tdelay_output 関数で使用されます。 BC は、 tgoto エミュレーションで使用されます。変数 ospeed は、端末の速度を反映するシステム特有のコードで ncurses によって設定されます。

戻り値

明示的に注記されたものを除いて、整数を返すルーチンは、失敗すると ERR を返し、成功して終了すれば、 OK (SVr4 は、" ERR 以外の整数値"とだけ明記されています) を返します。

ポインタを返すルーチンは、エラーの場合 NULL を返します。

バグ

ca または任意の他のパラメータ化された文字列を取って来るために tgetstr を呼び出すなら、より古くなく、全く互換性があるといえない termcap 記法の terminfo 記法で返されることに注意してください。それで行なうすべてが、terminfo として terminfo スタイルの文字列を拡張した、 tgoto または tparm の呼び出しであるなら、これは、問題を起こしません。 (termcap をサポートするように設定されるなら、 tgoto 関数は、文字列が実際に "%p"パラメータまたは "$<..>"遅延を探すことによって terminfo スタイルかどうかチェックし、文字列が terminfo であるように思えないなら termcap スタイルの構文解析を呼び出します)。

文字列ケーパビリティ中の詰め物を表わすための terminfo 仕様が termcap と異なるので、 tputs("50"); は、50 ミリ秒のビジー待ちではなく定数 "50"が出力されます。それに対処してください。

termcap には、terminfo の sgr 文字列に類似のものが何もないことに注意してください。この 1 つの結論は、termcap アプリケーションが、me (terminfo の sgr0) が代わりの文字セットをリセットしないと仮定することです。この実装は、この点において termcap の制限に対応するために termcap インタフェースに示されたデータをチェックして変更しています。

移植性

XSI Curses standard, Issue 4 は、これらの関数を記述しています。しかしながら、それらは、"取り止める"とマークされ、将来のバージョンで削除されるかもしれません。

XSI Curses 規格も SVr4 マニュアルページも、 tgetent の返り値を正確に文書化していません、しかしながら、すべては、SVr1 以来ずっと返された事実があります。特に、XSI Curses 文書の手ぬかりは、 tgetentOK または ERR を返す意味を誤って解釈しています。これらの関数の目的は、 termcap ライブラリとの互換性を提供することであるので、それは、ncurses ではなく XCurses, Issue 4, バージョン 2 の欠陥です。

外部変数は、特定の termcap アプリケーションのサポートを行ないます。しかしながら、それらの変数の termcap アプリケーションの使用は、例えば、入力と出力の区別がないなど、不完全に文書化されています。特に、いくつかのアプリケーションは、 ospeed を宣言し、そして/または、変更することが報告されています。

関連項目

curses(3X), terminfo(5), putc(3).