summaryrefslogtreecommitdiff
path: root/examples/printing
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2002-09-25 15:05:17 +0000
committerGerald Carter <jerry@samba.org>2002-09-25 15:05:17 +0000
commitec0b8aa70454cab4a918ab09e8ed52d60b4b3256 (patch)
tree45bfb5176738f3888ff69d3ef8e07500cd07b34d /examples/printing
parent3054ef8a6ec8a67937cc1bfc492722fd6eccc325 (diff)
downloadsamba-ec0b8aa70454cab4a918ab09e8ed52d60b4b3256.tar.gz
sync'ing up for 3.0alpha20 release
(This used to be commit 803715d96016767c55202362b17096fc80786c59)
Diffstat (limited to 'examples/printing')
-rwxr-xr-xexamples/printing/smbprint104
1 files changed, 77 insertions, 27 deletions
diff --git a/examples/printing/smbprint b/examples/printing/smbprint
index 5a00a2a8aa8..68bd66a13fe 100755
--- a/examples/printing/smbprint
+++ b/examples/printing/smbprint
@@ -25,6 +25,11 @@
#
# -t now causes translate to be used when sending files
#
+# Further modifications by Alfred Perlstein to fix some problems and
+# improve the quality of the code (3-Dec-2001).
+#
+# More hacking by Richard Sharpe to improve portability. 9-Dec-2001.
+#
# In order for this to work the /etc/printcap entry must include an
# accounting file (af=...):
#
@@ -46,12 +51,10 @@
# service=CJET_371
# password=""
-#
-# Debugging log file, change to /dev/null if you like.
-#
-logfile=/tmp/smb-print.log
-# logfile=/dev/null
+#smbclient=/usr/pkg/bin/smbclient
+# Assume that smbclient will be in the same place as smbprint
+smbclient="`dirname $0`/smbclient"
#
# The last parameter to the filter is the accounting file name.
@@ -67,29 +70,76 @@ config_file=$spool_dir/.config
# server
# service
# password
-eval `cat $config_file`
+# username (optional)
+# IP (optional)
+# debug (optional)
+# debugsmb (optional)
+# debugfile (optional)
+. $config_file
+
+if [ "x$password" = "x" ] ; then
+ password="-N"
+fi
-while getopts t c; do
- case $c in
- t)
- TRANS=1
- ;;
+if [ "x$username" == "x" ] ; then
+ username="$server";
+fi
- '?') # Bad parameters, ignore it ...
- ;;
- esac
+while test $# -gt 0; do
+ case "$1" in
+ -t)
+ TRANS=1
+ ;;
+
+ *) # Bad Parameters, ignore them ...
+ ;;
+ esac
+ shift
done
+
+command="print - ;"
+if [ $TRANS -eq 1 ]; then
+ command="translate;$command";
+fi
+
+debugfile="/tmp/smb-print.log"
+if [ "x$debug" = "x" ] ; then
+ debugfile=/dev/null debugargs=
+else
+ if [ $debug -eq 0 ] ; then
+ debugfile=/dev/null debugargs=
+ else
+ set -x; exec >>$debugfile 2>&1
+ debugargs="$debugfile."
+ #[ "x$debugsmb" == "x" ] || debugargs="$debugargs -d $debugsmb"
+ fi
+fi
+
+if [ "x$smbconf" != "x" ]; then
+
+ smbconf="-s $smbconf"
+
+fi
+
+if [ "x$IP" != "x" ]; then
+
+ IP="-I $IP"
+
+fi
+
+if [ "x$debugargs" != "x" ]; then
+
+ debugargs="-l $debugargs"
+
+fi
+
+$smbclient \
+ "\\\\$server\\$service" \
+ $password \
+ $smbconf \
+ $IP \
+ $debugargs \
+ -U $username \
+ -P \
+ -c "$command"
#
-# Some debugging help, change the >> to > if you want to same space.
-#
-echo "server $server, service $service" >> $logfile
-
-(
-# NOTE You may wish to add the line `echo translate' if you want automatic
-# CR/LF translation when printing.
- if [ $TRANS -eq 1 ]; then
- echo translate
- fi
- echo "print -"
- cat
-) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile