スポンサーリンク

PRINTCAP(5) FreeBSD ファイルフォーマットマニュアル PRINTCAP(5)

名称

printcap − プリンタケーパビリティデータベース

書式

printcap

解説

printcap は、ラインプリンタの記述に使われる termcap(5) を簡略化したもので す。スプールシステムは利用のたび毎に printcap ファイルにアクセスするた め、プリンタを動的に追加したり削除することが可能です。データベース中の各 々のエントリが、1 台のプリンタを記述するのに使われます。 termcap(5) とは 異なり、このデータベースは代替できません。これは、アカウント情報がバイパ スされてしまうことがあるからです。

デフォルトのプリンタは通常 lp ですが、環境変数 PRINTER によって上書きする こともできます。各スプーリングユーティリティはオプション −P printer をサ ポートし、出力先のプリンタ名を明示することが可能です。

あるプリンタに対するデータベースをセットアップする方法の詳細については、 4.3 BSD Line Printer Spooler Manual を参照してください。

ケーパビリティ

ファイルレイアウトの解説については termcap(5) を参照してください。

Name

Type

Default

Description

af str NULL アカウンティングファイル名
br num none lp が tty の場合、ボーレート を設定 (ioctl(2) call)
cf str NULL cifplot データ用フィルタ
ct num 120 TCP コネクションのタイムアウ ト時間(秒)
df str NULL tex データ用フィルタ (DVI フォーマット)
ff str ‘

                             \f’                 フォームフィード送信文字

fo bool false デバイスオープン時にフォーム フィードを印字
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 出力時にオープンするデバイス 名、またはオープンする TCP ソ ケット port@machine
mc num 0 lpr(1) で要求できる最大部数を 指定します。0 = 制限なし。
ms str NULL lp が tty の場合、コンマで区 切ったリスト。 tty モード記述 用の stty(1) リストに似てい る。
mx num 0 最大ファイルサイズ ( BUFSIZ ブロック単位)。0 = 制限なし。
nd str NULL キューのリスト用の次のディレ クトリ (未実装)
nf str NULL ditroff データ用フィルタ (device independent troff)
of str NULL 出力用フィルタリングプログラ ム名
pc num 200 1 フィートまたは 1 ページあた りの費用 (1/100 セント単位)"
pl num 66 1 ページの行数
pw num 132 1 行の文字数
px num 0 ピクセル単位のページ幅 (水平 方向)
py num 0 ピクセル単位のページ長 (垂直 方向)
rc bool false リモートホストへ送信時、各部 を再送します (下記参照)
rf str NULL FORTRAN 形式のテキストファイ ル出力用フィルタ
rg str NULL グループ制限。許可されたグ ループのメンバのみアクセスが 許可される
rm str NULL リモートプリンタが接続されて いるホスト名
rp str lp リモートプリンタ名引数
rs bool false ローカルにアカウントを持つリ モートユーザに対する制限
rw bool false プリンタデバイスを読み書き用 にオープンする
sb bool false 短いバナー (1 行のみ)
sc bool false 複数コピーの抑制
sd str /var/spool/lpd スプール ディレクトリ
sf bool false フォームフィードの抑制
sh bool false バーストページヘッダの出力抑 制
sr str NULL 受信される各データファイルの 統計情報を保持するファイル名
ss str NULL 送信される各データファイルの 統計情報を保持するファイル名
st str status 状態ファイル名
tf str NULL troff データ用フィルタ (cat phototypesetter)
tr str NULL キューが空の時に印刷するトレ イラ文字列
vf str NULL ラスタイメージ用フィルタ

2 文字のケーパビリティは、別の読み易い名前があります。

短い形式    長い形式

af acct.file
br tty.rate
cf filt.cifplot
ct remote.timeout
df filt.dvi
du daemon.user
ff job.formfeed
fo job.topofform
gf filt.plot
hl banner.last
if filt.input
lf spool.log
lo spool.lock
lp tty.device
mc max.copies
ms tty.mode
mx max.blocks
nf filt.ditroff
of filt.output
pc acct.price
pl page.length
pw page.width
px page.pwidth
py page.plength
rc remote.resend_copies
rf filt.fortran
rg daemon.restrictgrp
rm remote.host
rp remote.queue
rs daemon.restricted
rw tty.rw
sb banner.short
sc job.no_copies
sd spool.dir
sf job.no_formfeed
sh banner.disable
sr stat.recv
ss stat.send
st spool.status
tf filt.troff
tr job.trailer
vf filt.raster

ローカルラインプリンタのドライバが字下げをサポートしているならば、プリン タデーモンはその使い方を理解しなければなりません。

フィルタ

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

ラスタイメージ

if フィルタは次の引数をとります。

