]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/autochanger.c
First cut SIGHUM + misc
[bacula/bacula] / bacula / src / stored / autochanger.c
index 72237ad63a230c406888ed3ed5884d4c5c160049..d459689e32d639e135da001e651799d22a05dc10 100644 (file)
@@ -30,7 +30,7 @@
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
 /* Forward referenced functions */
-static char *edit_device_codes(JCR *jcr, char *omsg, char *imsg, char *cmd);
+char *edit_device_codes(JCR *jcr, char *omsg, const char *imsg, const char *cmd);
 static int get_autochanger_loaded_slot(JCR *jcr);
 
 
@@ -64,28 +64,27 @@ int autoload_device(JCR *jcr, DEVICE *dev, int writing, BSOCK *dir)
       }
       if (dir_find_next_appendable_volume(jcr)) {
         slot = jcr->VolCatInfo.Slot; 
+      } else {
+        slot = 0;
       }
    }
    Dmsg1(400, "Want changer slot=%d\n", slot);
 
    if (slot > 0 && jcr->device->changer_name && jcr->device->changer_command) {
       uint32_t timeout = jcr->device->max_changer_wait;
-      POOLMEM *changer, *results;
+      POOLMEM *changer;
       int loaded, status;     
 
-      results = get_pool_memory(PM_MESSAGE);
       changer = get_pool_memory(PM_FNAME);
 
       loaded = get_autochanger_loaded_slot(jcr);
 
-      Dmsg1(400, "loaded=%s\n", results);
-
       /* If tape we want is not loaded, load it. */
       if (loaded != slot) { 
         offline_or_rewind_dev(dev);
         /* We are going to load a new tape, so close the device */
         force_close_dev(dev);
-        if (loaded != 0) {        /* must unload drive */
+        if (loaded != 0 && loaded != -1) {        /* must unload drive */
             Dmsg0(400, "Doing changer unload.\n");
            Jmsg(jcr, M_INFO, 0, 
                  _("3303 Issuing autochanger \"unload slot %d, drive %d\" command.\n"),
@@ -119,7 +118,6 @@ int autoload_device(JCR *jcr, DEVICE *dev, int writing, BSOCK *dir)
         status = 0;                  /* we got what we want */
       }
       free_pool_memory(changer);
-      free_pool_memory(results);
       Dmsg1(400, "After changer, status=%d\n", status);
       if (status == 0) {             /* did we succeed? */
         rtn_stat = 1;                /* tape loaded by changer */
@@ -258,9 +256,9 @@ bail_out:
  *  cmd = command string (load, unload, ...) 
  *
  */
-static char *edit_device_codes(JCR *jcr, char *omsg, char *imsg, char *cmd) 
+char *edit_device_codes(JCR *jcr, char *omsg, const char *imsg, const char *cmd) 
 {
-   char *p;
+   const char *p;
    const char *str;
    char add[20];