]> git.sur5r.net Git - bacula/bacula/commitdiff
Remove more recursion in src/dird/bsr.c as pointed out
authorKern Sibbald <kern@sibbald.com>
Tue, 5 Apr 2005 14:57:14 +0000 (14:57 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 5 Apr 2005 14:57:14 +0000 (14:57 +0000)
  by Peter.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1910 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/bsr.c
bacula/src/dird/protos.h
bacula/src/version.h

index f656817ee19ff63624600f010cd3f5f3e57a3f4e..01de4416d3386e2915806268e55be22f45519e01 100644 (file)
@@ -51,8 +51,9 @@ RBSR_FINDEX *new_findex()
 /* Free all BSR FileIndex entries */
 static void free_findex(RBSR_FINDEX *fi)
 {
-   if (fi) {
-      free_findex(fi->next);
+   RBSR_FINDEX *next;
+   for ( ; fi; fi=next) {
+      next = fi->next;
       free(fi);
    }
 }
@@ -134,12 +135,13 @@ RBSR *new_bsr()
 /* Free the entire BSR */
 void free_bsr(RBSR *bsr)
 {
-   if (bsr) {
+   RBSR *next;
+   for ( ; bsr; bsr=next) {
       free_findex(bsr->fi);
       if (bsr->VolParams) {
          free(bsr->VolParams);
       }
-      free_bsr(bsr->next);
+      next = bsr->next;
       free(bsr);
    }
 }
@@ -148,15 +150,15 @@ void free_bsr(RBSR *bsr)
  * Complete the BSR by filling in the VolumeName and
  *  VolSessionId and VolSessionTime using the JobId
  */
-int complete_bsr(UAContext *ua, RBSR *bsr)
+bool complete_bsr(UAContext *ua, RBSR *bsr)
 {
-   if (bsr) {
+   for ( ; bsr; bsr=bsr->next) {
       JOB_DBR jr;
       memset(&jr, 0, sizeof(jr));
       jr.JobId = bsr->JobId;
       if (!db_get_job_record(ua->jcr, ua->db, &jr)) {
          bsendmsg(ua, _("Unable to get Job record. ERR=%s\n"), db_strerror(ua->db));
-         return 0;
+         return false;
       }
       bsr->VolSessionId = jr.VolSessionId;
       bsr->VolSessionTime = jr.VolSessionTime;
@@ -167,11 +169,10 @@ int complete_bsr(UAContext *ua, RBSR *bsr)
             free(bsr->VolParams);
             bsr->VolParams = NULL;
          }
-         return 0;
+         return false;
       }
-      return complete_bsr(ua, bsr->next);
    }
-   return 1;
+   return true;
 }
 
 /*
@@ -239,7 +240,7 @@ static uint32_t write_bsr(UAContext *ua, RBSR *bsr, FILE *fd)
    uint32_t total_count = 0;
    uint32_t LastIndex = 0;
    bool first = true;
-   if (bsr) {
+   for ( ; bsr; bsr=bsr->next) {
       /*
        * For a given volume, loop over all the JobMedia records.
        *   VolCount is the number of JobMedia records.
@@ -285,14 +286,13 @@ static uint32_t write_bsr(UAContext *ua, RBSR *bsr, FILE *fd)
          first = false;
          LastIndex = bsr->VolParams[i].LastIndex;
       }
-      write_bsr(ua, bsr->next, fd);
    }
    return total_count;
 }
 
 void print_bsr(UAContext *ua, RBSR *bsr)
 {
-   if (bsr) {
+   for ( ; bsr; bsr=bsr->next) {
       for (int i=0; i < bsr->VolCount; i++) {
          bsendmsg(ua, "Volume=\"%s\"\n", bsr->VolParams[i].VolumeName);
          bsendmsg(ua, "MediaType\"%s\"\n", bsr->VolParams[i].MediaType);
index 2af78131f40bb2067f7b4a0e3ab7fdeacd71e92e..a6c82691f5e8a8a672ef08352b11e721448266b6 100644 (file)
@@ -52,7 +52,7 @@ extern void backup_cleanup(JCR *jcr, int TermCode);
 /* bsr.c */
 RBSR *new_bsr();
 void free_bsr(RBSR *bsr);
-int complete_bsr(UAContext *ua, RBSR *bsr);
+bool complete_bsr(UAContext *ua, RBSR *bsr);
 uint32_t write_bsr_file(UAContext *ua, RBSR *bsr);
 void add_findex(RBSR *bsr, uint32_t JobId, int32_t findex);
 void add_findex_all(RBSR *bsr, uint32_t JobId);
index be98752e573bd96728ec019c6efd2b7e13fae6a3..44c5428fbd63f75ac4db0fec6fab1d8e669437eb 100644 (file)
@@ -1,8 +1,8 @@
 /* */
 #undef  VERSION
 #define VERSION "1.37.12"
-#define BDATE   "04 April 2005"
-#define LSMDATE "04Apr05"
+#define BDATE   "05 April 2005"
+#define LSMDATE "05Apr05"
 
 /* Debug flags */
 #undef  DEBUG