]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/bsr.c
Fix bug #1268 Full Max Run Time cancels jobs (when Max Run Time = 0).
[bacula/bacula] / bacula / src / dird / bsr.c
index 28574282b987ec79fe90953c0476a6eddf0d6a71..81e384314dda741e32720430cad63b09fa2055f4 100644 (file)
@@ -135,21 +135,6 @@ static bool is_volume_selected(RBSR_FINDEX *fi,
 }
 
 
-
-static void print_findex(UAContext *ua, RBSR_FINDEX *fi)
-{
-   ua->send_msg("fi=0x%lx\n", fi);
-   for ( ; fi; fi=fi->next) {
-      if (fi->findex == fi->findex2) {
-         ua->send_msg("FileIndex=%d\n", fi->findex);
-         Dmsg1(1000, "FileIndex=%d\n", fi->findex);
-      } else {
-         ua->send_msg("FileIndex=%d-%d\n", fi->findex, fi->findex2);
-         Dmsg2(1000, "FileIndex=%d-%d\n", fi->findex, fi->findex2);
-      }
-   }
-}
-
 /* Create a new bootstrap record */
 RBSR *new_bsr()
 {
@@ -167,6 +152,9 @@ void free_bsr(RBSR *bsr)
       if (bsr->VolParams) {
          free(bsr->VolParams);
       }
+      if (bsr->fileregex) {
+         free(bsr->fileregex);
+      }
       next = bsr->next;
       free(bsr);
    }
@@ -258,6 +246,10 @@ uint32_t write_bsr_file(UAContext *ua, RESTORE_CTX &rx)
 
    ua->send_msg(_("Bootstrap records written to %s\n"), fname.c_str());
 
+   if (debug_level >= 10) {
+      print_bsr(ua, rx);
+   }
+
 bail_out:
    return count;
 }
@@ -336,6 +328,7 @@ void display_bsr_info(UAContext *ua, RESTORE_CTX &rx)
  */
 static uint32_t write_bsr(UAContext *ua, RESTORE_CTX &rx, FILE *fd)
 {
+   char ed1[50], ed2[50];
    uint32_t count = 0;
    uint32_t total_count = 0;
    uint32_t LastIndex = 0;
@@ -362,6 +355,9 @@ static uint32_t write_bsr(UAContext *ua, RESTORE_CTX &rx, FILE *fd)
             }
             fprintf(fd, "Volume=\"%s\"\n", bsr->VolParams[i].VolumeName);
             fprintf(fd, "MediaType=\"%s\"\n", bsr->VolParams[i].MediaType);
+            if (bsr->fileregex) {
+               fprintf(fd, "FileRegex=%s\n", bsr->fileregex);
+            }
             if (get_storage_device(device, bsr->VolParams[i].Storage)) {
                fprintf(fd, "Device=\"%s\"\n", device);
             }
@@ -370,18 +366,8 @@ static uint32_t write_bsr(UAContext *ua, RESTORE_CTX &rx, FILE *fd)
             }
             fprintf(fd, "VolSessionId=%u\n", bsr->VolSessionId);
             fprintf(fd, "VolSessionTime=%u\n", bsr->VolSessionTime);
-            if (bsr->VolParams[i].StartFile == bsr->VolParams[i].EndFile) {
-               fprintf(fd, "VolFile=%u\n", bsr->VolParams[i].StartFile);
-            } else {
-               fprintf(fd, "VolFile=%u-%u\n", bsr->VolParams[i].StartFile,
-                       bsr->VolParams[i].EndFile);
-            }
-            if (bsr->VolParams[i].StartBlock == bsr->VolParams[i].EndBlock) {
-               fprintf(fd, "VolBlock=%u\n", bsr->VolParams[i].StartBlock);
-            } else {
-               fprintf(fd, "VolBlock=%u-%u\n", bsr->VolParams[i].StartBlock,
-                       bsr->VolParams[i].EndBlock);
-            }
+            fprintf(fd, "VolAddr=%s-%s\n", edit_uint64(bsr->VolParams[i].StartAddr, ed1),
+                    edit_uint64(bsr->VolParams[i].EndAddr, ed2));
    //       Dmsg2(100, "bsr VolParam FI=%u LI=%u\n",
    //          bsr->VolParams[i].FirstIndex, bsr->VolParams[i].LastIndex);
 
