Imported Debian patch 2.5.2p1-1
[debian/amanda] / changer-src / chg-disk.sh.in
index 543d96d0a1a9a94f248e8b80d1ea5d5635f1ed9c..5ac3783e110a3da2e0c70f609bbcac47097f2639 100644 (file)
 #                     |- ...
 #                     |- slotn
 #      where 'slot_root_dir' is the tapedev 'file:xxx' parameter and 'n'
-#      is the tapecycle parameter.
-#      
+#      is the LASTSLOT value of your changerfile config file. If LASTSLOT is
+#      not defined, the value of the tapecycle parameter is used.
+#
 #      To use this driver, just put the line 'tpchanger "chg-disk"' in your
 #      amanda.conf.
 #
-#      Example of use:
+#      Example of use (amanda.conf):
 #      --- cut here ---
 #      tapedev  "file:/BACKUP2/slots/"
 #      rawtapedev "file:/BACKUP2/slots/"
 #      changerdev "/dev/null"
+#      changerfile "chg-disk"
 #      tpchanger "chg-disk"
 #      changerfile "/usr/local/amanda/etc/changer"
 #      tapetype HARD-DISK
 #      }
 #      --- cut here ---
 #
-#      The number of slot is equal to your tapecyle.
+#      Example changerfile (chg-disk.conf):
+#      --- cut here ---
+#      LASTSLOT=12
+#      --- cut here ---
+#
+#      The number of slot is equal to your LASTSLOT or tapecycle.
 #      You must create the slots and data directory.
 #
 
@@ -75,6 +82,10 @@ fi
 MYNAME=$0
 
 TAPE=`amgetconf$SUF tapedev`
+if test X"$TAPE" == X""; then
+    echo "<none> tapedev not specified in amanda.conf."
+    exit 2
+fi
 SLOTDIR=`echo $TAPE | sed 's/^file://'`
 
 isinteger() {
@@ -88,34 +99,42 @@ isinteger() {
 
 # Need rwx access to the virtual tape itself.
 if ! test -d $SLOTDIR; then
-    echo "Virtual-tape directory $SLOTDIR does not exist." 1>&2
+    echo "<none> Virtual-tape directory $SLOTDIR does not exist."
     exit 2
 fi
 if ! test -w $SLOTDIR; then
-    echo "Virtual-tape directory $SLOTDIR is not writable." 1>&2
+    echo "<none> Virtual-tape directory $SLOTDIR is not writable."
     exit 2
 fi
 
 
 # need rwx access to directory of changer file
 CHANGERFILE=`amgetconf$SUF changerfile`
+conf_match=`expr "$CHANGERFILE" : .\*\.conf\$`
+if [ $conf_match -ge 6 ]; then
+        CONFIGFILE=$CHANGERFILE
+        CHANGERFILE=`echo $CHANGERFILE | sed 's/.conf$//g'`
+else
+        CONFIGFILE=$CHANGERFILE.conf
+fi
+
 CFDir=`dirname ${CHANGERFILE}`
 [ -d ${CFDir} -a -r ${CFDir} -a -w ${CFDir} -a -x ${CFDir} ] ||
-       { echo "$MYNAME: need 'rwx' access to '$CFDir'" 1>&2 ; exit 2 ; }
+       { echo "<none> $MYNAME: need 'rwx' access to '$CFDir'"; exit 2 ; }
 
 # check or create changer metadata files
 ACCESSFILE=$CHANGERFILE-access
 [ -f $ACCESSFILE -a -r $ACCESSFILE -a -w $ACCESSFILE ] ||
        echo 0 > $ACCESSFILE ||
-       { echo "$MYNAME: could not access or create '$ACCESSFILE'" 1>&2 ; exit 2 ; }
+       { echo "<none> $MYNAME: could not access or create '$ACCESSFILE'" ; exit 2 ; }
 CLEANFILE=$CHANGERFILE-clean
 [ -f $CLEANFILE -a -r $CLEANFILE -a -w $CLEANFILE ] ||
        echo 0 > $CLEANFILE ||
-       { echo "$MYNAME: could not access or create '$CLEANFILE'" 1>&2 ; exit 2 ; }
+       { echo "<none> $MYNAME: could not access or create '$CLEANFILE'" ; exit 2 ; }
 SLOTFILE=$CHANGERFILE-slot
 [ -f $SLOTFILE -a -r $SLOTFILE -a -w $SLOTFILE ] ||
        echo 0 > $SLOTFILE ||
-       { echo "$MYNAME: could not access or create '$SLOTFILE'" 1>&2 ; exit 2 ; }
+       { echo "<none> $MYNAME: could not access or create '$SLOTFILE'" ; exit 2 ; }
 
 # read and check metadata
 ACCESSCOUNT=`cat $ACCESSFILE`
@@ -125,6 +144,9 @@ isinteger $CLEANCOUNT || { CLEANCOUNT=0 ; echo 0 > $CLEANFILE ; }
 
 FIRSTSLOT=1
 LASTSLOT=`amgetconf$SUF tapecycle`
+if test -r $CONFIGFILE; then
+    . $CONFIGFILE
+fi
 CURSLOT=0
 CLEANSLOT=$LASTSLOT
 NSLOT=`expr $LASTSLOT - $FIRSTSLOT + 1`
@@ -288,7 +310,7 @@ while [ $# -ge 1 ];do
             eject
             ;;
     *)
-       echo "Unknown option $1"
+       echo "<none> Unknown option $1"
        exit 2
        ;;
   esac