PRINTCAP(5) | FreeBSD File Formats Manual | PRINTCAP(5) |
名前
printcap — プリンタケイパビリティデータベース書式
printcap説明
printcap は termcap(5) データベースを簡単にしたものであり、ラインプリンタを記述するのに使われる。スプーリングシステムは、使用されるたびに printcap ファイルにアクセスし、プリンタの動的な追加と削除を可能にしている。データベースにおける各エントリは、1 つのプリンタを記述するのに使われる。このデータベースは書き込み可能にしておいてはならない( termcap データベースは普通書き込み可能になっている)。なぜなら、それによってアカウンティング(accounting)をすり抜けることが可能になってしまうからである。通常、デフォルトプリンタは lp である。ただし、環境変数 PRINTER が設定されていれば、そちらが優先される。各スプーリングユーティリティは、目的のプリンタを明示的に指定できるよう、オプション -P printer をサポートしている。
ある特定のプリンタに対するこのデータベースの設定の詳細は 4.3 BSD Line Printer Spooler Manual を参照せよ。
ケイパビリティ
ファイルレイアウトの説明については termcap(5) を参照せよ。Name | Type | Description | |
af | str | NULL | アカウントファイル名 |
br | num | none | lp が tty の場合, そのボーレートを設定する ( ioctl(2) コール) |
cf | str | NULL | cifplot データ用フィルタ |
df | str | NULL | tex データ (DVI フォーマット) 用フィルタ |
fc | num | 0 | lp が tty の場合, フラグビットをクリアーする ( sgtty.h) |
ff | str | ‘ \f ’ |
改ページ(form feed) のために送信する文字列 |
fo | bool | false | デバイスオープン時に改ページ(form feed)を印刷する |
fs | num | 0 | `fc' と同様だが、こちらはビットをセットする |
gf | str | NULL | グラフデータ用フィルタ ( plot(3) フォーマット ) |
hl | bool | false | 最後にバーストヘッダーページを印刷する |
ic | bool | false | ドライバはインデント付き印刷のために (非標準の) ioctl をサポートする |
if | str | NULL | アカウントのためのテキストフィルタ名 |
lf | str | /dev/console | エラーログファイル名 |
lo | str | lock | ロックファイル名 |
lp | str | /dev/lp | 出力に対してオープンするデバイス名 |
mx | num | 1000 | 最大ファイルサイズ ( BUFSIZ ブロックの数で指定), 0 = 制限なし |
nd | str | NULL | キューリストのための次のディレクトリ (未実装) |
nf | str | NULL | ditroff データ(デバイス非依存 troff)用フィルタ |
of | str | NULL | 出力フィルタプログラム名 |
pc | num | 200 | 1 フィートもしくは 1 ページあたりの価格(1/100 セント単位) |
pl | num | 66 | ページ長 (行数) |
pw | num | 132 | ページ幅 (文字数) |
px | num | 0 | ピクセル単位でのページ幅 (水平方向) |
py | num | 0 | ピクセル単位でのページ長 (垂直方向) |
rf | str | NULL | FORTRAN スタイルのテキストファイルを印刷するためのフィルタ |
rg | str | NULL | 制限グループ。このグループのメンバーのみアクセスが許される |
rm | str | NULL | リモートプリンタのためのマシン名 |
rp | str | ``lp'' | リモートプリンタ名引数 |
rs | bool | false | ローカルにアカウントをもったリモートユーザに限定する |
rw | bool | false | 読み書きのためにプリンタデバイスをオープンする |
sb | bool | false | ショートバナー(short banner) (1 行のみ) |
sc | bool | false | 複数コピーを抑制する |
sd | str | /var/spool/lpd | スプールディレクトリ |
sf | bool | false | 改ページ(form feed)を抑制する |
sh | bool | false | バーストページヘッダーの印刷を抑制する |
st | str | status | ステータスファイル名 |
tf | str | NULL | troff データ(cat 写植)用フィルタ |
tr | str | NULL | キューが空の場合に印刷するための後書き文字列(trailer string) |
vf | str | NULL | ラスタイメージ(raster image)用フィルタ |
ローカルのラインプリンタドライバが字下げをサポートしているならば、デーモンはその方法を理解できなければならない。
フィルタ
lpd(8) デーモンは、さまざまなプリンタのタイプに応じてファイルを処理するために、 filters (フィルタ) のパイプラインを構築している。選択されるフィルタは、 lpr(1) へ渡されるフラグに依存している。パイプラインの構築は、次のようになる :
p pr | if 通常テキスト + pr(1) none if 通常テキスト c cf cifplot d df DVI (tex) g gf plot(3) n nf ditroff f rf Fortran t tf troff v vf ラスタイメージ(raster image)
if フィルタは、次の引数とともに呼び出される:
-c フラグは、 lpr に -l フラグ(制御文字を文字としてそのまま通す)が指定してある時に限って渡される。 width と length は、ページの幅と長さ(それぞれ pw と pl から得られる)を文字数で指定する。 -n と -h はそれぞれ、ジョブ所有者のログイン名とホスト名を指定する。 acct-file は、 printcap の af エントリから渡される。
if が指定されていない場合は、代わりに of が使用される。これらの間には、 if がそれぞれのジョブに対して毎回オープンされるのに対し、 of は 1 回しかオープンされないという違いがある。したがって、アカウンティング(accounting)を行なうには if の方が適している。 of には、 width と length の 2 つのフラグが与えられるだけである。
他のすべてのフィルタは、次のようにして呼び出される:
ただし、 width と length はピクセル単位で表され、それぞれ px エントリと py エントリによって指定される。
すべてのフィルタは、そのファイルとして stdin (標準入力)を、プリンタとして stdout (標準出力)をとる。そのログは、 stderr (標準エラー出力)に対して、もしくは syslog(3) を使ってとられる。また、 SIGINT を無視することは許されない。
ロギング(LOGGING)
ラインプリンタプログラム自身 (つまり、 lp* プログラム) によって生成されたエラーメッセージは、 LPR を使うことで syslog(3) によって記録される。フィルタのうちの 1 つの stderr (標準エラー出力) 上に印刷されたメッセージは、それに対応する lf ファイルへと送られる。もちろん、フィルタはそれ自身で syslog を使ってもかまわない。コンソールへ送られるエラーメッセージには、改行(LF)だけではなく、復帰(CR)と改行(LF)が追加される。
履歴
printcap ファイルフォーマットは、 4.2BSD で登場した。May 10, 1991 | BSD 4.2 |