非常勤先でレーザープリンタを使いたいらしい。クライアント群は もう全部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