Hi,
I was tired of CUPS so I decided keep it simple and stupid and use
lpd/lpr. Strangely, things don't work out as expected. It seems that
lpd never executes input filters.
Here is the content of /etc/printcap:
lp|hl6050|Brother HL6050:\
:lp=:rm=hl6050.lan:\
:if=/home/jaj/bin/printbrother.sh:\
:sh:
mg3150|canon|Canon MG3150:\
:lp=:rm=canon.lan:\
:if=/home/jaj/bin/printcanon.sh:\
:sh:
Here is the content of printcanon.sh:
#!/bin/sh
logger "printcanon called $@"
/usr/local/bin/a2ps -BRq --columns=1 -o - | \
/usr/local/bin/foomatic-rip -q -P Canon-PIXMA-MG3150 \
--ppd /home/jaj/bin/Canon-PIXMA-MG3150-ijs-simplified.ppd
printbrother.sh is the same except for driver and ppd.
Both scripts are executable.
I never see the "printcanon called" message in syslog and the printers
get incorrect data. The first printer understands a subset of
postscript so it prints fine, the second printer however does not.
If I run a document manually through the filter and the enqueue it to
lpr, the printers are more than happy to print.
I see no error nowhere.
$ cat /var/log/lpd-errs
Oct 25 07:47:01 asterix lpd[9652]: restarted
Oct 25 14:57:06 asterix lpd[17953]: restarted
$ cat /var/spool/output/lpd/status
sending to hl6050.lan
I went through the code of lpd to see where things could go wrong but
it's a bit complex and I couldn't understand the bits.
Does anybody know where I could look to solve this?
Best regards,
Jona