書式
printcap説明
printcap は termcap(5) データベースを簡単にしたものであり、ラインプリンタを記述するのに使われる。 スプーリングシステムは、使用されるたびに printcap ファイルにアクセスし、プリンタの動的な追加と削除を可能にしている。 データベースにおける各エントリは、1 つのプリンタを記述するのに使われる。 このデータベースは書き込み可能にしておいてはならない( termcap データベースは普通書き込み可能になっている)。 なぜなら、それによってアカウンティング(accounting)をすり抜けることが 可能になってしまうからである。通常、デフォルトプリンタは lp である。ただし、環境変数 PRINTER が設定されていれば、そちらが優先される。 各スプーリングユーティリティは、目的のプリンタを明示的に指定できるよう、 オプション -P printer をサポートしている。
ある特定のプリンタに対するこのデータベースの設定の詳細は "4.3 BSD Line Printer Spooler Manual" を参照せよ。
ケイパビリティ
ファイルレイアウトの説明については termcap(5) を参照せよ。- "af str" Ta NULL Ta アカウントファイル名
- "br numnonelp が tty の場合, そのボーレートを設定する"
-
( ioctl(2)
コール)
- "cf str" Ta NULL Ta cifplot データ用フィルタ
- "df str" Ta NULL Ta tex データ
-
( DVI
フォーマット)
用フィルタ - "fc num 0 lp が tty の場合, フラグビットをクリアーする"
- (sgtty.h )
- "ffstr" Ta So \f Sc Ta 改ページ(form feed) のために送信する文字列
- "foboolfalseデバイスオープン時に改ページ(form feed)を印刷する"
- "fsnum0`fc' と同様だが、こちらはビットをセットする"
- "gfstr" Ta NULL Ta グラフデータ用フィルタ
-
( plot(3)
フォーマット )
- "hl bool false 最後にバーストヘッダーページを印刷する"
- "ic bool falseドライバはインデント付き印刷のために (非標準の) ioctl をサポートする"
- "ifstr" Ta NULL Ta アカウントのためのテキストフィルタ名
- "lfstr" Ta /dev/console Ta エラーログファイル名
- "lostr" Ta lock Ta ロックファイル名
- "lpstr" Ta /dev/lp Ta 出力に対してオープンするデバイス名
- "mxnum1000最大ファイルサイズ ("
-
BUFSIZ
ブロックの数で指定), 0 = 制限なし
- "nd str" Ta NULL Ta キューリストのための次のディレクトリ (未実装)
- "nfstr" Ta NULL Ta ditroff データ(デバイス非依存 troff)用フィルタ
-
- "of str" Ta NULL Ta 出力フィルタプログラム名
- "pc num 200 1 フィートもしくは 1 ページあたりの価格(1/100 セント単位)"
- "plnum66ページ長 (行数)"
- "pwnum132ページ幅 (文字数)"
- "pxnum0ピクセル単位でのページ幅 (水平方向)"
- "pynum0ピクセル単位でのページ長 (垂直方向)"
- "rfstr" Ta NULL Ta
-
FORTRAN
スタイルのテキストファイルを印刷するためのフィルタ
- "rg str" Ta NULL Ta 制限グループ。このグループのメンバーのみアクセスが許される
- "rmstr" Ta NULL Ta リモートプリンタのためのマシン名
- "rpstr``lp''リモートプリンタ名引数"
- "rsboolfalseローカルにアカウントをもったリモートユーザに限定する"
- "rwboolfalse読み書きのためにプリンタデバイスをオープンする"
- "sbboolfalseショートバナー(short banner) (1 行のみ)"
- "scboolfalse複数コピーを抑制する"
- "sdstr" Ta /var/spool/lpd Ta スプールディレクトリ
- "sfboolfalse改ページ(form feed)を抑制する"
- "shboolfalseバーストページヘッダーの印刷を抑制する"
- "ststr" Ta status Ta ステータスファイル名
- "tfstr" Ta NULL Ta troff データ(cat 写植)用フィルタ
-
- "tr str" Ta NULL Ta キューが空の場合に印刷するための後書き文字列(trailer string)
- "vfstr" Ta NULL Ta ラスタイメージ(raster image)用フィルタ
Name Type Description
ローカルのラインプリンタドライバが字下げをサポートしているならば、
デーモンはその方法を理解できなければならない。
フィルタ
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 フィルタは、次の引数とともに呼び出される:
if [-c ] -w width -l length -i indent -n login -h host acct-file
-c フラグは、 lpr に -l フラグ(制御文字を文字としてそのまま通す)が指定してある時に限って渡される。 width と length は、ページの幅と長さ(それぞれ pw と pl から得られる)を文字数で指定する。 -n と -h はそれぞれ、ジョブ所有者のログイン名とホスト名を指定する。 acct-file は、 printcap の af エントリから渡される。
if が指定されていない場合は、 代わりに of が使用される。これらの間には、 if がそれぞれのジョブに対して毎回オープンされるのに対し、 of は 1 回しかオープンされないという違いがある。 したがって、アカウンティング(accounting)を行なうには if の方が適している。 of には、 width と length の 2 つのフラグが与えられるだけである。
他のすべてのフィルタは、次のようにして呼び出される:
filter -x width -y length -n login -h host acct-file
ただし、 width と length はピクセル単位で表され、それぞれ px エントリと py エントリによって指定される。
すべてのフィルタは、そのファイルとして stdin (標準入力)を、プリンタとして stdout (標準出力)をとる。そのログは、 stderr (標準エラー出力)に対して、もしくは syslog(3) を使ってとられる。また、 SIGINT を無視することは許されない。
ロギング(LOGGING)
ラインプリンタプログラム自身 (つまり、 lpNs* プログラム) によって生成されたエラーメッセージは、 LPR を使うことで syslog(3) によって記録される。 フィルタのうちの 1 つの stderr (標準エラー出力) 上に印刷されたメッセージは、それに対応する lf ファイルへと送られる。 もちろん、フィルタはそれ自身で syslog を使ってもかまわない。コンソールへ送られるエラーメッセージには、改行(LF)だけではなく、 復帰(CR)と改行(LF)が追加される。
履歴
ファイルフォーマットは、 BSD 4.2 で登場した。