int insert_tree_handler(void *ctx, int num_fields, char **row)
 {
    TREE_CTX *tree = (TREE_CTX *)ctx;
-   char fname[2000];
+   char fname[5000];
    TREE_NODE *node, *new_node;
    int type;
 
    } else {
       type = TN_FILE;
    }
-   sprintf(fname, "%s%s", row[0], row[1]);
+   bsnprintf(fname, sizeof(fname), "%s%s", row[0]?row[0]:"", row[1]?row[1]:"");
    if (tree->avail_node) {
       node = tree->avail_node;
    } else {
 
             Mmsg(&dev->errmsg, _("Gave up waiting to mount Storage Device \"%s\" for Job %s\n"), 
                 jcr->dev_name, jcr->Job);
             Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
-            Dmsg1(190, "Gave up waiting on device %s\n", dev->dev_name);
+            Dmsg1(190, "Gave up waiting on device %s\n", dev_name(dev));
            return 0;                 /* exceeded maximum waits */
         }
         continue;
          Jmsg(jcr, M_WARNING, 0, _("pthread error in mount_next_volume stat=%d ERR=%s\n"), stat,
            strerror(stat));
       }
-      Dmsg1(190, "Someone woke me for device %s\n", dev->dev_name);
+      Dmsg1(190, "Someone woke me for device %s\n", dev_name(dev));
 
       /* Restart wait counters */
       wait_sec = min_wait;
             Mmsg(&dev->errmsg, _("Gave up waiting to mount Storage Device \"%s\" for Job %s\n"), 
                 jcr->dev_name, jcr->Job);
             Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
-            Dmsg1(190, "Gave up waiting on device %s\n", dev->dev_name);
+            Dmsg1(190, "Gave up waiting on device %s\n", dev_name(dev));
            return 0;                 /* exceeded maximum waits */
         }
         continue;
          Jmsg(jcr, M_ERROR, 0, _("pthread error in mount_next_volume stat=%d ERR=%s\n"), stat,
            strerror(stat));
       }
-      Dmsg1(190, "Someone woke me for device %s\n", dev->dev_name);
+      Dmsg1(190, "Someone woke me for device %s\n", dev_name(dev));
 
       /* Restart wait counters */
       wait_sec = min_wait;
    for ( ; !job_canceled(jcr); ) {
       time_t now;
 
-      Dmsg3(100, "I'm going to sleep on device %s. HB=%d wait=%d\n", dev->dev_name,
+      Dmsg3(100, "I'm going to sleep on device %s. HB=%d wait=%d\n", dev_name(dev),
         (int)me->heartbeat_interval, wait_sec);
       stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->mutex, &timeout);
       Dmsg1(100, "Wokeup from sleep on device stat=%d\n", stat);
 
 
 /* Device structure definition */
 struct DEVICE {
+public:
    DEVICE *next;                      /* pointer to next open device */
    DEVICE *prev;                      /* pointer to prev open device */
-   JCR *attached_jcrs;              /* attached JCR list */
+   JCR *attached_jcrs;                /* attached JCR list */
    pthread_mutex_t mutex;             /* access control */
    pthread_cond_t wait;               /* thread wait variable */
    pthread_cond_t wait_next_vol;      /* wait for tape to be mounted */
 
    VOLUME_CAT_INFO VolCatInfo;        /* Volume Catalog Information */
    VOLUME_LABEL VolHdr;               /* Actual volume label */
-
+   
 };