База данных характеристик принтера
/etc/printcap
ЗОСРВ «Нейтрино»
База данных /etc/printcap
представляет собой упрощенную версию базы данных termcap, используемую для описания характеристик принтеров. Система спулинга обращается к файлу /etc/printcap
при каждом использовании, поэтому добавлять или удалять принтеры можно динамически. Каждая запись в базе данных описывает один принтер.
Обратите внимание, что эту базу данных невозможно заменить (в отличие от termcap), поскольку в таком случае был бы возможен обход учета.
В качестве принтера по умолчанию обычно используется lp, однако для переопределения этого значения можно использовать переменную среды PRINTER
. Все утилиты спулинга поддерживают опцию -P принтер, которая позволяет явным образом указывать целевой принтер.
Каждая запись в файле /etc/printcap
описывает один принтер. Запись представляет собой строку, состоящую из некоторого числа полей, разделенных символами двоеточия (:). В первой записи для каждого принтера указываются известные имена принтера, разделенные символами "|".
В качестве первого имени традиционно используется числовое значение. Второе имя – самое общеупотребительное сокращение для принтера. В качестве последнего имени должно быть указано подробное имя, позволяющее точно идентифицировать принтер. Второе имя не должно содержать пробелов; в последнем имени допускается использование пробелов для удобочитаемости. Записи могут размещаться на нескольких строках. Чтобы указать, что запись продолжается на следующей строке, используется символ обратной косой черты (\). Для удобства чтения допускается использовать пустые поля.
Перед записями характеристик в файле /etc/printcap
обязательно указывается код из двух символов; существуют следующие типы характеристик:
Характеристики
Имя | Описание | Тип | Значение по умолчанию |
---|---|---|---|
af | Имя учетного файла. | Строка | NULL |
br | Если устройство построчной печати представляет собой терминал ввода-вывода, то задать для него указанную скорость двоичной передачи в бодах (вызов ioctl()). | Числовое значение | Отсутствует |
cf | Фильтр данных cifplot. | Строка | NULL |
df | Фильтр данных TeX (формат DVI). | Строка | NULL |
du | Идентификатор пользователя daemon. | Строка | 0 |
fc | Если устройство построчной печати является терминалом ввода-вывода, то сбросить флаговые биты. | Числовое значение | 0 |
ff | Строка, передаваемая для выполнения перевода страницы. | Строка | \f |
fo | При открытии устройства выполнить печать перевода страницы. | Булево значение | False |
fs | Аналогична fc, но выполняется установка битов. | Числовое значение | 0 |
gf | Фильтр данных диаграммы (формат plot(3X)). | Строка | NULL |
hl | Вывести на печать заголовок титульной страницы в последнюю очередь. | Булево значение | False |
ic | Драйвер поддерживает (нестандартная функция) отступы в распечатке посредством ioctl(). | Булево значение | False |
if | Имя фильтра ввода/обмена данными (создается для каждого задания). | Строка | NULL |
lf | Имя файла регистрации ошибок. | Строка | /dev/console |
lo | Имя файла блокировки. | Строка | lock |
lp | Имя устройства, открываемого для вывода. | Строка | /dev/lp |
mc | Максимальное число копий. | Числовое значение | 0 |
ms | Список режимов терминала, которые необходимо установить или сбросить. | Строка | NULL |
mx | Максимальный размер файла (в блоках BUFSIZ); 0 = без ограничения. | Числовое значение | 1000 |
nf | Фильтр данных ditroff (независимый от устройства форматирования текста). | Строка | NULL |
of | Имя фильтра вывода/баннеров (создается однократно). | Строка | NULL |
pc | Цена за фут или страницу в сотых долях цента. | Числовое значение. | 200 |
pl | Длина страницы (в строках). | Числовое значение | 66 |
pw | Ширина страницы (в символах). | Числовое значение | 132 |
px | Ширина страницы в пикселях (по горизонтали). | Числовое значение | 0 |
py | Длина страницы в пикселях (по вертикали). | Числовое значение | 0 |
rf | Фильтр для печати текстов в стиле ФОРТРАН. | Строка | NULL |
rg | Ограничение по группе – доступ предоставляется только членам группы. | Строка | NULL |
rm | Имя узла для удаленного принтера. | Строка | NULL |
rp | Аргумент имени удаленного принтера. | Строка | lp |
rs | Ограничить доступ удаленных пользователей: допуск только пользователей с локальными учетными записями. | Булево значение | False |
rw | Открыть устройство принтера на чтение-запись, а не только на запись. | Булево значение | False |
sb | Короткий баннер (только одна строка). | Булево значение | False |
sc | Подавлять печать нескольких копий. | Булево значение | False |
sd | Каталог спулинга. | Строка | /usr/spool/output/lpd |
sf | Подавлять перевод страницы. | Булево значение | False |
sh | Подавлять печать заголовка титульной страницы. | Булево значение | False |
st | Имя файла состояния. | Строка | status |
tc | Имя аналогичного принтера; должно указываться последним. | Строка | NULL |
tf | Фильтр данных troff (устройство фотовывода C/A/T). | Строка | NULL |
tr | Концевая строка, печатаемая по завершении вывода очереди. | Строка | NULL |
vf | Фильтр растровых изображений. | Строка | NULL |
xc | Если устройство построчной печати является терминалом ввода-вывода, то сбросить биты локального режима. | Числовое значение | 0 |
xs | Аналогична xc, однако выполняется установка битов. | Числовое значение | 0 |
Если драйвер локального устройства построчной печати поддерживает отступы, то сервису требуется информация о способе вызова драйвера.
Обратите внимание, что в полях fs, fc, xs и xc указываются маски флагов, а не значения. При открытии устройства (если оно подключено к порту терминала) сервис устройства построчной печати устанавливает для ряда флагов этого устройства значения по умолчанию. Затем сбрасываются флаги, указанные в поле fc; затем устанавливаются флаги из поля fs (или наоборот, в зависимости от порядка fc#nnnn и fs#nnnn в файле /etc/printcap
).
Биты, сброшенные полем fc и установленные полем fs, – это биты из поля sg_flags структуры sgtty, установленные вызовом ioctl() TIOCSETP
, а биты, сброшенные полем xc и установленные полем xs, – это биты из машинного слова "local flags", установленного вызовом ioctl() TIOCLSET
. Описания этих флагов см. в файле.
Например, для установки в качестве набора флагов в поле fs битовой маски 06300 (установка режимов EVENP, ODDP и XTABS; сброс остальных флагов) укажите следующую строку:
:fc#0177777:fs#06300:
Такая же процедура применяется и к полям xc и xs. Кроме того, для выбора устанавливаемых и сбрасываемых режимов можно использовать поле ms. Эти режимы указываются как режимы stty; можно указывать любой режим, поддерживаемый stty, за исключением скорости двоичной передачи в бодах (которая указывается в поле br).
Например, при установке для терминального порта (к которому подключен принтер) проверки на четность, замены символов табуляции, запрета трансляции символа новой строки в символ возврата каретки/перевода строки, активации управления потоком RTS/CTS (запроса/подтверждения готовности) укажите следующую строку:
:ms=evenp,-tabs,nl,crtscts:
Поле tc в списке характеристик всегда указывается последним. С каждым типом принтера должна быть сопоставлена общая запись, описывающая общие характеристики. Затем для каждого отдельного принтера можно указать собственные характеристики и добавить поле tc, указывающее на общую запись для данного типа принтера.
Базовые подсистемы ЗОСРВ «Нейтрино»
Предыдущий раздел: Конфигурационные файлы