if [−c] −wwidth −llength −iindent −n login −h host acct-file

−c フラグは −l フラグ (コントロール文字をそのまま通過させます) が lpr(1) に指定された場合のみ渡されます。 width 機能と length 機能はページ幅とペー ジ長を (それぞれ pwpl によって) 文字単位で指定します。 −n−h パラ メータでそれぞれのジョブの所有者のログイン名とログイン先ホスト名を指定し ます。 acct-file 機能は printcapaf エントリがそのまま使われます。

if が指定されなかった場合、 of が代わりに使われます。 ofif が個々の ジョブ毎にオープンされるのに対して、たった 1 回だけオープンされると言う特 徴を持っています。そのため、アカウンティングを行うには if の方が向いてい ます。 of には、 widthlength フラグのみが与えられます。

その他の全てのフィルタは次のように呼び出されます。

filter −xwidth −ylength −n login −h host acct-file

widthlength はピクセル単位で表され、それぞれ pxpy エントリで指定 されます。

全てのフィルタはファイルを stdin から読み込み stdout からの出力をプリンタ に送られ、 stderr または syslog(3) がログ出力に使われます。フィルタは SIGINT を無視してはいけません。

リモートプリンティング

rm を使用してリモートプリンタに印刷する時、 if または of を使用できます。 両方を指定した場合、 of は無視されます。どちらのフィルタも同様に振舞いま すが、上述の通り異なった引数を渡されます。特に、出力フィルタはファイルが 転送されるたびに、停止・再起動されます。このように動作することが必要な理 由は、フィルタを通した結果の大きさをリモート lpd(8) に渡すためです。

−p フラグが lpr(1) に渡されると、 pr(1) はローカルでは実行されませんが、 リモートの lpd(8) に対して要求されます。それゆえ、 if を介したフィルタリ ングは、 pr(1) が実行される後ではなく前に実行されることになります。

ネットワークプリンタのモデルによっては、 lpd(8) からのジョブを受け付ける ものの、ジョブ制御ファイルを無視し、各データファイルがプリンタに届くと印 刷するだけのものがあります。このような動作の副作用のひとつに、 lpr(1) コ マンドで指定される −# フラグで指定される複数部数の要求をプリンタが無視し てしまうことがあります。 rc エントリは、ユーザが元々要求した各部に対し て、 lpd(8) がデータファイルを再送するようにします。 rc エントリを指定し て良いのは、プリンタに直接ジョブを送るホストだけです。

lpport@machine で指定された場合 (そして rm が使用されない場合)、印刷 データは指定された machine の指定された port に直接転送されます。

転送の統計情報

印刷ジョブがリモートマシン (他の UNIX ボックスかもしれませんしネットワー クプリンタかもしれません) に転送されるとき、各転送の統計情報を保持するこ とが有効かもしれません。 sr および ss のオプションは、lpd がこのような統 計情報を保持するためのファイル名を示します。ジョブの統計情報の行が各デー タファイルに書き込まれるのは、ファイルの転送に成功したときです。行の書式 は、転送における送信側と受信側とで、同一です。

ジョブを送ってくる種々のマシンとプリントサーバ間のネットワーク性能に興味 がある場合、受信データファイルの統計情報をプリントサーバで使えるかもしれ ません。プリントサーバは、印刷ジョブがサーバに届くたびに、各印刷ジョブの 速度の統計情報を集めることができます。

誰がどのジョブをリモートプリンタに送ったのか、何時送られたのか、そして ファイルの (バイト数での) 大きさはどのくらいだったかについて知りたい場 合、送信データファイルの統計情報を最小のアカウンティング記録として使える かもしれません。しかし、何ページ印刷したのかといった情報は一切含みませ ん。なぜなら、そのような情報をリモート (ネットワーク) プリンタから得るた めの標準的な方法が存在しないためです。

ロギング

ラインプリンタプログラム自身 (つまり lpd(8) とそれに関連するプログラム) が生成したエラーメッセージは、 syslog(3) の LPR ファシリティを使ってロギ ングされます。フィルタの 1 つから stderr に出力されたメッセージは、対応す る lf で指定されたファイルに送られます。当然、フィルタ自身もまた syslogd(8) を使うことがあるかも知れません。

コンソールに送られるエラーメッセージには、ラインフィードだけではなくキャ リッジリターンとラインフィードが追加されます。

関連項目

lpq(1), lpr(1), lprm(1), hosts.lpd(5), termcap(5), chkprintcap(8), lpc(8), lpd(8), pac(8)

       4.3 BSD Line Printer Spooler Manual.

歴史

printcap ファイルフォーマットは 4.2BSD から登場しました。

FreeBSD 10.0 October 11, 2000 FreeBSD 10.0

スポンサーリンク