1#!@SHELL@ 2# this is an example of how to use /bin/sh and LPRng 3# to get the command line and printcap option values 4# and set shell variables from them 5# Note that we use a couple of variables 6#PATH=/bin:/usr/bin 7Args="" 8vAr="" 9vAlue="" 10vAls="" 11iI="" 12Tf="" 13if -n $Debug ; then 14 set >/tmp/before 15fi 16Args="$@" 17if -n $Debug ; then 18 echo "$@" >>/tmp/before 19fi 20while expr "$1" : '-.*' >/dev/null ; do 21 vAr=`expr "$1" : '-\(.\).*'`; 22 vAlue=`expr "$1" : '-.\(.*\)'`; 23 case "$vAr" in 24 - ) break;; 25 c ) c=1;; 26 [a-zA-Z] ) 27 if test "X$vAlue" = "X" ; then shift; vAlue=$1; fi; 28 eval $vAr='$vAlue'; 29 #setvar $vAr "$vAlue" 30 ;; 31 esac; 32 shift; 33done 34 35# set shell variables to the printcap options 36# flag -> flag=1 37# flag@ -> flag=0 38# option=value -> option='value' 39# 40setpcvals () { 41 while test "$#" -gt 0 ; do 42 iI=$1 43 if expr "$iI" : " *\:" >/dev/null ; then 44 vAr=`expr "$iI" : " *\:\([^#=][^#=]*\)[#=].*"`; 45 vAlue=`expr "$iI" : " *\:[^#=][^#=]*[#=]\(.*\)"`; 46 if test "X$vAr" = "X" ; then 47 vAr=`expr "$iI" : " *:\(.*\)@"`; 48 vAlue=0; 49 fi 50 if test "X$vAr" = "X" ; then 51 vAr=`expr "$iI" : " *:\(.*\)"`; 52 vAlue=1; 53 fi 54 if test "X$vAr" != "X" ; then 55 eval $vAr='$vAlue'; 56 #setvar $vAr "$vAlue" 57 fi 58 else 59 vAr=`expr "$iI" : " *\([^|][^|]*\).*"`; 60 if test "X$vAr" != "X" ; then 61 eval Printer="$vAr" 62 fi 63 fi; 64 shift 65 done 66} 67 68# set shell variables to the printcap options 69# flag -> flag=1 70# flag@ -> flag=0 71# option=value -> option='value' 72# 73setcontrolvals () { 74 while test "$#" -gt 0 ; do 75 iI=$1 76 vAr=`expr "$iI" : " *\([A-Z]\).*"`; 77 vAlue=`expr "$iI" : " *[A-Z]\(.*\)"`; 78 if test "X$vAr" != "X" ; then 79 eval $vAr='$vAlue'; 80 #setvar $vAr "$vAlue"; 81 fi; 82 shift 83 done 84} 85 86Tf=$IFS 87IFS=" 88" 89setpcvals $PRINTCAP_ENTRY 90setcontrolvals $CONTROL 91IFS=$Tf 92 93# 94# restore argument list 95set -- $Args 96Args="" 97vAr="" 98vAlue="" 99vAls="" 100iI="" 101Tf="" 102 103if test -n "$Debug" ; then 104 set >/tmp/after 105 echo "$@" >>/tmp/after 106 diff /tmp/before /tmp/after 107fi 108cat 109exit 0 110