From 2fb52951c80e22f0e8a3b350079927b03e45ff54 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Tue, 5 Apr 2005 14:57:14 +0000 Subject: [PATCH] Remove more recursion in src/dird/bsr.c as pointed out by Peter. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1910 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/dird/bsr.c | 26 +++++++++++++------------- bacula/src/dird/protos.h | 2 +- bacula/src/version.h | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/bacula/src/dird/bsr.c b/bacula/src/dird/bsr.c index f656817ee1..01de4416d3 100644 --- a/bacula/src/dird/bsr.c +++ b/bacula/src/dird/bsr.c @@ -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); diff --git a/bacula/src/dird/protos.h b/bacula/src/dird/protos.h index 2af78131f4..a6c82691f5 100644 --- a/bacula/src/dird/protos.h +++ b/bacula/src/dird/protos.h @@ -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); diff --git a/bacula/src/version.h b/bacula/src/version.h index be98752e57..44c5428fbd 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -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 -- 2.39.5