9 # source utility functions and values from configure
11 exec_prefix=@exec_prefix@
12 amlibexecdir=@amlibexecdir@
13 . ${amlibexecdir}/chg-lib.sh
15 if [ -d "@AMANDA_DBGDIR@" ]; then
16 logfile=@AMANDA_DBGDIR@/changer.debug
23 tape=`amgetconf tapedev`
24 if [ -z "$tape" ]; then
25 echo "<none> tapedev not specified in amanda.conf";
29 TAPE=`amgetconf changerdev`; export TAPE # for mtx command
30 if [ -z "$TAPE" ]; then
31 echo "<none> changerdev not specified in amanda.conf";
35 if [ "$tape" = "/dev/null" -o "$TAPE" = "/dev/null" ]; then
36 echo "<none> Both tapedev and changerdev must be specified in config file";
42 if [ -x $sbindir/ammt$SUF ]; then
45 elif [ -x "@MT@" ]; then
49 answer="<none> $myname: mt program not found"
51 echo "Exit -> $answer" >> $logfile
55 echo MT "->" $MT $MTF >> $logfile
57 if [ -x $sbindir/amdd$SUF ]; then
59 elif [ -x "@DD@" ]; then
62 answer="<none> $myname: dd program not found"
64 echo "Exit -> $answer" >> $logfile
68 echo DD "->" $DD >> $logfile
75 changerfile=`amgetconf changerfile`
77 cleanfile=$changerfile-clean
78 accessfile=$changerfile-access
79 [ ! -f $cleanfile ] && echo 0 > $cleanfile
80 [ ! -f $accessfile ] && echo 0 > $accessfile
81 cleancount=`cat $cleanfile`
82 accesscount=`cat $accessfile`
87 sed -n 's/Drive: No tape Loaded/-1/p;s/Drive: tape \(.\) loaded/\1/p'`
89 if [ -z "$used" ]; then
97 if [ $used -gt 0 ];then
100 echo `_ 'Exit ->'` $answer >> $logfile
104 answer=`_ '<none> %s: Drive was not loaded' "$myname"`
105 echo `_ 'Exit ->'` $answer >> $logfile
113 if [ $used -gt 0 ];then
119 echo `_ 'Exit ->'` $answer >> $logfile
124 echo `_ 'Exit ->'` $answer >> $logfile
133 echo " -> loaded $used" >> $logfile
137 if [ $used -lt 0 ];then
142 echo `_ 'Exit ->'` $answer >> $logfile
147 load=`expr $used + 1`
148 [ $load -gt $lastslot ] && load=$firstslot
151 load=`expr $used - 1`
152 [ $load -lt $firstslot ] && load=$lastslot
160 [$firstslot-$lastslot])
167 answer=`_ '<none> %s: illegal request: "%s"' "$myname" "$whichslot"`
168 echo `_ 'Exit ->'` $answer >> $logfile
174 if [ $load = $used ]; then
176 echo `_ 'Exit ->'` $answer >> $logfile
181 if [ $load = $cleanslot ]; then
182 expr $cleancount + 1 > $cleanfile
185 expr $accesscount + 1 > $accessfile
186 if [ $accesscount -gt 9 ]; then
187 $myname -slot clean >/dev/null
191 # Slot 6 might contain an ordinary tape rather than a cleaning
192 # tape. A cleaning tape auto-ejects; an ordinary tape does not.
193 # We therefore have to read the status again to check what
198 if [ $used -gt 0 ];then
199 echo " -> unload $used" >> $logfile
202 echo " -> status $status" >> $logfile
203 echo " -> res $res" >> $logfile
204 if [ $status -ne 0 ];then
205 answer=`_ '<none> %s: %s' "$myname" "$res"`
206 echo `_ 'Exit ->'` $answer >> $logfile
211 if [ $whichslot = advance ];then
212 answer="$load /dev/null"
213 echo `_ 'Exit ->'` $answer >> $logfile
217 echo `_ ' -> load %s' "$load"` >> $logfile
220 echo `_ ' -> status %s' "$status"` >> $logfile
221 echo `_ ' -> result %s' "$res"` >> $logfile
222 if [ $status -eq 0 ];then
223 amdevcheck_status $tape
230 echo `_ 'Exit ->'` $answer >> $logfile
237 echo " -> info $used" >> $logfile
238 if [ $used -lt 0 ];then
241 answer="$used $lastslot 1"
242 echo `_ 'Exit ->'` $answer >> $logfile
247 echo Args "->" "$@" >> $logfile
248 while [ $# -ge 1 ];do
267 answer=`_ '<none> %s: Unknown option %s' "$myname" "$1"`
268 echo `_ 'Exit ->'` $answer >> $logfile