1#!/bin/sh 2# shell for PCL banner printing 3# 4# 5# pr:bp=/usr/local/.../pclbanner 6# :of=/usr/local/.../offilter 7# 8# Uses: printf 9 10PATH=/bin:/usr/bin 11 12Arglist="" 13Args="" 14vAr="" 15vAlue="" 16iI="" 17Args="$@" 18while expr "$1" : '-.*' >/dev/null ; do 19 vAr=`expr "$1" : '-\(.\).*'`; 20 vAlue=`expr "$1" : '-.\(.*\)'`; 21 case "$vAr" in 22 - ) break;; 23 c ) c=1;; 24 [a-zA-Z] ) 25 if test "X$vAlue" = "X" ; then shift; vAlue=$1; fi; 26 eval $vAr='$vAlue'; 27 #setvar $vAr "$vAlue" 28 case "$vAr" in 29 J ) Title=$vAlue ;; 30 P ) Printer=$vAlue ;; 31 H ) Host=$vAlue ;; 32 n ) User=$vAlue ;; 33 C ) Class=$vAlue ;; 34 A ) Jobid=$vAlue ;; 35 D ) Date=$vAlue ;; 36 Q ) Queue=$vAlue ;; 37 N ) Filename=$vAlue ;; 38 f ) Format=$vAlue ;; 39 esac 40 ;; 41 esac; 42 shift; 43done 44 45# set shell variables to the printcap options 46# flag -> flag=1 47# flag@ -> flag=0 48# option=value -> option='value' 49# 50#for iI in `echo $PRINTCAP_ENTRY | sed -e "s/.*/\"&\"/"` ; do 51for iI in $PRINTCAP_ENTRY ; do 52 # echo X $iI; 53 if expr "$iI" : " *\:" >/dev/null ; then 54 vAr=`expr "$iI" : " *\:\([^#=][^#=]*\)[#=].*"`; 55 vAlue=`expr "$iI" : " *\:[^#=][^#=]*[#=]\(.*\)"`; 56 if test "X$vAr" = "X" ; then 57 vAr=`expr "$iI" : " *:\(.*\)@"`; 58 vAlue=0; 59 fi 60 if test "X$vAr" = "X" ; then 61 vAr=`expr "$iI" : " *:\(.*\)"`; 62 vAlue=1; 63 fi 64 if test "X$vAr" != "X" ; then 65 eval $vAr='$vAlue'; 66 #setvar $vAr "$vAlue" 67 fi 68 else 69 vAr=`expr "$iI" : " *\([^|][^|]*\).*"`; 70 if test "X$vAr" != "X" ; then 71 eval Printer="$vAr" 72 fi 73 fi; 74done 75 76# set shell variables to the printcap options 77# flag -> flag=1 78# flag@ -> flag=0 79# option=value -> option='value' 80# 81for iI in $CONTROL ; do 82 # echo X $iI; 83 vAr=`expr "$iI" : " *\([A-Z]\).*"`; 84 vAlue=`expr "$iI" : " *[A-Z]\(.*\)"`; 85 if test "X$vAr" != "X" ; then 86 eval $vAr='$vAlue'; 87 #setvar $vAr "$vAlue"; 88 fi; 89done 90# 91# restore argument list 92set -- $Args 93Args="" 94vAr="" 95vAlue="" 96iI="" 97 98xpos=0; 99ypos=0; 100incr=0; 101margins="\033&l0u0Z"; 102lightbar="\033*c1800a100b45g2P"; 103darkbar="\033*c1800a100b25g2P"; 104fontchange="\033(8U\033(s1p%dv0s0b4148T"; 105position="\033*p%dx%dY"; 106UEL="\033%%-12345X"; 107UELPJL="\033%%-12345X@PJL \n"; 108PCLRESETSTR="\033E"; 109CRLFSTR="\033&k2G"; 110 111 moveto () { 112 printf $position $1 $2; 113 } 114 115 fontsize () { 116 incr=`expr "(" $1 "*" 300 "*" 11 ")" / 720`; 117 printf $fontchange $1; 118 } 119 120 argline () { 121 key=$1 122 value=$2 123 if [ -n "$value" ] ; then 124 textline "$key" 1 0 125 textline ": " 0 0 126 textline "$value" 0 1 127 fi 128 } 129 130 textline () { 131 line=$1 132 start=$2 133 end=$3 134 if [ "$start" -gt 0 ] ; then 135 moveto $xpos $ypos 136 fi 137 printf '%s' "$line"; 138 if [ "$end" -gt 0 ] ; then 139 ypos=`expr "$ypos" + "$incr"` 140 fi 141 } 142 143pcl_banner () { 144 printf "$UEL" ; 145 printf "$PCLRESETSTR" ; 146 # printf "$UELPJL" ; 147 printf "$CRLFSTR" ; 148 printf "$margins" ; 149 150 # do light bar 151 xpos=0; 152 ypos=0; 153 moveto $xpos $ypos ; 154 printf $lightbar ; 155 ypos=`expr $ypos + 100`; 156 157 # set font size 158 fontsize 24; 159 ypos=`expr $ypos + $incr`; 160 moveto $xpos $ypos ; 161 162 argline Title "$Title" 163 164 fontsize 14 165 argline Printer "$Printer" 166 argline Host "$Host" 167 argline User "$User" 168 argline Class "$Class" 169 argline Jobid "$Jobid" 170 argline Date "$Date" 171 argline Queue "$Queue" 172 argline Filename "$Filename" 173 argline Format "$Format" 174 175 # smaller font 176 fontsize 12 ; 177 178 moveto $xpos $ypos ; 179 date=`date`; 180 textline 'Printed at: ' 0 1 ; 181 textline "$date" 0 1 ; 182 183 moveto $xpos $ypos ; 184 printf $darkbar ; 185 186 printf "$UEL" ; 187 printf "$PCLRESETSTR" ; 188} 189 190pcl_banner 191