Ignore:
Timestamp:
Sep 25, 2013, 8:55:45 AM (11 years ago)
Author:
Bruno Cornec
Message:
  • Lots of memory management backports from 3.1 to 3.2 - still not finished, nor working ATM. the common subdir was done during travel, so this is essentially a backup !
File:
1 edited

Legend:

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

    r3185 r3191  
    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);
     
    8078{
    8179    /*@ buffer ********************************************************** */
    82     char *command;
    83     char *afio_found_changes;
     80    char *command = NULL;
     81    char *afio_found_changes = NULL;
    8482
    8583    /*@ int ************************************************************* */
     
    8987    long afio_diffs = 0;
    9088
    91     command = malloc(2000);
    92     afio_found_changes = malloc(500);
    9389    assert_string_is_neither_NULL_nor_zerolength(changedfiles_fname);
    9490    assert_string_is_neither_NULL_nor_zerolength(ignorefiles_fname);
    9591    assert_string_is_neither_NULL_nor_zerolength(stderr_fname);
    9692
    97     sprintf(afio_found_changes, "%s.afio", ignorefiles_fname);
    98     paranoid_system("sync");
    99 
    100 /*  sprintf (command,
    101        "grep \"afio: \" %s | awk '{j=substr($0,8); i=index(j,\": \");printf \"/%%s\\n\",substr(j,1,i-2);}' | sort -u | grep -v \"incheckentry.*xwait\" | grep -vx \"/afio:.*\" | grep -vx \"/dev/.*\" > %s",
    102        stderr_fname, afio_found_changes);
    103 */
     93    mr_asprintf(afio_found_changes, "%s.afio", ignorefiles_fname);
     94    sync();
    10495
    10596    log_msg(1, "Now scanning log file for 'afio: ' stuff");
    106     sprintf(command,
    107             "grep \"afio: \" %s | sed 's/afio: //' | grep -vE '^/dev/.*$' >> %s",
    108             stderr_fname, afio_found_changes);
     97    mr_asprintf(command, "grep \"afio: \" %s | sed 's/afio: //' | grep -vE '^/dev/.*$' >> %s", stderr_fname, afio_found_changes);
    10998    log_msg(2, command);
    11099    res = system(command);
     100    mr_free(command);
     101
    111102    if (res) {
    112103        log_msg(2, "Warning - failed to think");
     
    114105
    115106    log_msg(1, "Now scanning log file for 'star: ' stuff");
    116     sprintf(command,
    117             "grep \"star: \" %s | sed 's/star: //' | grep -vE '^/dev/.*$' >> %s",
    118             stderr_fname, afio_found_changes);
     107    mr_asprintf(command, "grep \"star: \" %s | sed 's/star: //' | grep -vE '^/dev/.*$' >> %s", stderr_fname, afio_found_changes);
    119108    log_msg(2, command);
    120109    res = system(command);
     110    mr_free(command);
     111
    121112    if (res) {
    122113        log_msg(2, "Warning - failed to think");
    123114    }
    124 //  exclude_nonexistent_files (afio_found_changes);
    125115    afio_diffs = count_lines_in_file(afio_found_changes);
    126     sprintf(command,
    127             "sort %s %s %s | uniq -c | awk '{ if ($1==\"2\") {print $2;};}' | grep -v \"incheckentry xwait()\" > %s",
    128             ignorefiles_fname, afio_found_changes, afio_found_changes,
    129             changedfiles_fname);
     116    mr_asprintf(command, "sort %s %s %s | uniq -c | awk '{ if ($1==\"2\") {print $2;};}' | grep -v \"incheckentry xwait()\" > %s", ignorefiles_fname, afio_found_changes, afio_found_changes, changedfiles_fname);
     117    mr_free(afio_found_changes);
    130118    log_msg(2, command);
    131119    paranoid_system(command);
    132     paranoid_free(command);
    133     paranoid_free(afio_found_changes);
     120    mr_free(command);
    134121    return (afio_diffs);
    135122}
     
    151138
    152139    /*@ buffers ********************************************************* */
    153     char *tmp;
     140    char *tmp = NULL;
    154141    char *mds = NULL;
    155142
     
    162149    assert_string_is_neither_NULL_nor_zerolength(mountpoint);
    163150    assert(bkpinfo != NULL);
    164     malloc_string(tmp);
    165151
    166152    for (set_number = 0;
     
    175161    if (g_last_afioball_number != set_number - 1) {
    176162        if (set_number == 0) {
    177             log_msg(1,
    178                     "Weird error in verify_afioballs_on_CD() but it's really a cosmetic error, nothing more");
     163            log_msg(1, "Weird error in verify_afioballs_on_CD() but it's really a cosmetic error, nothing more");
    179164        } else {
    180165            retval++;
    181             sprintf(tmp, "Warning - missing set(s) between %d and %d\n",
    182                     g_last_afioball_number, set_number - 1);
    183             log_to_screen(tmp);
     166            log_to_screen("Warning - missing set(s) between %d and %d\n", g_last_afioball_number, set_number - 1);
    184167        }
    185168    }
    186169    mds = media_descriptor_string(bkpinfo->backup_media_type);
    187     sprintf(tmp, "Verifying %s #%d's tarballs", mds, g_current_media_number);
     170    mr_asprintf(tmp, "Verifying %s #%d's tarballs", mds, g_current_media_number);
    188171    mr_free(mds);
    189172
    190173    open_evalcall_form(tmp);
     174    mr_free(tmp);
    191175
    192176    for (total_sets = set_number;
     
    208192    g_last_afioball_number = set_number - 1;
    209193    close_evalcall_form();
    210     paranoid_free(tmp);
    211194    return (retval);
    212195}
     
    227210
    228211    /*@ buffer ********************************************************** */
    229     char *tmp;
    230     char *mountpoint;
    231 //  char ca, cb;
    232     char *command;
     212    char *tmp = NULL;
     213    char *mountpoint = NULL;
     214    char *command = NULL;
    233215    char *mds = NULL;
    234     char *sz_exe;
     216    char *sz_exe = NULL;
    235217    static char *bufblkA = NULL;
    236218    static char *bufblkB = NULL;
     
    252234    FILE *fin;
    253235    int retval = 0;
    254 //  long long outlen;
    255 
    256     malloc_string(tmp);
    257     malloc_string(mountpoint);
    258     malloc_string(command);
    259     malloc_string(sz_exe);
     236
    260237    if (!bufblkA) {
    261238        if (!(bufblkA = malloc(maxbufsize))) {
     
    274251    if (bkpinfo->compression_level > 0) {
    275252        if (bkpinfo->use_lzo) {
    276             strcpy(sz_exe, "lzop");
     253            mr_asprintf(sz_exe, "lzop");
    277254        } else if (bkpinfo->use_gzip) {
    278             strcpy(sz_exe, "gzip");
     255            mr_asprintf(sz_exe, "gzip");
     256        } else if (bkpinfo->use_lzma) {
     257            mr_asprintf(sz_exe, "lzma");
    279258        } else {
    280             strcpy(sz_exe, "bzip2");
    281         }
    282     } else {
    283         sz_exe[0] = '\0';
     259            mr_asprintf(sz_exe, "bzip2");
     260        }
    284261    }
    285262
    286263    log_it("before vsbf");
    287264    mds = media_descriptor_string(bkpinfo->backup_media_type);
    288     sprintf(tmp, "Verifying %s#%d's big files", mds, g_current_media_number);
     265    mr_asprintf(tmp, "Verifying %s#%d's big files", mds, g_current_media_number);
    289266    mr_free(mds);
    290267
    291268    open_evalcall_form(tmp);
     269    mr_free(tmp);
     270
    292271    log_it("after vsbf");
    293     sprintf(mountpoint, "%s/archives", mtpt);
     272    mr_asprintf(mountpoint, "%s/archives", mtpt);
    294273    if (last_bigfile_num == -1) {
    295274        bigfile_num = 0;
     
    302281        slice_num = last_slice_num + 1;
    303282    }
    304     while (does_file_exist
    305            (slice_fname
    306             (bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix))
     283    while (does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix))
    307284           ||
    308            does_file_exist(slice_fname
    309                            (bigfile_num, slice_num, mountpoint, ""))) {
     285           does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, ""))) {
    310286        // handle slices until end of CD
    311287        if (slice_num == 0) {
    312             log_msg(2, "ISO=%d  bigfile=%ld --START--",
    313                     g_current_media_number, bigfile_num);
    314             if (!
    315                 (fin =
    316                  fopen(slice_fname(bigfile_num, slice_num, mountpoint, ""),
    317                        "r"))) {
     288            log_msg(2, "ISO=%d  bigfile=%ld --START--", g_current_media_number, bigfile_num);
     289            if (! (fin = fopen(slice_fname(bigfile_num, slice_num, mountpoint, ""), "r"))) {
    318290                log_msg(2, "Cannot open bigfile's info file");
    319291            } else {
    320                 if (fread
    321                     ((void *) &biggiestruct, 1, sizeof(biggiestruct),
    322                      fin) < sizeof(biggiestruct)) {
     292                if (fread ((void *) &biggiestruct, 1, sizeof(biggiestruct), fin) < sizeof(biggiestruct)) {
    323293                    log_msg(2, "Unable to get biggiestruct");
    324294                }
    325295                paranoid_fclose(fin);
    326296            }
    327             sprintf(tmp, "%s/%s", bkpinfo->restore_path,
    328                     biggiestruct.filename);
    329             log_msg(2, "Opening biggiefile #%ld - '%s'", bigfile_num, tmp);
    330             if (!(forig = fopen(tmp, "r"))) {
    331                 log_msg(2, "Failed to open bigfile. Darn.");
    332                 log_to_screen("%s/%s not found on live filesystem",
    333                             bkpinfo->restore_path,
    334                             biggiestruct.filename);
    335                 mr_asprintf(mds, "echo \"%s/%s not found\" >> %s/biggies.changed",
    336                             bkpinfo->restore_path,
    337                             biggiestruct.filename,
    338                             bkpinfo->tmpdir);
    339                 paranoid_system(mds);
    340                 paranoid_free(mds);
    341 
    342                 bigfile_num++;
    343                 slice_num = 0;
    344                 retval++;
     297            if (bkpinfo->restore_path) {
     298                mr_asprintf(tmp, "%s/%s", bkpinfo->restore_path, biggiestruct.filename);
     299                log_msg(2, "Opening biggiefile #%ld - '%s'", bigfile_num, tmp);
     300                forig = fopen(tmp, "r");
     301                mr_free(tmp);
     302   
     303                if (!forig) {
     304                    log_msg(2, "Failed to open bigfile. Darn.");
     305                    log_to_screen("%s/%s not found on live filesystem", bkpinfo->restore_path, biggiestruct.filename);
     306                    mr_asprintf(tmp, "echo \"%s/%s not found\" >> %s/biggies.changed", bkpinfo->restore_path, biggiestruct.filename, bkpinfo->tmpdir);
     307                    paranoid_system(tmp);
     308                    mr_free(tmp);
     309
     310                    bigfile_num++;
     311                    slice_num = 0;
     312                    retval++;
     313                } else {
     314                    slice_num++;
     315                }
    345316            } else {
    346                 slice_num++;
     317                log_it("Unable to open bigfile as restore_path is NULL");
    347318            }
    348319        } else if (does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, "")) &&
     
    354325            slice_num = 0;
    355326        } else {
    356             log_msg(2, "ISO=%d  bigfile=%ld  slice=%ld",
    357                     g_current_media_number, bigfile_num, slice_num);
    358             if (!does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, ""))) {
    359                 sprintf(command, "%s -dc %s 2>> %s",
    360                         sz_exe,
    361                         slice_fname(bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix),
    362                         MONDO_LOGFILE);
     327            log_msg(2, "ISO=%d  bigfile=%ld  slice=%ld", g_current_media_number, bigfile_num, slice_num);
     328            if ((!does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, ""))) && (sz_exe != NULL)) {
     329                mr_asprintf(command, "%s -dc %s 2>> %s", sz_exe, slice_fname(bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix), MONDO_LOGFILE);
    363330            } else {
    364                 sprintf(command, "cat %s 2>> %s",
    365                         slice_fname(bigfile_num, slice_num, mountpoint, ""), MONDO_LOGFILE);
     331                mr_asprintf(command, "cat %s 2>> %s", slice_fname(bigfile_num, slice_num, mountpoint, ""), MONDO_LOGFILE);
    366332            }
    367             if ((pin = popen(command, "r"))) {
     333            pin = popen(command, "r");
     334            mr_free(command);
     335            if (pin) {
    368336                res = 0;
    369337                while (!feof(pin)) {
     
    404372        }
    405373    }
     374    mr_free(mountpoint);
     375    mr_free(sz_exe);
     376
    406377    last_bigfile_num = bigfile_num;
    407378    last_slice_num = slice_num - 1;
     
    416387        paranoid_free(bufblkB);
    417388    }
    418     paranoid_free(tmp);
    419     paranoid_free(command);
    420     paranoid_free(sz_exe);
    421     paranoid_free(mountpoint);
    422389    return (0);
    423390}
     
    442409{
    443410    /*@ buffers ********************************************************* */
    444     char *command;
    445     char *outlog;
    446     char *tmp;
    447     char *p;
     411    char *command = NULL;
     412    char *outlog = NULL;
     413    char *tmp = NULL;
     414    char *p = NULL;
    448415
    449416    /*@ pointers ******************************************************* */
     
    462429
    463430    log_it("Verifying fileset '%s'", tarball_fname);
    464     /*  chdir("/"); */
    465     sprintf(outlog, "%s/afio.log", bkpinfo->tmpdir);
    466 /* if programmer forgot to say which compression thingy to use then find out */
    467     if (strstr(tarball_fname, ".lzo")
    468         && strcmp(bkpinfo->zip_suffix, "lzo")) {
     431    mr_asprintf(outlog, "%s/afio.log", bkpinfo->tmpdir);
     432    /* if programmer forgot to say which compression thingy to use then find out */
     433    if (strstr(tarball_fname, ".lzo") && strcmp(bkpinfo->zip_suffix, "lzo")) {
    469434        log_msg(2, "OK, I'm going to start using lzop.");
    470435        strcpy(bkpinfo->zip_exe, "lzop");
     
    472437        bkpinfo->use_lzo = TRUE;
    473438        bkpinfo->use_gzip = FALSE;
    474     }
    475     if (strstr(tarball_fname, ".gz")
    476         && strcmp(bkpinfo->zip_suffix, "gz")) {
     439        bkpinfo->use_lzma = FALSE;
     440    }
     441    if (strstr(tarball_fname, ".gz") && strcmp(bkpinfo->zip_suffix, "gz")) {
    477442        log_msg(2, "OK, I'm going to start using gzip.");
    478443        strcpy(bkpinfo->zip_exe, "gzip");
     
    480445        bkpinfo->use_lzo = FALSE;
    481446        bkpinfo->use_gzip = TRUE;
    482     }
    483     if (strstr(tarball_fname, ".bz2")
    484         && strcmp(bkpinfo->zip_suffix, "bz2")) {
     447        bkpinfo->use_lzma = FALSE;
     448    }
     449    if (strstr(tarball_fname, ".bz2") && strcmp(bkpinfo->zip_suffix, "bz2")) {
    485450        log_msg(2, "OK, I'm going to start using bzip2.");
    486451        strcpy(bkpinfo->zip_exe, "bzip2");
     
    488453        bkpinfo->use_lzo = FALSE;
    489454        bkpinfo->use_gzip = FALSE;
     455        bkpinfo->use_lzma = FALSE;
     456    }
     457    if (strstr(tarball_fname, ".lzma") && strcmp(bkpinfo->zip_suffix, "lzma")) {
     458        log_msg(2, "OK, I'm going to start using lzma.");
     459        strcpy(bkpinfo->zip_exe, "lzma");
     460        strcpy(bkpinfo->zip_suffix, "lzma");
     461        bkpinfo->use_lzo = FALSE;
     462        bkpinfo->use_gzip = FALSE;
     463        bkpinfo->use_lzma = TRUE;
     464    }
     465    if (bkpinfo->zip_exe == NULL) {
     466        strcpy(bkpinfo->zip_exe, "none");
     467    }
     468    if (bkpinfo->zip_suffix == NULL) {
     469        strcpy(bkpinfo->zip_suffix, "");
    490470    }
    491471    unlink(outlog);
     
    493473        bkpinfo->use_star = TRUE;
    494474        if (strstr(tarball_fname, ".bz2"))
    495             sprintf(command,
    496                     "star -sparse -diff diffopts=mode,size,data file=%s %s >> %s 2>> %s",
    497                     tarball_fname,
    498                     (strstr(tarball_fname, ".bz2")) ? "-bz" : " ", outlog,
    499                     outlog);
     475            mr_asprintf(command, "star -sparse -diff diffopts=mode,size,data file=%s %s >> %s 2>> %s", tarball_fname, (strstr(tarball_fname, ".bz2")) ? "-bz" : " ", outlog, outlog);
    500476    } else {
    501477        bkpinfo->use_star = FALSE;
    502         sprintf(command, "afio -r -P %s -Z %s >> %s 2>> %s",
    503                 bkpinfo->zip_exe, tarball_fname, outlog, outlog);
     478        /* Here we suppose that there is always a compression program called */
     479        if (bkpinfo->zip_exe) {
     480            mr_asprintf(command, "afio -r -P %s -Z %s >> %s 2>> %s", bkpinfo->zip_exe, tarball_fname, outlog, outlog);
     481        } else {
     482            mr_asprintf(command, "afio -r -Z %s >> %s 2>> %s", tarball_fname, outlog, outlog);
     483        }
    504484    }
    505485    log_msg(6, "command=%s", command);
    506486    paranoid_system(command);
     487    mr_free(command);
     488
    507489    if (length_of_file(outlog) < 10) {
    508         sprintf(command, "cat %s >> %s", outlog, MONDO_LOGFILE);
     490        mr_asprintf(command, "cat %s >> %s", outlog, MONDO_LOGFILE);
    509491    } else {
    510         sprintf(command, "cut -d: -f%d %s | sort -u",
    511                 (bkpinfo->use_star) ? 1 : 2, outlog);
     492        mr_asprintf(command, "cut -d: -f%d %s | sort -u", (bkpinfo->use_star) ? 1 : 2, outlog);
    512493        pin = popen(command, "r");
    513494        if (pin) {
    514             for (p = fgets(tmp, MAX_STR_LEN, pin); !feof(pin) && (p != NULL);
    515                  p = fgets(tmp, MAX_STR_LEN, pin)) {
     495            for (mr_getline(tmp, pin); !feof(pin); mr_getline(tmp, pin)) {
    516496                if (bkpinfo->use_star) {
    517497                    if (!strstr(tmp, "diffopts=")) {
    518                         while (strlen(tmp) > 0
    519                                && tmp[strlen(tmp) - 1] < 32) {
     498                        while (strlen(tmp) > 0 && tmp[strlen(tmp) - 1] < 32) {
    520499                            tmp[strlen(tmp) - 1] = '\0';
    521500                        }
    522501                        if (strchr(tmp, '/')) {
    523502                            if (!diffs) {
    524                                 log_msg(0, "'%s' - differences found",
    525                                         tarball_fname);
     503                                log_msg(0, "'%s' - differences found", tarball_fname);
    526504                            }
    527                             log_msg(0, "star: /%s",
    528                                     strip_afio_output_line(tmp));
     505                            log_msg(0, "star: /%s", strip_afio_output_line(tmp));
    529506                            diffs++;
    530507                        }
     
    532509                } else {
    533510                    if (!diffs) {
    534                         log_msg(0, "'%s' - differences found",
    535                                 tarball_fname);
     511                        log_msg(0, "'%s' - differences found", tarball_fname);
    536512                    }
    537513                    log_msg(0, "afio: /%s", strip_afio_output_line(tmp));
    538514                    diffs++;
    539515                }
     516                mr_free(tmp);
    540517            }
     518            mr_free(tmp);
    541519            paranoid_pclose(pin);
    542520        } else {
     
    544522        }
    545523    }
    546     /*  chdir(old_pwd); */
    547     //  sprintf (tmp, "uniq -u %s >> %s", "/tmp/mondo-verify.err", MONDO_LOGFILE);
    548     //  paranoid_system (tmp);
    549     //  unlink ("/tmp/mondo-verify.err");
    550     paranoid_free(command);
    551     paranoid_free(outlog);
    552     paranoid_free(tmp);
     524    mr_free(command);
     525    mr_free(outlog);
    553526    return (0);
    554527}
     
    604577
    605578    /*@ buffers ********************************************************** */
    606     char *tmp;
    607     char *tarball_fname;
     579    char *tmp = NULL;
     580    char *tarball_fname = NULL;
    608581
    609582    /*@ pointers ********************************************************* */
    610583    char *p;
    611584
    612     malloc_string(tmp);
    613     malloc_string(tarball_fname);
    614585    assert(bkpinfo != NULL);
    615586    assert_string_is_neither_NULL_nor_zerolength(orig_fname);
     
    621592        p++;
    622593    }
    623     sprintf(tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);
     594    mr_asprintf(tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);
    624595    paranoid_system(tmp);
    625     sprintf(tarball_fname, "%s/tmpfs/temporary-%s", bkpinfo->tmpdir, p);
    626     sprintf(tmp, "Temporarily copying file from tape to '%s'",
    627             tarball_fname);
    628 /*  log_it(tmp); */
     596    mr_free(tmp);
     597
     598    mr_asprintf(tarball_fname, "%s/tmpfs/temporary-%s", bkpinfo->tmpdir, p);
    629599    read_file_from_stream_to_file(tarball_fname, size);
    630600    res = verify_a_tarball(tarball_fname);
    631601    if (res) {
    632         sprintf(tmp,
    633                 "Afioball '%s' no longer matches your live filesystem", p);
    634         log_msg(0, tmp);
     602        log_msg(0, "Afioball '%s' no longer matches your live filesystem", p);
    635603        retval++;
    636604    }
    637605    unlink(tarball_fname);
    638     paranoid_free(tmp);
    639     paranoid_free(tarball_fname);
     606    mr_free(tarball_fname);
    640607    return (retval);
    641608}
     
    660627
    661628    /*@ char ************************************************************ */
    662     char *test_file;
    663     char *biggie_cksum;
    664     char *orig_cksum;
    665     char *tmp;
    666     char *slice_fnam;
     629    char *test_file = NULL;
     630    char *biggie_cksum = NULL;
     631    char *orig_cksum = NULL;
     632    char *tmp = NULL;
     633    char *slice_fnam = NULL;
    667634
    668635    /*@ pointers ******************************************************** */
     
    672639    long long slice_siz;
    673640
    674     malloc_string(test_file);
    675     malloc_string(biggie_cksum);
    676     malloc_string(orig_cksum);
    677     malloc_string(tmp);
    678641    malloc_string(slice_fnam);
    679642    assert(bkpinfo != NULL);
     
    686649        p++;
    687650    }
    688     sprintf(test_file, "%s/temporary-%s", bkpinfo->tmpdir, p);
    689     sprintf(tmp,
    690             "Temporarily copying biggiefile %s's slices from tape to '%s'",
    691             p, test_file);
    692 /*  log_it(tmp); */
     651    mr_asprintf(test_file, "%s/temporary-%s", bkpinfo->tmpdir, p);
    693652    for (res =
    694653         read_header_block_from_stream(&slice_siz, slice_fnam, &ctrl_chr);
    695654         ctrl_chr != BLK_STOP_A_BIGGIE;
    696655         res =
    697          read_header_block_from_stream(&slice_siz, slice_fnam,
    698                                        &ctrl_chr)) {
     656         read_header_block_from_stream(&slice_siz, slice_fnam, &ctrl_chr)) {
    699657        if (ctrl_chr != BLK_START_AN_AFIO_OR_SLICE) {
    700658            wrong_marker(BLK_START_AN_AFIO_OR_SLICE, ctrl_chr);
     
    703661        unlink(test_file);
    704662        res =
    705             read_header_block_from_stream(&slice_siz, slice_fnam,
    706                                           &ctrl_chr);
     663            read_header_block_from_stream(&slice_siz, slice_fnam, &ctrl_chr);
    707664        if (ctrl_chr != BLK_STOP_AN_AFIO_OR_SLICE) {
    708665            log_msg(2, "test_file = %s", test_file);
     
    712669        retval += res;
    713670    }
    714     strcpy(biggie_cksum, slice_fnam);
     671    mr_asprintf(biggie_cksum, "%s", slice_fnam);
    715672    if (biggie_cksum[0] != '\0') {
    716         strcpy(orig_cksum, calc_checksum_of_file(biggie_fname));
     673        mr_asprintf(orig_cksum, "%s", calc_checksum_of_file(biggie_fname));
    717674        if (strcmp(biggie_cksum, orig_cksum)) {
    718             sprintf(tmp, "orig cksum=%s; curr cksum=%s", biggie_cksum,
    719                     orig_cksum);
    720             log_msg(2, tmp);
    721             sprintf(tmp, "%s has changed on live filesystem",
    722                     biggie_fname);
    723             log_to_screen(tmp);
    724             sprintf(tmp, "echo \"%s\" >> %s/biggies.changed",
    725                     biggie_fname, bkpinfo->tmpdir);
     675            log_msg(2, "orig cksum=%s; curr cksum=%s", biggie_cksum, orig_cksum);
     676            log_to_screen("%s has changed on live filesystem", biggie_fname);
     677
     678            mr_asprintf(tmp, "echo \"%s\" >> %s/biggies.changed", biggie_fname, bkpinfo->tmpdir);
    726679            paranoid_system(tmp);
    727         }
    728     }
    729     paranoid_free(test_file);
    730     paranoid_free(biggie_cksum);
    731     paranoid_free(orig_cksum);
    732     paranoid_free(tmp);
     680            mr_free(tmp);
     681        }
     682        mr_free(orig_cksum);
     683    }
     684    mr_free(biggie_cksum);
     685    mr_free(test_file);
    733686    paranoid_free(slice_fnam);
    734687    return (retval);
     
    739692 * Verify all afioballs from the opened tape/CD stream.
    740693 * @param bkpinfo The backup information structure. Fields used:
    741  * - @c bkpinfo->restore_path
    742694 * - @c bkpinfo->tmpdir
    743695 *
     
    754706
    755707    /*@ buffers ***************************************************** */
    756     char *tmp;
     708    char *tmp = NULL;
    757709    char *fname;
    758710    char *curr_xattr_list_fname;
     
    763715
    764716    assert(bkpinfo != NULL);
    765     malloc_string(tmp);
    766717    malloc_string(fname);
    767718    malloc_string(curr_xattr_list_fname);
     
    816767            wrong_marker(BLK_START_AN_AFIO_OR_SLICE, ctrl_chr);
    817768        }
    818         sprintf(tmp, "Verifying fileset #%ld", current_afioball_number);
    819         /*log_it(tmp); */
     769        mr_asprintf(tmp, "Verifying fileset #%ld", current_afioball_number);
    820770        update_progress_form(tmp);
     771        mr_free(tmp);
     772
    821773        res = verify_an_afioball_from_stream(fname, size);
    822774        if (res) {
    823             sprintf(tmp, "Afioball %ld differs from live filesystem",
    824                     current_afioball_number);
    825             log_to_screen(tmp);
     775            log_to_screen("Afioball %ld differs from live filesystem", current_afioball_number);
    826776        }
    827777        retval += res;
     
    835785    log_msg(1, "All done with afioballs");
    836786    close_progress_form();
    837     paranoid_free(tmp);
    838787    paranoid_free(fname);
    839788    paranoid_free(curr_xattr_list_fname);
     
    863812
    864813    /*@ buffers ******************************************************** */
    865     char *tmp;
    866     char *orig_fname, *logical_fname;
    867     char *comment;
    868     char *curr_xattr_list_fname;
    869     char *curr_acl_list_fname;
     814    char *orig_fname;
     815    char *logical_fname = NULL;
     816    char *comment = NULL;
     817    char *curr_xattr_list_fname = NULL;
     818    char *curr_acl_list_fname = NULL;
    870819    /*@ pointers ******************************************************* */
    871820    char *p;
     
    875824
    876825    assert(bkpinfo != NULL);
    877     malloc_string(tmp);
    878826    malloc_string(orig_fname);
    879     malloc_string(logical_fname);
    880     malloc_string(comment);
    881827    malloc_string(curr_xattr_list_fname);
    882828    malloc_string(curr_acl_list_fname);
     
    890836            bkpinfo->tmpdir);
    891837    }
    892     sprintf(comment, "Verifying all bigfiles.");
     838    mr_asprintf(comment, "Verifying all bigfiles.");
    893839    log_to_screen(comment);
    894     sprintf(tmp, "%s/biggielist.txt", bkpinfo->tmpdir);
    895 //  noof_biggiefiles = count_lines_in_file (tmp); // pointless
    896840    res = read_header_block_from_stream(&size, orig_fname, &ctrl_chr);
    897841    if (ctrl_chr != BLK_START_BIGGIEFILES) {
     
    911855                       "Please wait. This may take some time.", "",
    912856                       noof_biggiefiles);
     857    mr_free(comment);
     858
    913859    for (res = read_header_block_from_stream(&size, orig_fname, &ctrl_chr);
    914860         ctrl_chr != BLK_STOP_BIGGIEFILES;
     
    925871            p++;
    926872        }
    927         sprintf(comment, "Verifying bigfile #%ld (%ld K)",
    928                 current_biggiefile_number, (long) size >> 10);
     873        mr_asprintf(comment, "Verifying bigfile #%ld (%ld K)", current_biggiefile_number, (long) size >> 10);
    929874        update_progress_form(comment);
    930         sprintf(logical_fname, "%s/%s", bkpinfo->restore_path, orig_fname);
    931         res =
    932             verify_a_biggiefile_from_stream(logical_fname, size);
    933         retval += res;
     875        mr_free(comment);
     876
     877        if (bkpinfo->restore_path) {
     878            mr_asprintf(logical_fname, "%s/%s", bkpinfo->restore_path, orig_fname);
     879            res = verify_a_biggiefile_from_stream(logical_fname, size);
     880            mr_free(logical_fname);
     881            retval += res;
     882        } else {
     883            log_it("Unable to verify bigfile as restore_path is NULL");
     884        }
     885
    934886        current_biggiefile_number++;
    935887        g_current_progress++;
     
    937889    close_progress_form();
    938890    paranoid_free(orig_fname);
    939     paranoid_free(logical_fname);
    940891    paranoid_free(curr_xattr_list_fname);
    941892    paranoid_free(curr_acl_list_fname);
    942     paranoid_free(comment);
    943     paranoid_free(tmp);
    944893    return (retval);
    945894}
     
    951900 * Verify the USB device
    952901 * @param bkpinfo The backup information structure. Fields used:
    953  * - @c bkpinfo->isodir
    954902 * - @c bkpinfo->media_device
    955903 * - @c bkpinfo->tmpdir
     
    981929    assert(bkpinfo != NULL);
    982930
     931    if (bkpinfo->media_device == NULL) {
     932        return(1);
     933    }
     934
    983935    mr_asprintf(fname, "%s1", bkpinfo->media_device);
    984936    if (is_this_device_mounted(fname)) {
     
    1032984#endif
    1033985    {
    1034         mr_asprintf(tmp, "%s failed; unable to unmount USB device\n", tmp1);
    1035         log_to_screen(tmp);
    1036         paranoid_free(tmp);
     986        log_to_screen("%s failed; unable to unmount USB device\n", tmp1);
    1037987        retval++;
    1038988    } else {
    1039989        log_msg(2, "OK, I've unmounted the USB device\n");
    1040990    }
    1041     paranoid_free(tmp1);
    1042     paranoid_free(mountpoint);
     991    mr_free(tmp1);
     992    mr_free(mountpoint);
    1043993    return (retval);
    1044994}
     
    10661016
    10671017    /*@ buffers ******************************************************** */
    1068     char *mountpoint;
    1069     char *command;
    1070     char *tmp;
    1071     char *fname;
     1018    char *mountpoint = NULL;
     1019    char *command = NULL;
     1020    char *tmp = NULL;
     1021    char *fname = NULL;
    10721022#ifdef __FreeBSD__
    10731023    char mdd[32];
     
    10791029#endif
    10801030
    1081     command = malloc(2000);
    1082     malloc_string(mountpoint);
    1083     malloc_string(tmp);
    1084     malloc_string(fname);
    1085 
    10861031    assert(bkpinfo != NULL);
    10871032
    1088     sprintf(mountpoint, "%s/cdrom", bkpinfo->tmpdir);
    1089     sprintf(fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->netfs_remote_dir,
    1090             bkpinfo->prefix, g_current_media_number);
     1033    if (bkpinfo->media_device == NULL) {
     1034        return(1);
     1035    }
     1036
     1037    mr_asprintf(mountpoint, "%s/cdrom", bkpinfo->tmpdir);
     1038    if (((bkpinfo->isodir == NULL) && (bkpinfo->netfs_remote_dir == NULL)) || (bkpinfo->prefix == NULL)) {
     1039        fatal_error("No iso filename preparation possible");
     1040    }
     1041    if (bkpinfo->netfs_remote_dir) {
     1042        // NETFS
     1043        mr_asprintf(fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->netfs_remote_dir, bkpinfo->prefix, g_current_media_number);
     1044    } else {
     1045        // ISO
     1046        mr_asprintf(fname, "%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->prefix, g_current_media_number);
     1047    }
    10911048
    10921049    mkdir(mountpoint, 1777);
    10931050    sync();
    10941051    if (!does_file_exist(fname)) {
    1095         sprintf(tmp,
    1096                 "%s not found; assuming you backed up to CD; verifying CD...",
    1097                 fname);
    1098         log_msg(2, tmp);
     1052        log_msg(2, "%s not found; assuming you backed up to CD; verifying CD...", fname);
    10991053        if (bkpinfo->manual_cd_tray) {
    11001054            popup_and_OK("Please push CD tray closed.");
     
    11021056        if (find_and_mount_actual_cd(mountpoint)) {
    11031057            log_to_screen("failed to mount actual CD");
     1058            mr_free(mountpoint);
     1059            mr_free(fname);
    11041060            return (1);
    11051061        }
    11061062    } else {
    1107         sprintf(tmp, "%s found; verifying ISO...", fname);
     1063        log_msg(2, "%s found; verifying ISO...", fname);
    11081064#ifdef __FreeBSD__
    11091065        ret = 0;
     
    11111067        mddevice = make_vn(fname);
    11121068        if (ret) {
    1113             sprintf(tmp, "make_vn of %s failed; unable to verify ISO\n",
    1114                     fname);
    1115             log_to_screen(tmp);
     1069            log_to_screen("make_vn of %s failed; unable to verify ISO\n", fname);
     1070            mr_free(mountpoint);
     1071            mr_free(fname);
    11161072            return (1);
    11171073        }
    1118         sprintf(command, "mount_cd9660 %s %s", mddevice, mountpoint);
     1074        mr_asprintf(command, "mount_cd9660 %s %s", mddevice, mountpoint);
    11191075#else
    1120         sprintf(command, "mount -o loop,ro -t iso9660 %s %s", fname,
    1121                 mountpoint);
     1076        mr_asprintf(command, "mount -o loop,ro -t iso9660 %s %s", fname, mountpoint);
    11221077#endif
    11231078        if (run_program_and_log_output(command, FALSE)) {
    1124             sprintf(tmp, "%s failed; unable to mount ISO image\n",
    1125                     command);
    1126             log_to_screen(tmp);
     1079            log_to_screen("%s failed; unable to mount ISO image\n", command);
     1080            mr_free(mountpoint);
     1081            mr_free(command);
     1082            mr_free(fname);
    11271083            return (1);
    11281084        }
     1085        mr_free(command);
    11291086    }
    11301087    log_msg(2, "OK, I've mounted the ISO/CD\n");
    1131     sprintf(tmp, "%s/archives/NOT-THE-LAST", mountpoint);
     1088    mr_asprintf(tmp, "%s/archives/NOT-THE-LAST", mountpoint);
    11321089    if (!does_file_exist(tmp)) {
    11331090        log_msg
     
    11411098*/
    11421099    }
     1100    mr_free(tmp);
     1101
    11431102    verify_afioballs_on_CD(mountpoint);
    11441103    log_it("before verify_all_slices");
     
    11471106#ifdef __FreeBSD__
    11481107    ret = 0;
    1149     sprintf(command, "umount -d %s", mountpoint);
     1108    mr_asprintf(command, "umount -d %s", mountpoint);
    11501109    ret += system(command);
    11511110    ret += kick_vn(mddevice);
    1152     if (ret)
     1111    if (ret) {
    11531112#else
    1154     sprintf(command, "umount -d %s", mountpoint);
    1155     if (system(command))
     1113    mr_asprintf(command, "umount -d %s", mountpoint);
     1114    if (system(command)) {
    11561115#endif
    1157     {
    1158         sprintf(tmp, "%s failed; unable to unmount ISO image\n", command);
    1159         log_to_screen(tmp);
     1116        log_to_screen("%s failed; unable to unmount ISO image\n", command);
     1117
    11601118        retval++;
    11611119    } else {
    11621120        log_msg(2, "OK, I've unmounted the ISO file\n");
    11631121    }
     1122    mr_free(mountpoint);
     1123    mr_free(command);
     1124
    11641125    if (!does_file_exist(fname)) {
    1165         sprintf(command, "umount -d %s", bkpinfo->media_device);
     1126        mr_asprintf(command, "umount -d %s", bkpinfo->media_device);
    11661127        run_program_and_log_output(command, 2);
    1167         if (!bkpinfo->please_dont_eject
    1168             && eject_device(bkpinfo->media_device)) {
     1128        mr_free(command);
     1129
     1130        if (!bkpinfo->please_dont_eject && eject_device(bkpinfo->media_device)) {
    11691131            log_msg(2, "Failed to eject CD-ROM drive");
    11701132        }
    11711133    }
    1172     paranoid_free(command);
    1173     paranoid_free(mountpoint);
    1174     paranoid_free(tmp);
    1175     paranoid_free(fname);
     1134    mr_free(fname);
    11761135    return (retval);
    11771136}
     
    11911150
    11921151    /*@ buffers ******************************************************** */
    1193     char tmp[MAX_STR_LEN];
    1194     char changed_files_fname[MAX_STR_LEN];
     1152    char *tmp = NULL;
     1153    char *changed_files_fname = NULL;
    11951154
    11961155    /*@ long *********************************************************** */
     
    12061165    retval += verify_biggiefiles_from_stream();
    12071166/* find the final blocks */
    1208     paranoid_system("sync");
     1167    sync();
    12091168    sleep(2);
    12101169    closein_tape();
    12111170/* close tape; exit */
    12121171//  fclose(g_tape_stream); <-- not needed; is handled by closein_tape()
    1213     sprintf(tmp, "rm -f %s/biggies.changed %s/changed.files 2> /dev/null", bkpinfo->tmpdir, bkpinfo->tmpdir);
     1172    mr_asprintf(tmp, "rm -f %s/biggies.changed %s/changed.files 2> /dev/null", bkpinfo->tmpdir, bkpinfo->tmpdir);
    12141173    paranoid_system(tmp);
    1215     sprintf(changed_files_fname, "%s/changed.files", bkpinfo->tmpdir);
    1216     sprintf(tmp,
    1217             "grep -E '^%s:.*$' %s | cut -d'\"' -f2 | sort -u | awk '{print \"/\"$0;};' | tr -s '/' '/' | grep -v \"(total of\" | grep -v \"incheckentry.*xwait\" | grep -vE '^/afio:.*$' | grep -vE '^dev/.*$'  > %s",
    1218             (bkpinfo->use_star) ? "star" : "afio", MONDO_LOGFILE,
    1219             changed_files_fname);
     1174    mr_free(tmp);
     1175
     1176    mr_asprintf(changed_files_fname, "%s/changed.files", bkpinfo->tmpdir);
     1177    mr_asprintf(tmp, "grep -E '^%s:.*$' %s | cut -d'\"' -f2 | sort -u | awk '{print \"/\"$0;};' | tr -s '/' '/' | grep -v \"(total of\" | grep -v \"incheckentry.*xwait\" | grep -vE '^/afio:.*$' | grep -vE '^dev/.*$'  > %s", (bkpinfo->use_star) ? "star" : "afio", MONDO_LOGFILE, changed_files_fname);
    12201178    log_msg(2, "Running command to derive list of changed files");
    12211179    log_msg(2, tmp);
    12221180    if (system(tmp)) {
    1223         if (does_file_exist(changed_files_fname)
    1224             && length_of_file(changed_files_fname) > 2) {
    1225             log_to_screen
    1226                 ("Warning - unable to check logfile to derive list of changed files");
     1181        if (does_file_exist(changed_files_fname) && length_of_file(changed_files_fname) > 2) {
     1182            log_to_screen("Warning - unable to check logfile to derive list of changed files");
    12271183        } else {
    1228             log_to_screen
    1229                 ("No differences found. Therefore, no 'changed.files' text file.");
    1230         }
    1231     }
    1232     sprintf(tmp, "cat %s/biggies.changed >> %s", bkpinfo->tmpdir, changed_files_fname);
     1184            log_to_screen("No differences found. Therefore, no 'changed.files' text file.");
     1185        }
     1186    }
     1187    mr_free(tmp);
     1188
     1189    mr_asprintf(tmp, "cat %s/biggies.changed >> %s", bkpinfo->tmpdir, changed_files_fname);
    12331190    paranoid_system(tmp);
     1191    mr_free(tmp);
    12341192
    12351193    diffs = count_lines_in_file(changed_files_fname);
    12361194    if (diffs > 0) {
    1237         sprintf(tmp, "cp -f %s %s/changed.files", changed_files_fname,
    1238                 MONDO_CACHE);
     1195        mr_asprintf(tmp, "cp -f %s %s/changed.files", changed_files_fname, MONDO_CACHE);
    12391196        run_program_and_log_output(tmp, FALSE);
    1240         sprintf(tmp,
    1241                 "%ld files differed from live filesystem; type less %s or less %s/changed.files to see",
    1242                 diffs, changed_files_fname, MONDO_CACHE);
    1243         log_msg(0, tmp);
     1197        mr_free(tmp);
     1198
     1199        log_msg(0, "%ld files differed from live filesystem; type less %s or less %s/changed.files to see", diffs, changed_files_fname, MONDO_CACHE);
    12441200        log_to_screen("See "MONDO_CACHE"/changed.files for a list of nonmatching files.");
    12451201        log_to_screen("The files probably changed on filesystem, not on backup media.");
    1246         //      retval++;
    1247     }
     1202    }
     1203    mr_free(changed_files_fname);
    12481204    return (retval);
    12491205}
Note: See TracChangeset for help on using the changeset viewer.