@@ -425,6 +411,9 @@ static uint32_t write_bsr(UAContext *ua, RESTORE_CTX &rx, FILE *fd)
             }
             fprintf(fd, "Volume=\"%s\"\n", bsr->VolParams[i].VolumeName);
             fprintf(fd, "MediaType=\"%s\"\n", bsr->VolParams[i].MediaType);
+            if (bsr->fileregex) {
+               fprintf(fd, "FileRegex=%s\n", bsr->fileregex);
+            }
             if (get_storage_device(device, bsr->VolParams[i].Storage)) {
                fprintf(fd, "Device=\"%s\"\n", device);
             }
@@ -433,18 +422,8 @@ static uint32_t write_bsr(UAContext *ua, RESTORE_CTX &rx, FILE *fd)
             }
             fprintf(fd, "VolSessionId=%u\n", bsr->VolSessionId);
             fprintf(fd, "VolSessionTime=%u\n", bsr->VolSessionTime);
-            if (bsr->VolParams[i].StartFile == bsr->VolParams[i].EndFile) {
-               fprintf(fd, "VolFile=%u\n", bsr->VolParams[i].StartFile);
-            } else {
-               fprintf(fd, "VolFile=%u-%u\n", bsr->VolParams[i].StartFile,
-                       bsr->VolParams[i].EndFile);
-            }
-            if (bsr->VolParams[i].StartBlock == bsr->VolParams[i].EndBlock) {
-               fprintf(fd, "VolBlock=%u\n", bsr->VolParams[i].StartBlock);
-            } else {
-               fprintf(fd, "VolBlock=%u-%u\n", bsr->VolParams[i].StartBlock,
-                       bsr->VolParams[i].EndBlock);
-            }
+            fprintf(fd, "VolAddr=%s-%s\n", edit_uint64(bsr->VolParams[i].StartAddr, ed1),
+                    edit_uint64(bsr->VolParams[i].EndAddr, ed2));
    //       Dmsg2(100, "bsr VolParam FI=%u LI=%u\n",
    //          bsr->VolParams[i].FirstIndex, bsr->VolParams[i].LastIndex);
 
@@ -469,22 +448,9 @@ static uint32_t write_bsr(UAContext *ua, RESTORE_CTX &rx, FILE *fd)
    return total_count;
 }
 
-void print_bsr(UAContext *ua, RBSR *bsr)
+void print_bsr(UAContext *ua, RESTORE_CTX &rx)
 {
-   for ( ; bsr; bsr=bsr->next) {
-      for (int i=0; i < bsr->VolCount; i++) {
-         ua->send_msg("Volume=\"%s\"\n", bsr->VolParams[i].VolumeName);
-         ua->send_msg("MediaType\"%s\"\n", bsr->VolParams[i].MediaType);
-         ua->send_msg("VolSessionId=%u\n", bsr->VolSessionId);
-         ua->send_msg("VolSessionTime=%u\n", bsr->VolSessionTime);
-         ua->send_msg("VolFile=%u-%u\n", bsr->VolParams[i].StartFile,
-                  bsr->VolParams[i].EndFile);
-         ua->send_msg("VolBlock=%u-%u\n", bsr->VolParams[i].StartBlock,
-                  bsr->VolParams[i].EndBlock);
-         print_findex(ua, bsr->fi);
-      }
-      print_bsr(ua, bsr->next);
-   }
+   write_bsr(ua, rx, stdout);
 }