Date: Mon, 6 Oct 1997 11:43:49 -0400 From: "Doug Kite" <dkite@co.lenoir.nc.us> To: freebsd-questions@freebsd.org Subject: input filter for lp Message-ID: <199710061124.LAA06264@ns.co.lenoir.nc.us>
next in thread | raw e-mail | index | archive | help
How do I get a script I have written to act as an input filter for
lpd? I have written a script in awk that checks the width of the file
on standard input and sends the proper initialization sequence for
the printer.
The script is working fine, and I can type:
ls -l | lpfilter or cat foo | lpfilter
and the codes are inserted properly, but...
Even though I put an entry in my printcap file that lists my script as
the input filter, it does not execute when I print a file. I know the
script works, and does what I want, but I can't get it to execute
automatically when something is printed.
Any thoughts would be appreciated.
Doug
Here's the /etc/printcap entry:
lp|hp|hp4v|HP Laserjet 4V|\
:sd=/var/spool/lpd/hp:\
:rm=192.168.0.15:\
:rp=text:\
:lp=:\
:if=/usr/bin/lpfilter:\
:lf=/var/log/lpd-errs:\
:sh:
And here is the lpfilter script:
#!/usr/bin/awk -f
# Add printer setup codes to first long line
# \x1B - ESC (ASCII 027, HEX 1B)
# &l1o5.369C - orientation landscape, vertical motion index
# (s12.5H - pitch 12.5
# first part of P sets font to courier, pitch 10, symbol set PC-8
# &l0o7.183C - orientation portrait, vertical motion index
# %s - the string (the original line, $0)
# \n - newline
BEGIN { W = 0
I = "\x1B&l1o5.369C\x1B(s12.5H"
P = "\x1B(10U\x1B(s0p10h0s0b4099T\x1B&l0o7.183C"
}
{ if (W == 0 && length > 85) {
if (index($0,"\x0C") != 0) {
split($0,p,"\x0C")
printf("%s\x0C%s%s\n",p[1],I,p[2])
}
else { printf("%s%s\n",I,$0) }
W = 1
}
else {
{ if (NR == 1) {
printf("%s%s\n",P,$0)
}
else { print $0 }
}
}
}
__________________________________________________
Doug Kite email: dkite@co.lenoir.nc.us
Network Administrator phone: 919-559-6442
Lenoir County MIS fax: 919-523-0371
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199710061124.LAA06264>
