Changeset 1179 in MondoRescue
- Timestamp:
- Feb 18, 2007, 4:12:25 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/stable/mondo/src/common/libmondo-verify.c
r1123 r1179 1 /* 2 * $Id$ 3 */ 4 1 /* $Id$ */ 5 2 /** 6 3 * @file 7 4 * Functions for verifying backups (booted from hard drive, not CD). 8 5 */ 6 7 #include <unistd.h> 9 8 10 9 #include "my-stuff.h" 11 10 #include "mr_mem.h" 12 11 #include "mr_msg.h" 12 13 13 #include "mondostructures.h" 14 14 #include "libmondo-verify.h" 15 #include " libmondo-gui-EXT.h"15 #include "newt-specific-EXT.h" 16 16 #include "libmondo-files-EXT.h" 17 17 #include "libmondo-fork-EXT.h" … … 51 51 { 52 52 /*@ buffer ********************************************************** */ 53 char *command ;54 char *afio_found_changes ;53 char *command = NULL; 54 char *afio_found_changes = NULL; 55 55 56 56 /*@ int ************************************************************* */ … … 60 60 long afio_diffs = 0; 61 61 62 command = mr_malloc(2000);63 afio_found_changes = mr_malloc(500);64 62 assert_string_is_neither_NULL_nor_zerolength(changedfiles_fname); 65 63 assert_string_is_neither_NULL_nor_zerolength(ignorefiles_fname); 66 64 assert_string_is_neither_NULL_nor_zerolength(stderr_fname); 67 65 68 sprintf(afio_found_changes, "%s.afio", ignorefiles_fname); 69 paranoid_system("sync"); 70 71 /* sprintf (command, 72 "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", 73 stderr_fname, afio_found_changes); 74 */ 66 mr_asprintf(&afio_found_changes, "%s.afio", ignorefiles_fname); 67 sync(); 68 75 69 76 70 mr_msg(1, "Now scanning log file for 'afio: ' stuff"); 77 sprintf(command,78 "grep \"afio: \" %s | sed 's/afio: //' | grep -vE '^/dev/.*$' >> %s",79 stderr_fname, afio_found_changes);71 mr_asprintf(&command, 72 "grep \"afio: \" %s | sed 's/afio: //' | grep -vE '^/dev/.*$' >> %s", 73 stderr_fname, afio_found_changes); 80 74 mr_msg(2, command); 81 75 res = system(command); 76 mr_free(command); 82 77 if (res) { 83 78 mr_msg(2, "Warning - failed to think"); … … 85 80 86 81 mr_msg(1, "Now scanning log file for 'star: ' stuff"); 87 sprintf(command,88 "grep \"star: \" %s | sed 's/star: //' | grep -vE '^/dev/.*$' >> %s",89 stderr_fname, afio_found_changes);82 mr_asprintf(&command, 83 "grep \"star: \" %s | sed 's/star: //' | grep -vE '^/dev/.*$' >> %s", 84 stderr_fname, afio_found_changes); 90 85 mr_msg(2, command); 91 86 res = system(command); 87 mr_free(command); 92 88 if (res) { 93 89 mr_msg(2, "Warning - failed to think"); … … 95 91 // exclude_nonexistent_files (afio_found_changes); 96 92 afio_diffs = count_lines_in_file(afio_found_changes); 97 sprintf(command,98 "sort %s %s %s | uniq -c | awk '{ if ($1==\"2\") {print $2;};}' | grep -v \"incheckentry xwait()\" > %s",99 ignorefiles_fname, afio_found_changes, afio_found_changes,100 changedfiles_fname);93 mr_asprintf(&command, 94 "sort %s %s %s | uniq -c | awk '{ if ($1==\"2\") {print $2;};}' | grep -v \"incheckentry xwait()\" > %s", 95 ignorefiles_fname, afio_found_changes, afio_found_changes, 96 changedfiles_fname); 101 97 mr_msg(2, command); 102 98 paranoid_system(command); … … 122 118 123 119 /*@ buffers ********************************************************* */ 124 char *tmp ;120 char *tmp = NULL; 125 121 126 122 /*@ int ************************************************************* */ … … 132 128 assert_string_is_neither_NULL_nor_zerolength(mountpoint); 133 129 assert(bkpinfo != NULL); 134 malloc_string(tmp);135 130 136 131 for (set_number = 0; … … 150 145 } else { 151 146 retval++; 152 sprintf(tmp, "Warning - missing set(s) between %d and %d\n",153 g_last_afioball_number, set_number - 1);147 mr_asprintf(&tmp, "Warning - missing set(s) between %d and %d\n", 148 g_last_afioball_number, set_number - 1); 154 149 log_to_screen(tmp); 155 } 156 } 157 sprintf(tmp, "Verifying %s #%d's tarballs", 158 media_descriptor_string(bkpinfo->backup_media_type), 159 g_current_media_number); 150 mr_free(tmp); 151 } 152 } 153 mr_asprintf(&tmp, "Verifying %s #%d's tarballs", 154 bkpinfo->backup_media_string, 155 g_current_media_number); 160 156 open_evalcall_form(tmp); 157 mr_free(tmp); 161 158 162 159 for (total_sets = set_number; … … 180 177 g_last_afioball_number = set_number - 1; 181 178 close_evalcall_form(); 182 mr_free(tmp);183 179 return (retval); 184 180 } … … 190 186 * - @c restore_path 191 187 * - @c use_lzo 192 * - @c zip_exe193 188 * - @c zip_suffix 194 189 * @param mtpt The mountpoint the CD/DVD/ISO is mounted on. … … 199 194 200 195 /*@ buffer ********************************************************** */ 201 char *tmp ;202 char * mountpoint;203 // char ca, cb;204 char *command ;205 char *sz_exe ;196 char *tmp = NULL; 197 char *tmp2 = NULL; 198 char *mountpoint = NULL; 199 char *command = NULL; 200 char *sz_exe = NULL; 206 201 static char *bufblkA = NULL; 207 202 static char *bufblkB = NULL; 208 203 const long maxbufsize = 65536L; 209 long currsizA = 0; 210 long currsizB = 0; 211 long j; 212 213 /*@ long ************************************************************ */ 214 long bigfile_num = 0; 204 long currsizA = 0L; 205 long currsizB = 0L; 206 long j = 0L; 207 long bigfile_num = 0L; 215 208 long slice_num = -1; 216 int res ;209 int res = 0; 217 210 218 211 static FILE *forig = NULL; … … 220 213 static long last_bigfile_num = -1; 221 214 static long last_slice_num = -1; 222 FILE *pin ;223 FILE *fin ;215 FILE *pin = NULL; 216 FILE *fin = NULL; 224 217 int retval = 0; 225 // long long outlen; 226 227 malloc_string(tmp); 228 malloc_string(mountpoint); 229 malloc_string(command); 230 malloc_string(sz_exe); 218 231 219 if (!bufblkA) { 232 220 bufblkA = mr_malloc(maxbufsize); … … 241 229 if (bkpinfo->compression_level > 0) { 242 230 if (bkpinfo->use_lzo) { 243 strcpy(sz_exe, "lzop");231 mr_asprintf(&sz_exe, "lzop"); 244 232 } else if (bkpinfo->use_gzip) { 245 strcpy(sz_exe, "gzip");233 mr_asprintf(&sz_exe, "gzip"); 246 234 } else { 247 strcpy(sz_exe, "bzip2");235 mr_asprintf(&sz_exe, "bzip2"); 248 236 } 249 237 } else { 250 sz_exe[0] = '\0';238 mr_asprintf(&sz_exe, ""); 251 239 } 252 240 253 241 iamhere("before vsbf"); 254 sprintf(tmp, "Verifying %s#%d's big files",255 media_descriptor_string(bkpinfo->backup_media_type),256 g_current_media_number);242 mr_asprintf(&tmp, "Verifying %s#%d's big files", 243 bkpinfo->backup_media_string, 244 g_current_media_number); 257 245 open_evalcall_form(tmp); 246 mr_free(tmp); 247 258 248 iamhere("after vsbf"); 259 sprintf(mountpoint, "%s/archives", mtpt);249 mr_asprintf(&mountpoint, "%s/archives", mtpt); 260 250 if (last_bigfile_num == -1) { 261 251 bigfile_num = 0; … … 291 281 paranoid_fclose(fin); 292 282 } 293 sprintf(tmp, "%s/%s", bkpinfo->restore_path,294 biggiestruct.filename);295 mr_msg(2, "Opening biggiefile #%ld - '%s'", bigfile_num, tmp );296 if (!(forig = fopen(tmp , "r"))) {283 mr_asprintf(&tmp2, "%s/%s", bkpinfo->restore_path, 284 biggiestruct.filename); 285 mr_msg(2, "Opening biggiefile #%ld - '%s'", bigfile_num, tmp2); 286 if (!(forig = fopen(tmp2, "r"))) { 297 287 mr_msg(2, "Failed to open bigfile. Darn."); 298 288 retval++; 299 289 } 290 mr_free(tmp2); 291 300 292 slice_num++; 301 293 } else if (does_file_exist … … 310 302 g_current_media_number, bigfile_num, slice_num); 311 303 if (bkpinfo->compression_level > 0) { 312 sprintf(command, "%s -dc %s 2>> %s", 313 sz_exe, 304 mr_asprintf(&command, "%s -dc %s 2>> %s", sz_exe, 314 305 slice_fname(bigfile_num, slice_num, mountpoint, 315 306 bkpinfo->zip_suffix), 316 307 MONDO_LOGFILE); 317 308 } else { 318 sprintf(command, "cat %s",309 mr_asprintf(&command, "cat %s", 319 310 slice_fname(bigfile_num, slice_num, mountpoint, 320 311 bkpinfo->zip_suffix)); … … 356 347 } 357 348 } 349 mr_free(command); 358 350 slice_num++; 359 351 } 360 352 } 353 mr_free(tmp); 354 mr_free(mountpoint); 355 mr_free(sz_exe); 356 361 357 last_bigfile_num = bigfile_num; 362 358 last_slice_num = slice_num - 1; … … 371 367 mr_free(bufblkB); 372 368 } 373 mr_free(tmp);374 mr_free(command);375 mr_free(sz_exe);376 mr_free(mountpoint);377 369 return (0); 378 370 } 379 380 381 382 383 371 384 372 … … 397 385 { 398 386 /*@ buffers ********************************************************* */ 399 char *command; 400 char *outlog; 401 char *tmp; 402 // char *p; 387 char *command = NULL; 388 char *outlog = NULL; 389 char *tmp = NULL; 403 390 404 391 /*@ pointers ******************************************************* */ 405 FILE *pin; 392 FILE *pin = NULL; 393 394 size_t n = 0; 406 395 407 396 /*@ long *********************************************************** */ 408 397 long diffs = 0; 409 /* getcwd(old_pwd,MAX_STR_LEN-1); */ 410 411 412 command = mr_malloc(2000); 413 malloc_string(outlog); 414 malloc_string(tmp); 398 415 399 assert(bkpinfo != NULL); 416 400 assert_string_is_neither_NULL_nor_zerolength(tarball_fname); 417 401 418 402 log_it("Verifying fileset '%s'", tarball_fname); 419 /* chdir("/"); */ 420 sprintf(outlog, "%s/afio.log", bkpinfo->tmpdir); 421 /* if programmer forgot to say which compression thingy to use then find out */ 403 404 mr_asprintf(&outlog, "%s/afio.log", bkpinfo->tmpdir); 405 406 /* if programmer forgot to say which compression thingy to use then find out */ 422 407 if (strstr(tarball_fname, ".lzo") 423 408 && strcmp(bkpinfo->zip_suffix, "lzo")) { … … 447 432 if (strstr(tarball_fname, ".star")) { 448 433 bkpinfo->use_star = TRUE; 449 if (strstr(tarball_fname, ".bz2")) 450 sprintf(command, 451 "star -diff diffopts=mode,size,data file=%s %s >> %s 2>> %s", 452 tarball_fname, 453 (strstr(tarball_fname, ".bz2")) ? "-bz" : " ", outlog, 454 outlog); 434 if (strstr(tarball_fname, ".bz2")) { 435 mr_asprintf(&command, 436 "star -diff diffopts=mode,size,data file=%s %s >> %s 2>> %s", 437 tarball_fname, 438 (strstr(tarball_fname, ".bz2")) ? "-bz" : " ", outlog, 439 outlog); 440 } else { 441 mr_asprintf(&command,""); 442 } 455 443 } else { 456 444 bkpinfo->use_star = FALSE; 457 sprintf(command, "afio -r -P %s -Z %s >> %s 2>> %s",458 bkpinfo->zip_exe, tarball_fname, outlog, outlog);445 mr_asprintf(&command, "afio -r -P %s -Z %s >> %s 2>> %s", 446 bkpinfo->zip_exe, tarball_fname, outlog, outlog); 459 447 } 460 448 mr_msg(6, "command=%s", command); 461 449 paranoid_system(command); 450 mr_free(command); 451 462 452 if (length_of_file(outlog) < 10) { 463 sprintf(command, "cat %s >> %s", outlog, MONDO_LOGFILE); 453 /* BERLIOS: This seems useless !! */ 454 mr_asprintf(&command, "cat %s >> %s", outlog, MONDO_LOGFILE); 464 455 } else { 465 sprintf(command, "cut -d:-f%d %s | sort -u",466 (bkpinfo->use_star) ? 1 : 2, outlog);456 mr_asprintf(&command, "cut -d':' -f%d %s | sort -u", 457 (bkpinfo->use_star) ? 1 : 2, outlog); 467 458 pin = popen(command, "r"); 468 459 if (pin) { 469 for ( fgets(tmp, MAX_STR_LEN, pin); !feof(pin);470 fgets(tmp, MAX_STR_LEN, pin)) {460 for (mr_getline(&tmp, &n, pin); !feof(pin); 461 mr_getline(&tmp, &n, pin)) { 471 462 if (bkpinfo->use_star) { 472 463 if (!strstr(tmp, "diffopts=")) { … … 495 486 } 496 487 paranoid_pclose(pin); 488 mr_free(tmp); 497 489 } else { 498 490 log_OS_error(command); 499 491 } 500 492 } 501 /* chdir(old_pwd); */ 502 // sprintf (tmp, "uniq -u %s >> %s", "/tmp/mondo-verify.err", MONDO_LOGFILE); 503 // paranoid_system (tmp); 504 // unlink ("/tmp/mondo-verify.err"); 493 mr_free(outlog); 505 494 mr_free(command); 506 mr_free(outlog); 507 mr_free(tmp); 495 508 496 return (0); 509 497 } 510 511 512 513 514 498 515 499 … … 561 545 562 546 /*@ buffers ********************************************************** */ 563 char *tmp ;564 char *tarball_fname ;547 char *tmp = NULL; 548 char *tarball_fname = NULL; 565 549 566 550 /*@ pointers ********************************************************* */ 567 char *p; 568 569 malloc_string(tmp); 570 malloc_string(tarball_fname); 551 char *p = NULL; 552 571 553 assert(bkpinfo != NULL); 572 554 assert_string_is_neither_NULL_nor_zerolength(orig_fname); … … 578 560 p++; 579 561 } 580 sprintf(tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);562 mr_asprintf(&tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir); 581 563 paranoid_system(tmp); 582 sprintf(tarball_fname, "%s/tmpfs/temporary-%s", bkpinfo->tmpdir, p); 583 sprintf(tmp, "Temporarily copying file from tape to '%s'", 584 tarball_fname); 585 /* log_it(tmp); */ 564 mr_free(tmp); 565 566 mr_asprintf(&tarball_fname, "%s/tmpfs/temporary-%s", bkpinfo->tmpdir, p); 586 567 read_file_from_stream_to_file(bkpinfo, tarball_fname, size); 587 568 res = verify_a_tarball(bkpinfo, tarball_fname); 588 569 if (res) { 589 sprintf(tmp, 590 "Afioball '%s' no longer matches your live filesystem", p); 591 mr_msg(0, tmp); 570 mr_msg(0, "Afioball '%s' no longer matches your live filesystem", p); 592 571 retval++; 593 572 } 594 573 unlink(tarball_fname); 595 mr_free(tmp);596 574 mr_free(tarball_fname); 597 575 return (retval); … … 618 596 619 597 /*@ char ************************************************************ */ 620 char *test_file ;621 char *biggie_cksum ;622 char *orig_cksum ;623 char *tmp ;624 char *slice_fnam ;598 char *test_file = NULL; 599 char *biggie_cksum = NULL; 600 char *orig_cksum = NULL; 601 char *tmp = NULL; 602 char *slice_fnam = NULL; 625 603 626 604 /*@ pointers ******************************************************** */ … … 630 608 long long slice_siz; 631 609 632 malloc_string(test_file);633 malloc_string(biggie_cksum);634 malloc_string(orig_cksum);635 malloc_string(tmp);636 610 malloc_string(slice_fnam); 637 611 assert(bkpinfo != NULL); … … 644 618 p++; 645 619 } 646 sprintf(test_file, "%s/temporary-%s", bkpinfo->tmpdir, p); 647 sprintf(tmp, 648 "Temporarily copying biggiefile %s's slices from tape to '%s'", 649 p, test_file); 650 /* log_it(tmp); */ 620 mr_asprintf(&test_file, "%s/temporary-%s", bkpinfo->tmpdir, p); 651 621 for (res = 652 622 read_header_block_from_stream(&slice_siz, slice_fnam, &ctrl_chr); … … 670 640 retval += res; 671 641 } 672 strcpy(biggie_cksum, slice_fnam); 642 mr_free(test_file); 643 644 mr_asprintf(&biggie_cksum, slice_fnam); 645 mr_free(slice_fnam); 646 673 647 if (biggie_cksum[0] != '\0') { 674 strcpy(orig_cksum, calc_checksum_of_file(biggie_fname));648 mr_asprintf(&orig_cksum, calc_checksum_of_file(biggie_fname)); 675 649 if (strcmp(biggie_cksum, orig_cksum)) { 676 sprintf(tmp, "orig cksum=%s; curr cksum=%s", biggie_cksum,677 orig_cksum);650 mr_asprintf(&tmp, "orig cksum=%s; curr cksum=%s", biggie_cksum, 651 orig_cksum); 678 652 mr_msg(2, tmp); 679 sprintf(tmp, "%s has changed on live filesystem", 680 biggie_fname); 653 mr_free(tmp); 654 655 mr_asprintf(&tmp, _("%s has changed on live filesystem"), 656 biggie_fname); 681 657 log_to_screen(tmp); 682 sprintf(tmp, "echo \"%s\" >> /tmp/biggies.changed", 683 biggie_fname); 658 mr_free(tmp); 659 660 mr_asprintf(&tmp, "echo \"%s\" >> /tmp/biggies.changed", 661 biggie_fname); 684 662 system(tmp); 685 } 686 } 687 mr_free(test_file); 663 mr_free(tmp); 664 } 665 mr_free(orig_cksum); 666 } 688 667 mr_free(biggie_cksum); 689 mr_free(orig_cksum);690 mr_free(tmp);691 mr_free(slice_fnam);692 668 return (retval); 693 669 } … … 712 688 713 689 /*@ buffers ***************************************************** */ 714 char *tmp ;715 char *fname ;716 char *curr_xattr_list_fname ;717 char *curr_acl_list_fname ;690 char *tmp = NULL; 691 char *fname = NULL; 692 char *curr_xattr_list_fname = NULL; 693 char *curr_acl_list_fname = NULL; 718 694 719 695 /*@ long long *************************************************** */ … … 721 697 722 698 assert(bkpinfo != NULL); 723 malloc_string(tmp);724 699 malloc_string(fname); 725 malloc_string(curr_xattr_list_fname);726 malloc_string(curr_acl_list_fname);727 700 728 701 if (g_getfattr) { 729 sprintf(curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ,702 mr_asprintf(&curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ, 730 703 bkpinfo->tmpdir); 731 704 } 732 705 if (g_getfacl) { 733 sprintf(curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ,706 mr_asprintf(&curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ, 734 707 bkpinfo->tmpdir); 735 708 } 736 log_to_screen( "Verifying regular archives on tape");709 log_to_screen(_("Verifying regular archives on tape")); 737 710 total_afioballs = get_last_filelist_number(bkpinfo) + 1; 738 open_progress_form( "Verifying filesystem",739 "I am verifying archives against your live filesystem now.",740 "Please wait. This may take a couple of hours.", "",711 open_progress_form(_("Verifying filesystem"), 712 _("I am verifying archives against your live filesystem now."), 713 _("Please wait. This may take a couple of hours."), "", 741 714 total_afioballs); 742 715 res = read_header_block_from_stream(&size, fname, &ctrl_chr); … … 754 727 wrong_marker(BLK_START_AFIOBALLS, ctrl_chr); 755 728 } 729 mr_free(curr_xattr_list_fname); 730 mr_free(curr_acl_list_fname); 756 731 757 732 for (res = read_header_block_from_stream(&size, fname, &ctrl_chr); … … 759 734 res = read_header_block_from_stream(&size, fname, &ctrl_chr)) { 760 735 if (g_getfattr) { 761 sprintf(curr_xattr_list_fname, XATTR_LIST_FNAME_RAW_SZ,736 mr_asprintf(&curr_xattr_list_fname, XATTR_LIST_FNAME_RAW_SZ, 762 737 bkpinfo->tmpdir, current_afioball_number); 763 738 } 764 739 if (g_getfacl) { 765 sprintf(curr_acl_list_fname, ACL_LIST_FNAME_RAW_SZ,740 mr_asprintf(&curr_acl_list_fname, ACL_LIST_FNAME_RAW_SZ, 766 741 bkpinfo->tmpdir, current_afioball_number); 767 742 } … … 773 748 curr_acl_list_fname); 774 749 } 750 mr_free(curr_xattr_list_fname); 751 mr_free(curr_acl_list_fname); 752 775 753 if (ctrl_chr != BLK_START_AN_AFIO_OR_SLICE) { 776 754 wrong_marker(BLK_START_AN_AFIO_OR_SLICE, ctrl_chr); 777 755 } 778 sprintf(tmp, "Verifying fileset #%ld", current_afioball_number); 779 /*log_it(tmp); */ 756 mr_asprintf(&tmp, "Verifying fileset #%ld", current_afioball_number); 780 757 update_progress_form(tmp); 758 mr_free(tmp); 759 781 760 res = verify_an_afioball_from_stream(bkpinfo, fname, size); 782 761 if (res) { 783 sprintf(tmp, "Afioball %ld differs from live filesystem",784 current_afioball_number);762 mr_asprintf(&tmp, _("Afioball %ld differs from live filesystem"), 763 current_afioball_number); 785 764 log_to_screen(tmp); 765 mr_free(tmp); 786 766 } 787 767 retval += res; … … 795 775 mr_msg(1, "All done with afioballs"); 796 776 close_progress_form(); 797 mr_free(tmp);798 777 mr_free(fname); 799 mr_free(curr_xattr_list_fname);800 mr_free(curr_acl_list_fname);801 778 return (retval); 802 779 } … … 823 800 824 801 /*@ buffers ******************************************************** */ 825 char * tmp;826 char * orig_fname, *logical_fname;827 char *comment ;828 char *curr_xattr_list_fname ;829 char *curr_acl_list_fname ;802 char *orig_fname = NULL; 803 char *logical_fname = NULL; 804 char *comment = NULL; 805 char *curr_xattr_list_fname = NULL; 806 char *curr_acl_list_fname = NULL; 830 807 /*@ pointers ******************************************************* */ 831 char *p ;808 char *p = NULL; 832 809 833 810 /*@ long long size ************************************************* */ … … 835 812 836 813 assert(bkpinfo != NULL); 837 malloc_string(tmp);838 814 malloc_string(orig_fname); 839 malloc_string(logical_fname);840 malloc_string(comment);841 malloc_string(curr_xattr_list_fname);842 malloc_string(curr_acl_list_fname);843 815 844 816 if (g_getfattr) { 845 sprintf(curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ,817 mr_asprintf(&curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ, 846 818 bkpinfo->tmpdir); 847 819 } 848 820 if (g_getfacl) { 849 sprintf(curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ,821 mr_asprintf(&curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ, 850 822 bkpinfo->tmpdir); 851 823 } 852 sprintf(comment, "Verifying all bigfiles.");824 mr_asprintf(&comment, "Verifying all bigfiles."); 853 825 log_to_screen(comment); 854 sprintf(tmp, "%s/biggielist.txt", bkpinfo->tmpdir);855 // noof_biggiefiles = count_lines_in_file (tmp); // pointless856 826 res = read_header_block_from_stream(&size, orig_fname, &ctrl_chr); 857 827 if (ctrl_chr != BLK_START_BIGGIEFILES) { … … 864 834 } 865 835 } 836 mr_free(curr_xattr_list_fname); 837 mr_free(curr_acl_list_fname); 838 866 839 if (ctrl_chr != BLK_START_BIGGIEFILES) { 867 840 wrong_marker(BLK_START_BIGGIEFILES, ctrl_chr); … … 869 842 noof_biggiefiles = (long) size; 870 843 mr_msg(1, "noof_biggiefiles = %ld", noof_biggiefiles); 871 open_progress_form( "Verifying big files", comment,872 "Please wait. This may take some time.", "",844 open_progress_form(_("Verifying big files"), comment, 845 _("Please wait. This may take some time."), "", 873 846 noof_biggiefiles); 847 mr_free(comment); 848 874 849 for (res = read_header_block_from_stream(&size, orig_fname, &ctrl_chr); 875 850 ctrl_chr != BLK_STOP_BIGGIEFILES; … … 886 861 p++; 887 862 } 888 sprintf(comment, "Verifying bigfile #%ld (%ld K)",889 current_biggiefile_number, (long) size >> 10);863 mr_asprintf(&comment, _("Verifying bigfile #%ld (%ld K)"), 864 current_biggiefile_number, (long) size >> 10); 890 865 update_progress_form(comment); 891 sprintf(logical_fname, "%s/%s", bkpinfo->restore_path, orig_fname); 866 mr_free(comment); 867 868 mr_asprintf(&logical_fname, "%s/%s", bkpinfo->restore_path, 869 orig_fname); 892 870 res = 893 871 verify_a_biggiefile_from_stream(bkpinfo, logical_fname, size); 872 mr_free(logical_fname); 894 873 retval += res; 895 874 current_biggiefile_number++; … … 898 877 close_progress_form(); 899 878 mr_free(orig_fname); 900 mr_free(logical_fname);901 mr_free(curr_xattr_list_fname);902 mr_free(curr_acl_list_fname);903 mr_free(comment);904 mr_free(tmp);905 879 return (retval); 906 880 } … … 930 904 931 905 /*@ buffers ******************************************************** */ 932 char *mountpoint ;933 char *command ;934 char *tmp ;935 char *fname ;906 char *mountpoint = NULL; 907 char *command = NULL; 908 char *tmp = NULL; 909 char *fname = NULL; 936 910 #ifdef __FreeBSD__ 937 911 char mdd[32]; … … 943 917 #endif 944 918 945 command = mr_malloc(2000);946 malloc_string(mountpoint);947 malloc_string(tmp);948 malloc_string(fname);949 950 919 assert(bkpinfo != NULL); 951 920 952 sprintf(mountpoint, "%s/cdrom", bkpinfo->tmpdir);953 sprintf(fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir,954 bkpinfo->prefix, g_current_media_number);921 mr_asprintf(&mountpoint, "%s/cdrom", bkpinfo->tmpdir); 922 mr_asprintf(&fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, 923 bkpinfo->prefix, g_current_media_number); 955 924 956 925 mkdir(mountpoint, 1777); 957 926 sync(); 958 927 if (!does_file_exist(fname)) { 959 sprintf(tmp,960 "%s not found; assuming you backed up to CD; verifying CD...",961 fname);928 mr_asprintf(&tmp, 929 "%s not found; assuming you backed up to CD; verifying CD...", 930 fname); 962 931 mr_msg(2, tmp); 932 mr_free(tmp); 933 963 934 if (bkpinfo->manual_cd_tray) { 964 popup_and_OK( "Please push CD tray closed.");935 popup_and_OK(_("Please push CD tray closed.")); 965 936 } 966 937 if (find_and_mount_actual_cd(bkpinfo, mountpoint)) { 967 log_to_screen( "failed to mount actual CD");938 log_to_screen(_("failed to mount actual CD")); 968 939 return (1); 969 940 } 970 941 } else { 971 sprintf(tmp, "%s found; verifying ISO...", fname); 942 mr_asprintf(&tmp, "%s found; verifying ISO...", fname); 943 log_to_screen(tmp); 944 mr_free(tmp); 972 945 #ifdef __FreeBSD__ 973 946 ret = 0; … … 975 948 mddevice = make_vn(fname); 976 949 if (ret) { 977 sprintf(tmp, "make_vn of %s failed; unable to verify ISO\n",978 fname);950 mr_asprintf(&tmp, _("make_vn of %s failed; unable to verify ISO\n"), 951 fname); 979 952 log_to_screen(tmp); 953 mr_free(tmp); 980 954 return (1); 981 955 } 982 sprintf(command, "mount_cd9660 %s %s", mddevice, mountpoint);956 mr_asprintf(&command, "mount_cd9660 %s %s", mddevice, mountpoint); 983 957 #else 984 sprintf(command, "mount -o loop,ro -t iso9660 %s %s", fname,985 mountpoint);958 mr_asprintf(&command, "mount -o loop,ro -t iso9660 %s %s", fname, 959 mountpoint); 986 960 #endif 987 961 if (run_program_and_log_output(command, FALSE)) { 988 sprintf(tmp, "%s failed; unable to mount ISO image\n",989 command);962 mr_asprintf(&tmp, _("%s failed; unable to mount ISO image\n"), 963 command); 990 964 log_to_screen(tmp); 965 mr_free(tmp); 966 mr_free(command); 991 967 return (1); 992 968 } 969 mr_free(command); 993 970 } 994 971 mr_msg(2, "OK, I've mounted the ISO/CD\n"); 995 sprintf(tmp, "%s/archives/NOT-THE-LAST", mountpoint);972 mr_asprintf(&tmp, "%s/archives/NOT-THE-LAST", mountpoint); 996 973 if (!does_file_exist(tmp)) { 997 974 mr_msg … … 1005 982 */ 1006 983 } 984 mr_free(tmp); 985 1007 986 verify_afioballs_on_CD(bkpinfo, mountpoint); 1008 987 iamhere("before verify_all_slices"); 1009 988 verify_all_slices_on_CD(bkpinfo, mountpoint); 1010 989 990 mr_asprintf(&command, "umount %s", mountpoint); 1011 991 #ifdef __FreeBSD__ 1012 992 ret = 0; 1013 sprintf(command, "umount %s", mountpoint);1014 993 ret += system(command); 1015 994 ret += kick_vn(mddevice); 1016 995 if (ret) 1017 996 #else 1018 sprintf(command, "umount %s", mountpoint);1019 997 if (system(command)) 1020 998 #endif 1021 999 { 1022 sprintf(tmp, "%s failed; unable to unmount ISO image\n", command); 1000 mr_asprintf(&tmp, "%s failed; unable to unmount ISO image\n", 1001 command); 1023 1002 log_to_screen(tmp); 1003 mr_free(tmp); 1024 1004 retval++; 1025 1005 } else { 1026 1006 mr_msg(2, "OK, I've unmounted the ISO file\n"); 1027 1007 } 1008 mr_free(command); 1009 mr_free(mountpoint); 1010 1028 1011 if (!does_file_exist(fname)) { 1029 sprintf(command, "umount %s", bkpinfo->media_device);1012 mr_asprintf(&command, "umount %s", bkpinfo->media_device); 1030 1013 run_program_and_log_output(command, 2); 1014 mr_free(command); 1015 1031 1016 if (!bkpinfo->please_dont_eject 1032 1017 && eject_device(bkpinfo->media_device)) { … … 1034 1019 } 1035 1020 } 1036 mr_free(command);1037 mr_free(mountpoint);1038 mr_free(tmp);1039 1021 mr_free(fname); 1040 1022 return (retval); 1041 1023 } 1024 1042 1025 1043 1026 /** … … 1055 1038 1056 1039 /*@ buffers ******************************************************** */ 1057 char tmp[MAX_STR_LEN];1058 char changed_files_fname[MAX_STR_LEN];1040 char *tmp = NULL; 1041 char *changed_files_fname = NULL; 1059 1042 1060 1043 /*@ long *********************************************************** */ … … 1064 1047 1065 1048 mr_msg(3, "verify_tape_backups --- starting"); 1066 log_to_screen( "Verifying backups");1049 log_to_screen(_("Verifying backups")); 1067 1050 openin_tape(bkpinfo); 1068 /* verify archives themselves */ 1051 1052 /* verify archives themselves */ 1069 1053 retval += verify_afioballs_from_stream(bkpinfo); 1070 1054 retval += verify_biggiefiles_from_stream(bkpinfo); 1071 /* find the final blocks */ 1072 paranoid_system("sync"); 1055 1056 /* find the final blocks */ 1057 sync(); 1073 1058 sleep(2); 1074 1059 closein_tape(bkpinfo); 1075 /* close tape; exit */ 1076 // fclose(g_tape_stream); <-- not needed; is handled by closein_tape() 1060 1061 /* close tape; exit */ 1077 1062 paranoid_system 1078 1063 ("rm -f /tmp/biggies.changed /tmp/changed.files.[0-9]* 2> /dev/null"); 1079 sprintf(changed_files_fname, "/tmp/changed.files.%d",1080 (int) (random() % 32767));1081 sprintf(tmp,1082 "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",1083 (bkpinfo->use_star) ? "star" : "afio", MONDO_LOGFILE,1084 changed_files_fname);1064 mr_asprintf(&changed_files_fname, "/tmp/changed.files.%d", 1065 (int) (random() % 32767)); 1066 mr_asprintf(&tmp, 1067 "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", 1068 (bkpinfo->use_star) ? "star" : "afio", MONDO_LOGFILE, 1069 changed_files_fname); 1085 1070 mr_msg(2, "Running command to derive list of changed files"); 1086 1071 mr_msg(2, tmp); … … 1089 1074 && length_of_file(changed_files_fname) > 2) { 1090 1075 log_to_screen 1091 ( "Warning - unable to check logfile to derive list of changed files");1076 (_("Warning - unable to check logfile to derive list of changed files")); 1092 1077 } else { 1093 1078 log_to_screen 1094 ("No differences found. Therefore, no 'changed.files' text file."); 1095 } 1096 } 1097 sprintf(tmp, "cat /tmp/biggies.changed >> %s", changed_files_fname); 1079 (_("No differences found. Therefore, no 'changed.files' text file.")); 1080 } 1081 } 1082 mr_free(tmp); 1083 1084 mr_asprintf(&tmp, "cat /tmp/biggies.changed >> %s", changed_files_fname); 1098 1085 paranoid_system(tmp); 1086 mr_free(tmp); 1099 1087 1100 1088 diffs = count_lines_in_file(changed_files_fname); 1101 1089 if (diffs > 0) { 1102 sprintf(tmp, "cp -f %s %s", changed_files_fname,1103 "/tmp/changed.files");1090 mr_asprintf(&tmp, "cp -f %s %s", changed_files_fname, 1091 "/tmp/changed.files"); 1104 1092 run_program_and_log_output(tmp, FALSE); 1105 sprintf(tmp, 1106 "%ld files differed from live filesystem; type less %s or less %s to see", 1107 diffs, changed_files_fname, "/tmp/changed.files"); 1093 mr_free(tmp); 1094 1095 mr_asprintf(&tmp, 1096 "%ld files differed from live filesystem; type less %s or less %s to see", 1097 diffs, changed_files_fname, "/tmp/changed.files"); 1108 1098 mr_msg(0, tmp); 1099 mr_free(tmp); 1100 1109 1101 log_to_screen 1110 ( "See /tmp/changed.files for a list of nonmatching files.");1102 (_("See /tmp/changed.files for a list of nonmatching files.")); 1111 1103 log_to_screen 1112 ( "The files probably changed on filesystem, not on backup media.");1104 (_("The files probably changed on filesystem, not on backup media.")); 1113 1105 // retval++; 1114 1106 } 1107 mr_free(changed_files_fname); 1115 1108 return (retval); 1116 1109 } 1117 1118 1110 1119 1111
Note:
See TracChangeset
for help on using the changeset viewer.