Ignore:
Timestamp:
Aug 18, 2009, 3:20:37 PM (15 years ago)
Author:
Bruno Cornec
Message:

r3338@localhost: bruno | 2009-08-11 23:03:30 +0200
bkpinfo->zip_suffix, bkpinfo->image_devs and bkpinfo->restore_path are now allocated dynmically

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.10/mondo/src/common/libmondo-verify.c

    r2326 r2327  
    5555    assert(bkpinfo != NULL);
    5656    assert_string_is_neither_NULL_nor_zerolength(mountpoint);
    57     sprintf(output, "%s/archives/%d.star.%s", mountpoint, setno,
    58             bkpinfo->zip_suffix);
     57    sprintf(output, "%s/archives/%d.star.%s", mountpoint, setno, bkpinfo->zip_suffix);
    5958    if (!does_file_exist(output)) {
    60         sprintf(output, "%s/archives/%d.afio.%s", mountpoint, setno,
    61                 bkpinfo->zip_suffix);
     59        sprintf(output, "%s/archives/%d.afio.%s", mountpoint, setno, bkpinfo->zip_suffix);
    6260    }
    6361    return (output);
     
    216214    char *command = NULL;
    217215    char *mds = NULL;
    218     char *sz_exe;
     216    char *sz_exe = NULL;
    219217    static char *bufblkA = NULL;
    220218    static char *bufblkB = NULL;
     
    237235    int retval = 0;
    238236
    239     malloc_string(sz_exe);
    240237    if (!bufblkA) {
    241238        if (!(bufblkA = malloc(maxbufsize))) {
     
    254251    if (bkpinfo->compression_level > 0) {
    255252        if (bkpinfo->use_lzo) {
    256             strcpy(sz_exe, "lzop");
     253            mr_asprintf(sz_exe, "lzop");
    257254        } else if (bkpinfo->use_gzip) {
    258             strcpy(sz_exe, "gzip");
     255            mr_asprintf(sz_exe, "gzip");
    259256        } else {
    260             strcpy(sz_exe, "bzip2");
    261         }
    262     } else {
    263         sz_exe[0] = '\0';
     257            mr_asprintf(sz_exe, "bzip2");
     258        }
    264259    }
    265260
     
    289284        // handle slices until end of CD
    290285        if (slice_num == 0) {
    291             log_msg(2, "ISO=%d  bigfile=%ld --START--",
    292                     g_current_media_number, bigfile_num);
     286            log_msg(2, "ISO=%d  bigfile=%ld --START--", g_current_media_number, bigfile_num);
    293287            if (! (fin = fopen(slice_fname(bigfile_num, slice_num, mountpoint, ""), "r"))) {
    294288                log_msg(2, "Cannot open bigfile's info file");
     
    299293                paranoid_fclose(fin);
    300294            }
    301             mr_asprintf(tmp, "%s/%s", bkpinfo->restore_path, biggiestruct.filename);
    302             log_msg(2, "Opening biggiefile #%ld - '%s'", bigfile_num, tmp);
    303             forig = fopen(tmp, "r");
    304             mr_free(tmp);
    305 
    306             if (!forig) {
    307                 log_msg(2, "Failed to open bigfile. Darn.");
    308                 log_to_screen("%s/%s not found on live filesystem",
    309                             bkpinfo->restore_path,
    310                             biggiestruct.filename);
    311                 mr_asprintf(tmp, "echo \"%s/%s not found\" >> %s/biggies.changed", bkpinfo->restore_path, biggiestruct.filename, bkpinfo->tmpdir);
    312                 system(tmp);
     295            if (bkpinfo->restore_path) {
     296                mr_asprintf(tmp, "%s/%s", bkpinfo->restore_path, biggiestruct.filename);
     297                log_msg(2, "Opening biggiefile #%ld - '%s'", bigfile_num, tmp);
     298                forig = fopen(tmp, "r");
    313299                mr_free(tmp);
    314 
    315                 bigfile_num++;
    316                 slice_num = 0;
    317                 retval++;
     300   
     301                if (!forig) {
     302                    log_msg(2, "Failed to open bigfile. Darn.");
     303                    log_to_screen("%s/%s not found on live filesystem", bkpinfo->restore_path, biggiestruct.filename);
     304                    mr_asprintf(tmp, "echo \"%s/%s not found\" >> %s/biggies.changed", bkpinfo->restore_path, biggiestruct.filename, bkpinfo->tmpdir);
     305                    system(tmp);
     306                    mr_free(tmp);
     307
     308                    bigfile_num++;
     309                    slice_num = 0;
     310                    retval++;
     311                } else {
     312                    slice_num++;
     313                }
    318314            } else {
    319                 slice_num++;
     315                log_it("Unable to open bigfile as restore_path is NULL");
    320316            }
    321317        } else if (does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, "")) &&
     
    327323            slice_num = 0;
    328324        } else {
    329             log_msg(2, "ISO=%d  bigfile=%ld  slice=%ld",
    330                     g_current_media_number, bigfile_num, slice_num);
    331             if (!does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, ""))) {
     325            log_msg(2, "ISO=%d  bigfile=%ld  slice=%ld", g_current_media_number, bigfile_num, slice_num);
     326            if ((!does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, ""))) && (sz_exe != NULL)) {
    332327                mr_asprintf(command, "%s -dc %s 2>> %s", sz_exe, slice_fname(bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix), MONDO_LOGFILE);
    333328            } else {
     
    376371    }
    377372    mr_free(mountpoint);
     373    mr_free(sz_exe);
     374
    378375    last_bigfile_num = bigfile_num;
    379376    last_slice_num = slice_num - 1;
     
    388385        paranoid_free(bufblkB);
    389386    }
    390     paranoid_free(sz_exe);
    391387    return (0);
    392388}
     
    435431        mr_free(bkpinfo->zip_exe);
    436432        mr_asprintf(bkpinfo->zip_exe, "lzop");
    437         strcpy(bkpinfo->zip_suffix, "lzo");
     433        mr_free(bkpinfo->zip_suffix);
     434        mr_asprintf(bkpinfo->zip_suffix, "lzo");
    438435        bkpinfo->use_lzo = TRUE;
    439436        bkpinfo->use_gzip = FALSE;
     
    443440        mr_free(bkpinfo->zip_exe);
    444441        mr_asprintf(bkpinfo->zip_exe, "gzip");
    445         strcpy(bkpinfo->zip_suffix, "gz");
     442        mr_free(bkpinfo->zip_suffix);
     443        mr_asprintf(bkpinfo->zip_suffix, "gz");
    446444        bkpinfo->use_lzo = FALSE;
    447445        bkpinfo->use_gzip = TRUE;
     
    451449        mr_free(bkpinfo->zip_exe);
    452450        mr_asprintf(bkpinfo->zip_exe, "bzip2");
    453         strcpy(bkpinfo->zip_suffix, "bz2");
     451        mr_free(bkpinfo->zip_suffix);
     452        mr_asprintf(bkpinfo->zip_suffix, "bz2");
    454453        bkpinfo->use_lzo = FALSE;
    455454        bkpinfo->use_gzip = FALSE;
     455    }
     456    if (bkpinfo->zip_exe == NULL) {
     457        mr_asprintf(bkpinfo->zip_exe, "none");
     458    }
     459    if (bkpinfo->zip_suffix == NULL) {
     460        mr_asprintf(bkpinfo->zip_suffix, "");
    456461    }
    457462    unlink(outlog);
     
    686691 * Verify all afioballs from the opened tape/CD stream.
    687692 * @param bkpinfo The backup information structure. Fields used:
    688  * - @c bkpinfo->restore_path
    689693 * - @c bkpinfo->tmpdir
    690694 *
     
    880884        mr_free(comment);
    881885
    882         mr_asprintf(logical_fname, "%s/%s", bkpinfo->restore_path, orig_fname);
    883         res = verify_a_biggiefile_from_stream(logical_fname, size);
    884         mr_free(logical_fname);
    885 
    886         retval += res;
     886        if (bkpinfo->restore_path) {
     887            mr_asprintf(logical_fname, "%s/%s", bkpinfo->restore_path, orig_fname);
     888            res = verify_a_biggiefile_from_stream(logical_fname, size);
     889            mr_free(logical_fname);
     890            retval += res;
     891        } else {
     892            log_it("Unable to verify bigfile as restore_path is NULL");
     893        }
     894
    887895        current_biggiefile_number++;
    888896        g_current_progress++;
Note: See TracChangeset for help on using the changeset viewer.