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

    778b1c86   

Описание терминала


Каждый фрагмент информации называется свойством (capability). Каждое свойство - это двухлитерный код, за каждым двухлитерным кодом стоит значение свойства. Возможны следующие типы свойств.

  • Числовой: например, co - число столбцов
  • Логический или флаговый: например, hc - терминал твердой копии (hardcopy terminal)
  • Строковый: например, st - установка табуляции (подробнее см. 8.22.3)
  • Каждое свойство связано с единственным типом значений (co всегда числовой, hc всегда флаг, а st всегда строка). Три типа значений - и три типа функций, их запрашивающих. char *name - это двухлитерный код свойства.

    * int tgetnum(char *name)

    Получение свойства с числовым значением, таким как co. Функция tgetnum(...) возвращает числовое значение, если свойство доступно, 1 в противном случае. (Заметьте, что возвращаемое значение всегда неотрицательно.)

    * int tgetflag(char *name)

    Получение логического свойства. Возвращает 1, если флаг установлен, 0 в противном случае.

    * char *tgetstr(char *name, char **area)

    Получение строкового свойства. Возвращает указатель на строку или NULL в случае отсутствия. В GNU-версии, если area есть NULL, termcap выделит память сам. termcap больше не позаботится об этом указателе, если вы не освободите name перед выходом из программы. Такой метод предпочтителен, поскольку вы не знаете сколько памяти потребуется для указателя, поэтому позвольте termcap сделать все за вас. char *clstr, *cmstr; int lines, cols; void term_caps() { char *tmp; clstr=tgetstr("cl",0); /* очистка экрана */ cmstr=tgetstr("cm",0); /* перемещение y,x */ lines=tgetnum("li"); /* полосы терминала */ cols=tgetnum("co"); /* колонки терминала */ tmp=tgetstr("pc",0); /* символ дозаполнения */ PC=tmp ? *tmp : 0; BC=tgetstr("le",0); /* сдвиг курсора на символ влево */ UP=tgetstr("up",0); /* сдвиг курсора на линию вверх */ }



    Содержание раздела