Руководство программиста для Linux


Поиск описания терминала


* int tgetent(void *buffer, const char *termtype)

В операционной системе Linux текущее имя терминала содержится в переменой среды TERM. Поэтому termtype есть результат вызова getenv(3). Что касается buffer, то в GNU-версии Linux termcap не нужно захватывать память. В других версиях вам придется выделить 2048 байт (прежде buffer требовал 1024 байта, но сейчас размер удвоился).

tgetent(...) возвращает 1 в случае успеха и 0 когда база данных найдена, но не имеет точки входа для TERM. Другие ошибки возвращают различные значения.

Следующий пример объясняет как использовать getent(...):

#define buffer 0 char *termtype=getenv("TERM"); int ok; ok=tgetent(buffer,termtype); if(ok==1) /* все нормально, мы имеем вход */ else if(ok==0) /* ой, что-то не так с TERM * проверим сначала termtype, затем базу данных termcap */ else /* у-у-у, глобальная ошибка */

По умолчанию termcap использует /etc/termcap/ как базу данных. Если переменная среды TERMCAP установлена, например, в $HOME/mytermcap, то все функции будут пользоваться mytermcap вместо /etc/termcap. Без начального слэша в TERMCAP определенное значение понимается как имя для терминала.




Начало  Назад  Вперед