X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=changer-src%2Fchg-zd-mtx.sh.in;h=1064eb0b66dd2495741eec7edc69076d8f433f10;hb=0de2ad0a86685398621fb8ffa6990c029681bb3a;hp=6cf5b18bbdbc87eb6ae4afb4a2ecae7d9667997c;hpb=3ab887b9bc819a846c75dd7f2ee5d41fac22b19f;p=debian%2Famanda diff --git a/changer-src/chg-zd-mtx.sh.in b/changer-src/chg-zd-mtx.sh.in index 6cf5b18..1064eb0 100644 --- a/changer-src/chg-zd-mtx.sh.in +++ b/changer-src/chg-zd-mtx.sh.in @@ -447,39 +447,82 @@ get_loaded_info() { get_mtx_status set x `sed -n ' -/^Data Transfer Element:Empty/ { +/^Data Transfer Element:Empty/ { s/.*/-1/p q } -/^Data Transfer Element '$driveslot':Empty/ { +/^Data Transfer Element '$driveslot':Empty/ { s/.*/-1/p q } -/^Data Transfer Element:Full.*:VolumeTag/ { - s/.*(Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/\1 \2/p +/^Data Transfer Element:Full (Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/ { + s/.*(Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/\1 \2/p q } -/^Data Transfer Element '$driveslot':Full.*:VolumeTag/ { - s/.*(Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/\1 \2/p +/^Data Transfer Element '$driveslot':Full (Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/ { + s/.*(Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/\1 \2/p q } -/^Data Transfer Element:Full/ { - s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p +/^Data Transfer Element '$driveslot':Full (Unknown Storage Element Loaded):VolumeTag *= *\([^ ]*\)/ { + s/.*:VolumeTag *= *\([^ ]*\)/-2 \1/p q } -/^Data Transfer Element '$driveslot':Full/ { - s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p +/^Data Transfer Element:Full (Storage Element \([0-9][0-9]*\) Loaded)/ { + s/.*(Storage Element \([0-9][0-9]*\) Loaded).*/\1/p + q +} +/^Data Transfer Element '$driveslot':Full (Storage Element \([0-9][0-9]*\) Loaded)/ { + s/.*Storage Element \([0-9][0-9]*\) Loaded.*/\1/p + q +} +/^Data Transfer Element '$driveslot':Full (Unknown Storage Element Loaded)/ { + s/.*/-2/p q } ' < $mtx_status 2>&1` shift # get rid of the "x" loadedslot=$1 loadedbarcode=$2 - if [ -z "$loadedslot" ]; then Exit 2 "" "could not determine current slot, are you sure your drive slot is $driveslot" return $? # in case we are internal fi + + #Use the current slot if it's empty and we don't know which slot is loaded' + if [ $loadedslot -eq -2 ]; then + set x `sed -n ' +{ + /^.*Storage Element '$currentslot':Empty/ { + s/.*Storage Element \([0-9][0-9]*\):Empty/\1/p + q + } + /^.*Storage Element '$currentslot':Full/ { + s/.*Storage Element \([0-9][0-9]*\):Full/-2/p + q + } +} +' < $mtx_status 2>& 1` + shift # get rid of the "x" + loadedslotx=$1 + if [ ! -z $loadedslotx ]; then + loadedslot=$loadedslotx + fi + fi + + #Use the first empty slot if we don't know which slot is loaded' + if [ $loadedslot -eq -2 ]; then + set x `sed -n ' +{ + /^.*Storage Element \([0-9][0-9]*\):Empty/ { + s/.*Storage Element \([0-9][0-9]*\):Empty/\1/p + q + } +} +' < $mtx_status 2>& 1` + shift # get rid of the "x" + loadedslot=$1 + fi + if IsNumeric "$loadedslot" ; then : else @@ -506,14 +549,25 @@ get_slot_list() { fi get_mtx_status slot_list=`sed -n ' -/^Data Transfer Element:Full/ { - s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p +/^Data Transfer Element:Full (Storage Element \([0-9][0-9]*\) Loaded)/ { + s/.*(Storage Element \([0-9][0-9]*\) Loaded).*/\1/p } -/^Data Transfer Element '$driveslot':Full/ { - s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p +/^Data Transfer Element '$driveslot':Full (Storage Element \([0-9][0-9]*\) Loaded)/ { + s/.*Storage Element \([0-9][0-9]*\) Loaded.*/\1/p } -/^[ ]*Storage Element \([0-9][0-9]*\):Full/ { - s/.*Storage Element \([0-9][0-9]*\):.*/\1/p +/^Data Transfer Element '$driveslot':Full (Unknown Storage Element Loaded)/ { + : loop + n + /^.*Storage Element \([0-9][0-9]*\):Full/ { + s/.*Storage Element \([0-9][0-9]*\):Full.*/\1/p + b loop + } + /^.*Storage Element \([0-9][0-9]*\):Empty/ { + s/.*Storage Element \([0-9][0-9]*\):Empty/\1/p + } +} +/^.*Storage Element \([0-9][0-9]*\):Full/ { + s/.*Storage Element \([0-9][0-9]*\):Full.*/\1/p } ' < $mtx_status 2>&1 | grep -v "^${cleanslot}\$" | sort -n` slot_list=`echo $slot_list` # remove the newlines @@ -946,6 +1000,10 @@ loadslot() { Exit 0 "$loadedslot" "$tape" return $? # in case we are internal fi + if [ $loadedslot -eq -2 ]; then + Exit 0 "$loadedslot" "$tape" + return $? # in case we are internal + fi # If we are loading the cleaning tape, bump the cleaning count # and reset the access count. Otherwise, bump the access count