/* wrapper function for read_cfg_var() -- convert the value to integer * returns -1 on error, 0 on success */ int read_cfg_var_int(struct cfg_read_handle *read_handle, int *val) { unsigned int type; void *v1=NULL, *v2=NULL; if ((type = read_cfg_var(read_handle, &v1)) == 0) return -1; if (convert_val(type, v1, CFG_INPUT_INT, &v2)) return -1; *val = (int)(long)(v2); return 0; }
/* wrapper function for read_cfg_var() -- convert the value to str * returns -1 on error, 0 on success */ int read_cfg_var_str(struct cfg_read_handle *read_handle, str *val) { unsigned int type; void *v1=NULL, *v2=NULL; if ((type = read_cfg_var(read_handle, &v1)) == 0) return -1; if (convert_val(type, v1, CFG_INPUT_STR, &v2)) return -1; *val = *(str *)(v2); return 0; }
/** * Compare all afioballs in this backup. * @param bkpinfo The backup media structure. Passed to other functions. * @return 0 for success, nonzero for failure. */ int compare_all_tarballs(struct s_bkpinfo *bkpinfo) { int retval = 0; int res; int current_tarball_number = 0; /** needs malloc **********/ char *tarball_fname, *progress_str, *tmp; long max_val; malloc_string(tarball_fname); malloc_string(progress_str); malloc_string(tmp); assert(bkpinfo != NULL); mvaddstr_and_log_it(g_currentY, 0, "Comparing archives"); read_cfg_var(g_mondo_cfg_file, "last-filelist-number", tmp); max_val = atol(tmp); sprintf(progress_str, "Comparing with %s #%d ", media_descriptor_string(bkpinfo->backup_media_type), g_current_media_number); open_progress_form("Comparing files", "Comparing tarballs against filesystem.", "Please wait. This may take some time.", progress_str, max_val); log_to_screen(progress_str); for (;;) { insist_on_this_cd_number(bkpinfo, g_current_media_number); update_progress_form(progress_str); sprintf(tarball_fname, MNT_CDROM "/archives/%d.afio.bz2", current_tarball_number); if (!does_file_exist(tarball_fname)) { sprintf(tarball_fname, MNT_CDROM "/archives/%d.afio.lzo", current_tarball_number); } if (!does_file_exist(tarball_fname)) { sprintf(tarball_fname, MNT_CDROM "/archives/%d.afio.", current_tarball_number); } if (!does_file_exist(tarball_fname)) { sprintf(tarball_fname, MNT_CDROM "/archives/%d.star.bz2", current_tarball_number); } if (!does_file_exist(tarball_fname)) { sprintf(tarball_fname, MNT_CDROM "/archives/%d.star.", current_tarball_number); } if (!does_file_exist(tarball_fname)) { if (!does_file_exist(MNT_CDROM "/archives/NOT-THE-LAST") || system("find " MNT_CDROM "/archives/slice* > /dev/null 2> /dev/null") == 0) { log_msg(2, "OK, I think I'm done with tarballs..."); break; } log_msg(2, "OK, I think it's time for another CD..."); g_current_media_number++; sprintf(progress_str, "Comparing with %s #%d ", media_descriptor_string(bkpinfo->backup_media_type), g_current_media_number); log_to_screen(progress_str); } else { res = compare_a_tarball(tarball_fname, current_tarball_number); g_current_progress++; current_tarball_number++; } } close_progress_form(); if (retval) { mvaddstr_and_log_it(g_currentY++, 74, "Errors."); } else { mvaddstr_and_log_it(g_currentY++, 74, "Done."); } paranoid_free(tarball_fname); paranoid_free(progress_str); paranoid_free(tmp); return (retval); }