lpd -r

非常勤先でレーザープリンタを使いたいらしい。クライアント群は もう全部NetBSDにしちゃったよ。EPSON LP-8900とな。 もちろんPostScriptじゃないしなあ、めんどい。

と思ったら、gs -h の対応デバイス一覧に出てきた。楽勝か? と思ってやりはじめて小はまり。printcapの if=..... が効かない。 それで何枚も生postscriptを印刷してしまったあとで分かったのは、 lpdはデフォルトではリモートプリンタに対して input/output filter を適用しないこと。man見て初めて知った。

/etc/rc.conf にはこう。

lpd=YES
lpd_flags="-sr"

input filter こんなかんじ。

#!/bin/sh
# lpd input filter with gdevlp8900
#

PATH=/usr/local/gs8/bin:$PATH
read firstline
case "$firstline" in
  %!*)
	(echo "$firstline"; cat) | \
	  gs -sDEVICE=lp8900 -sOutputFile=- -dNOPAUSE -q -sBATCH - && exit 0
        ;;
  *)
        (echo "$firstline"; cat) & exit 0 ;;
esac
exit 2