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