I wrote a simple filter to print to an nt print queue through
the smbclinet. It tests to see if the file is postscript or
text, and if it is text it sends a control code to tell the
printer to do the lf->crlf conversion.
My problem is that the '\' escapes in the first line get clobbered.
for example, if I print this printcap:
**** begin printcap ****
lp:\
:sh:\
:lp=/dev/lpt0:\
:sd=/var/spool/output/lpd/lp:\
:lf=/var/log/lpd/lpd.log:
lplaser:\
:sh:\
:lp=/dev/null:\
:if=/root/filters/smb-filter:\
:sd=/var/spool/output/lpd/lplaser:\
:lf=/var/log/lpd/lpd.log:
**** end printap ****
the entire entry for "lp" will be on one line, but the "lplaser"
entry will print out like it is supposed to.
I know why it is doing it, however I don't know how to fix it. Any
help will be appreciated (script is below).
Thanks,
James
**** begin smb-filter ****
#!/bin/sh
####
# Input filter to print to a NT print queue, requires smbclient.
#
# Author: James Halstead, e-mail: [EMAIL PROTECTED]
#
# Read stdin to a temp, make sure to determine the print type, then use
# smbclient to print to the nt queue.
####
SERVER=<SERVER NAME>
PRINTER=cw<PRINTER NAME>
TEMP=/tmp/smbprint
TEMP=`mktemp -q $TEMP.XXXXXX`
read firstline
first_two=`expr "$firstline" : '\(..\)'`
if [ "$first_two" != "%!" ]; then
printf "\033&k3G" > $TEMP
fi
#lets see, copy the firstline to temp, cat the rest to the temp,
# make one ugly command to print the file to the smb printer then
# rm the temp file.
echo "$firstline" >> $TEMP && cat >> $TEMP &&\
/usr/local/bin/smbclient \\\\$SERVER\\$PRINTER -UGUEST -N\
-c"print $TEMP" &&\
rm -f $TEMP >/dev/null && exit 0
exit 1
**** end smb-filter ****
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message