From owner-freebsd-hackers Tue May 16 12:43:21 2000 Delivered-To: freebsd-hackers@freebsd.org Received: from jestocost.cosc.morrisville.edu (jestocoast.cosc.morrisville.edu [136.204.176.67]) by hub.freebsd.org (Postfix) with ESMTP id 7168137B593 for ; Tue, 16 May 2000 12:43:10 -0700 (PDT) (envelope-from root@jestocost.cosc.morrisville.edu) Received: (from root@localhost) by jestocost.cosc.morrisville.edu (8.9.3/8.9.3) id PAA02325; Tue, 16 May 2000 15:39:10 -0400 (EDT) (envelope-from root) Date: Tue, 16 May 2000 15:39:10 -0400 (EDT) From: Charlie Root Message-Id: <200005161939.PAA02325@jestocost.cosc.morrisville.edu> To: freebsd-hackers@freebsd.org Subject: smb printer trouble Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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: JAHalstead@hotmail.com # # Read stdin to a temp, make sure to determine the print type, then use # smbclient to print to the nt queue. #### SERVER= PRINTER=cw 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 majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message