stuff
[php-bacula-disk-changer.git] / bin / pbdc-bacula.php
index 5225d49..5a36526 100644 (file)
@@ -54,7 +54,7 @@ function unload_tape()
        $changer = $argv[1];
        $taped = $argv[5];
        
-       unlink("$tapeloc/$changer-drive$taped");
+       if(file_exists("$tapeloc/$changer-drive$taped")) unlink("$tapeloc/$changer-drive$taped");
 }
 
 function load_tape()
@@ -74,29 +74,20 @@ function load_tape()
        $ret = false;
        $slot = $argv[3];
 
-       $i=1;
+
+       $res = $db->query("select disk_id,tape_name from slots where slot_no=='$slot'");
        foreach($res as $row) {
-               //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
-               //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
-               //exit(0);
-               $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
-               while(($file = readdir($dh)) !== false) {
-                       if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
-                               if($i == $slot) {
-                                       unlink("$tapeloc/$changer-drive$taped");
-                                       symlink("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/$file", "$tapeloc/$changer-drive$taped");
-                                       exit(0);
-                               }
-                               $i++;
-                       } else {
-                               //echo "didnt match: $file\n";
-                       }
-                       //exit(0);
-               }
-               closedir($dh);
+               $did = $row["disk_id"];
+               $file = $row["tape_name"];
        }
        
-       echo "0\n";
+       $res = $db->query("select disk_name from disk_list where disk_id=='$did'");
+       foreach($res as $row) {
+               $diskname = $row["disk_name"];
+       }
+       
+       if(file_exists("$tapeloc/$changer-drive$taped")) unlink("$tapeloc/$changer-drive$taped");
+       symlink("$amloc/".$diskname."/pbdc/".$argv[1]."/tapes/$file", "$tapeloc/$changer-drive$taped");
        
 }
 
@@ -155,27 +146,28 @@ function list_tapes()
 
        $db = db_getDB($argv[1]);
        
-       $res = $db->query("select * from disk_list order by disk_id");
+       $res = $db->query("select * from slots order by slot_no");
        
        $amloc = conf_getVal($changer, "automountdir");
        
-       $ret = false;
-       $i=1;
        foreach($res as $row) {
                //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
                //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
                //exit(0);
-               $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
-               while(($file = readdir($dh)) !== false) {
-                       if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
-                               echo "slot $i: $file\n";
-                               $i++;
-                       } else {
-                               //echo "didnt match: $file\n";
-                       }
-                       //exit(0);
+               $tapename = $row["tape_name"];
+               $did = $row["disk_id"];
+               $sn = $row["slot_no"];
+               $res2 = $db->query("select disk_name from disk_list where disk_id=='$did'");
+               $dn = "";
+               foreach($res2 as $row2) {
+                       $dn = $row2[0];
+               }
+               $tn = "$amloc/".$dn."/pbdc/".$argv[1]."/tapes/$tapename";
+               if(file_exists($tn)) {
+                       echo "slot $sn: $tapename\n";
+               } else {
+                       echo "slot $sn:\n";
                }
-               closedir($dh);
        }
        
 }
@@ -188,30 +180,36 @@ function num_slots()
 
        $db = db_getDB($argv[1]);
        
-       $res = $db->query("select * from disk_list order by disk_id");
-       
-       $amloc = conf_getVal($changer, "automountdir");
+       $res = $db->query("select max(slot_no) from slots");
        
-       $ret = false;
-       $i=1;
        foreach($res as $row) {
-               //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
-               //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
-               //exit(0);
-               $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
-               while(($file = readdir($dh)) !== false) {
-                       if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
-                               $i++;
-                       } else {
-                               //echo "didnt match: $file\n";
-                       }
-                       //exit(0);
-               }
-               closedir($dh);
+               $mslot = $row[0];
        }
-       $i--;
        
-       echo "$i\n";
+       return $mslot;
+       
+//     $amloc = conf_getVal($changer, "automountdir");
+       
+//     $ret = false;
+//     $i=1;
+//     foreach($res as $row) {
+//             //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
+//             //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
+//             //exit(0);
+//             $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
+//             while(($file = readdir($dh)) !== false) {
+//                     if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
+//                             $i++;
+//                     } else {
+//                             //echo "didnt match: $file\n";
+//                     }
+//                     //exit(0);
+//             }
+//             closedir($dh);
+//     }
+//     $i--;
+       
+//     echo "$i\n";
        
 }