Changeset 2276 in MondoRescue for branches/2.2.10/mondo/src/common
- Timestamp:
- Jul 13, 2009, 2:34:36 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.10/mondo/src/common/libmondo-verify.c
r2242 r2276 80 80 { 81 81 /*@ buffer ********************************************************** */ 82 char *command ;83 char *afio_found_changes ;82 char *command = NULL; 83 char *afio_found_changes = NULL; 84 84 85 85 /*@ int ************************************************************* */ … … 89 89 long afio_diffs = 0; 90 90 91 command = malloc(2000);92 afio_found_changes = malloc(500);93 91 assert_string_is_neither_NULL_nor_zerolength(changedfiles_fname); 94 92 assert_string_is_neither_NULL_nor_zerolength(ignorefiles_fname); 95 93 assert_string_is_neither_NULL_nor_zerolength(stderr_fname); 96 94 97 sprintf(afio_found_changes, "%s.afio", ignorefiles_fname);95 mr_asprintf(&afio_found_changes, "%s.afio", ignorefiles_fname); 98 96 paranoid_system("sync"); 99 97 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 */104 105 98 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); 99 mr_asprintf(&command, "grep \"afio: \" %s | sed 's/afio: //' | grep -vE '^/dev/.*$' >> %s", stderr_fname, afio_found_changes); 109 100 log_msg(2, command); 110 101 res = system(command); 102 mr_free(command); 103 111 104 if (res) { 112 105 log_msg(2, "Warning - failed to think"); … … 114 107 115 108 log_msg(1, "Now scanning log file for 'star: ' stuff"); 116 sprintf(command,109 mr_asprintf(&command, 117 110 "grep \"star: \" %s | sed 's/star: //' | grep -vE '^/dev/.*$' >> %s", 118 111 stderr_fname, afio_found_changes); 119 112 log_msg(2, command); 120 113 res = system(command); 114 mr_free(command); 115 121 116 if (res) { 122 117 log_msg(2, "Warning - failed to think"); 123 118 } 124 // exclude_nonexistent_files (afio_found_changes);125 119 afio_diffs = count_lines_in_file(afio_found_changes); 126 sprintf(command,120 mr_asprintf(&command, 127 121 "sort %s %s %s | uniq -c | awk '{ if ($1==\"2\") {print $2;};}' | grep -v \"incheckentry xwait()\" > %s", 128 122 ignorefiles_fname, afio_found_changes, afio_found_changes, 129 123 changedfiles_fname); 124 mr_free(afio_found_changes); 130 125 log_msg(2, command); 131 126 paranoid_system(command); 132 paranoid_free(command); 133 paranoid_free(afio_found_changes); 127 mr_free(command); 134 128 return (afio_diffs); 135 129 } … … 151 145 152 146 /*@ buffers ********************************************************* */ 153 char *tmp ;147 char *tmp = NULL; 154 148 char *mds = NULL; 155 149 … … 162 156 assert_string_is_neither_NULL_nor_zerolength(mountpoint); 163 157 assert(bkpinfo != NULL); 164 malloc_string(tmp);165 158 166 159 for (set_number = 0; … … 179 172 } else { 180 173 retval++; 181 sprintf(tmp, "Warning - missing set(s) between %d and %d\n",174 mr_asprintf(&tmp, "Warning - missing set(s) between %d and %d\n", 182 175 g_last_afioball_number, set_number - 1); 183 176 log_to_screen(tmp); 177 mr_free(tmp); 184 178 } 185 179 } 186 180 mds = media_descriptor_string(bkpinfo->backup_media_type); 187 sprintf(tmp, "Verifying %s #%d's tarballs", mds, g_current_media_number);181 mr_asprintf(&tmp, "Verifying %s #%d's tarballs", mds, g_current_media_number); 188 182 mr_free(mds); 189 183 190 184 open_evalcall_form(tmp); 185 mr_free(tmp); 191 186 192 187 for (total_sets = set_number; … … 208 203 g_last_afioball_number = set_number - 1; 209 204 close_evalcall_form(); 210 paranoid_free(tmp);211 205 return (retval); 212 206 } … … 227 221 228 222 /*@ buffer ********************************************************** */ 229 char *tmp; 230 char *mountpoint; 231 // char ca, cb; 232 char *command; 223 char *tmp = NULL; 224 char *mountpoint = NULL; 225 char *command = NULL; 233 226 char *mds = NULL; 234 227 char *sz_exe; … … 252 245 FILE *fin; 253 246 int retval = 0; 254 // long long outlen; 255 256 malloc_string(tmp); 257 malloc_string(mountpoint); 258 malloc_string(command); 247 259 248 malloc_string(sz_exe); 260 249 if (!bufblkA) { … … 286 275 log_it("before vsbf"); 287 276 mds = media_descriptor_string(bkpinfo->backup_media_type); 288 sprintf(tmp, "Verifying %s#%d's big files", mds, g_current_media_number);277 mr_asprintf(&tmp, "Verifying %s#%d's big files", mds, g_current_media_number); 289 278 mr_free(mds); 290 279 291 280 open_evalcall_form(tmp); 281 mr_free(tmp); 282 292 283 log_it("after vsbf"); 293 sprintf(mountpoint, "%s/archives", mtpt);284 mr_asprintf(&mountpoint, "%s/archives", mtpt); 294 285 if (last_bigfile_num == -1) { 295 286 bigfile_num = 0; … … 302 293 slice_num = last_slice_num + 1; 303 294 } 304 while (does_file_exist 305 (slice_fname 306 (bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix)) 295 while (does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix)) 307 296 || 308 does_file_exist(slice_fname 309 (bigfile_num, slice_num, mountpoint, ""))) { 297 does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, ""))) { 310 298 // handle slices until end of CD 311 299 if (slice_num == 0) { 312 300 log_msg(2, "ISO=%d bigfile=%ld --START--", 313 301 g_current_media_number, bigfile_num); 314 if (! 315 (fin = 316 fopen(slice_fname(bigfile_num, slice_num, mountpoint, ""), 317 "r"))) { 302 if (! (fin = fopen(slice_fname(bigfile_num, slice_num, mountpoint, ""), "r"))) { 318 303 log_msg(2, "Cannot open bigfile's info file"); 319 304 } else { 320 if (fread 321 ((void *) &biggiestruct, 1, sizeof(biggiestruct), 322 fin) < sizeof(biggiestruct)) { 305 if (fread ((void *) &biggiestruct, 1, sizeof(biggiestruct), fin) < sizeof(biggiestruct)) { 323 306 log_msg(2, "Unable to get biggiestruct"); 324 307 } 325 308 paranoid_fclose(fin); 326 309 } 327 sprintf(tmp, "%s/%s", bkpinfo->restore_path, 328 biggiestruct.filename); 310 mr_asprintf(&tmp, "%s/%s", bkpinfo->restore_path, biggiestruct.filename); 329 311 log_msg(2, "Opening biggiefile #%ld - '%s'", bigfile_num, tmp); 330 if (!(forig = fopen(tmp, "r"))) { 312 forig = fopen(tmp, "r"); 313 mr_free(tmp); 314 315 if (!forig) { 331 316 log_msg(2, "Failed to open bigfile. Darn."); 332 317 log_to_screen("%s/%s not found on live filesystem", … … 338 323 bkpinfo->tmpdir); 339 324 system(tmp); 340 paranoid_free(tmp);325 mr_free(tmp); 341 326 342 327 bigfile_num++; … … 357 342 g_current_media_number, bigfile_num, slice_num); 358 343 if (!does_file_exist(slice_fname(bigfile_num, slice_num, mountpoint, ""))) { 359 sprintf(command, "%s -dc %s 2>> %s",344 mr_asprintf(&command, "%s -dc %s 2>> %s", 360 345 sz_exe, 361 346 slice_fname(bigfile_num, slice_num, mountpoint, bkpinfo->zip_suffix), 362 347 MONDO_LOGFILE); 363 348 } else { 364 sprintf(command, "cat %s 2>> %s", 365 slice_fname(bigfile_num, slice_num, mountpoint, ""), MONDO_LOGFILE); 349 mr_asprintf(&command, "cat %s 2>> %s", slice_fname(bigfile_num, slice_num, mountpoint, ""), MONDO_LOGFILE); 366 350 } 367 if ((pin = popen(command, "r"))) { 351 pin = popen(command, "r"); 352 mr_free(command); 353 if (pin) { 368 354 res = 0; 369 355 while (!feof(pin)) { … … 404 390 } 405 391 } 392 mr_free(mountpoint); 406 393 last_bigfile_num = bigfile_num; 407 394 last_slice_num = slice_num - 1; … … 416 403 paranoid_free(bufblkB); 417 404 } 418 paranoid_free(tmp);419 paranoid_free(command);420 405 paranoid_free(sz_exe); 421 paranoid_free(mountpoint);422 406 return (0); 423 407 } … … 442 426 { 443 427 /*@ buffers ********************************************************* */ 444 char *command ;445 char *outlog ;428 char *command = NULL; 429 char *outlog = NULL; 446 430 char *tmp; 447 431 // char *p; … … 455 439 456 440 457 command = malloc(2000);458 malloc_string(outlog);459 441 malloc_string(tmp); 460 442 assert(bkpinfo != NULL); … … 462 444 463 445 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 */ 446 mr_asprintf(&outlog, "%s/afio.log", bkpinfo->tmpdir); 447 /* if programmer forgot to say which compression thingy to use then find out */ 467 448 if (strstr(tarball_fname, ".lzo") 468 449 && strcmp(bkpinfo->zip_suffix, "lzo")) { … … 493 474 bkpinfo->use_star = TRUE; 494 475 if (strstr(tarball_fname, ".bz2")) 495 sprintf(command,476 mr_asprintf(&command, 496 477 "star -diff diffopts=mode,size,data file=%s %s >> %s 2>> %s", 497 478 tarball_fname, … … 500 481 } else { 501 482 bkpinfo->use_star = FALSE; 502 sprintf(command, "afio -r -P %s -Z %s >> %s 2>> %s",483 mr_asprintf(&command, "afio -r -P %s -Z %s >> %s 2>> %s", 503 484 bkpinfo->zip_exe, tarball_fname, outlog, outlog); 504 485 } 505 486 log_msg(6, "command=%s", command); 506 487 paranoid_system(command); 488 mr_free(command); 489 507 490 if (length_of_file(outlog) < 10) { 508 sprintf(command, "cat %s >> %s", outlog, MONDO_LOGFILE);491 mr_asprintf(&command, "cat %s >> %s", outlog, MONDO_LOGFILE); 509 492 } else { 510 sprintf(command, "cut -d: -f%d %s | sort -u",493 mr_asprintf(&command, "cut -d: -f%d %s | sort -u", 511 494 (bkpinfo->use_star) ? 1 : 2, outlog); 512 495 pin = popen(command, "r"); … … 544 527 } 545 528 } 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); 529 mr_free(command); 530 mr_free(outlog); 552 531 paranoid_free(tmp); 553 532 return (0); … … 604 583 605 584 /*@ buffers ********************************************************** */ 606 char *tmp ;607 char *tarball_fname ;585 char *tmp = NULL; 586 char *tarball_fname = NULL; 608 587 609 588 /*@ pointers ********************************************************* */ 610 589 char *p; 611 590 612 malloc_string(tmp);613 malloc_string(tarball_fname);614 591 assert(bkpinfo != NULL); 615 592 assert_string_is_neither_NULL_nor_zerolength(orig_fname); … … 621 598 p++; 622 599 } 623 sprintf(tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);600 mr_asprintf(&tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir); 624 601 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); */ 602 mr_free(tmp); 603 604 mr_asprintf(&tarball_fname, "%s/tmpfs/temporary-%s", bkpinfo->tmpdir, p); 629 605 read_file_from_stream_to_file(tarball_fname, size); 630 606 res = verify_a_tarball(tarball_fname); 631 607 if (res) { 632 sprintf(tmp, 633 "Afioball '%s' no longer matches your live filesystem", p); 634 log_msg(0, tmp); 608 log_msg(0, "Afioball '%s' no longer matches your live filesystem", p); 635 609 retval++; 636 610 } 637 611 unlink(tarball_fname); 638 paranoid_free(tmp); 639 paranoid_free(tarball_fname); 612 mr_free(tarball_fname); 640 613 return (retval); 641 614 } … … 660 633 661 634 /*@ char ************************************************************ */ 662 char *test_file ;635 char *test_file = NULL; 663 636 char *biggie_cksum; 664 637 char *orig_cksum; 665 char *tmp ;638 char *tmp = NULL; 666 639 char *slice_fnam; 667 640 … … 672 645 long long slice_siz; 673 646 674 malloc_string(test_file);675 647 malloc_string(biggie_cksum); 676 648 malloc_string(orig_cksum); 677 malloc_string(tmp);678 649 malloc_string(slice_fnam); 679 650 assert(bkpinfo != NULL); … … 686 657 p++; 687 658 } 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); */ 659 mr_asprintf(&test_file, "%s/temporary-%s", bkpinfo->tmpdir, p); 693 660 for (res = 694 661 read_header_block_from_stream(&slice_siz, slice_fnam, &ctrl_chr); … … 716 683 strcpy(orig_cksum, calc_checksum_of_file(biggie_fname)); 717 684 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); 685 log_msg(2, "orig cksum=%s; curr cksum=%s", biggie_cksum, orig_cksum); 686 mr_asprintf(&tmp, "%s has changed on live filesystem", biggie_fname); 723 687 log_to_screen(tmp); 724 sprintf(tmp, "echo \"%s\" >> %s/biggies.changed", 725 biggie_fname, bkpinfo->tmpdir); 688 mr_free(tmp); 689 690 mr_asprintf(&tmp, "echo \"%s\" >> %s/biggies.changed", biggie_fname, bkpinfo->tmpdir); 726 691 system(tmp); 727 } 728 } 729 paranoid_free(test_file); 692 mr_free(tmp); 693 } 694 } 695 mr_free(test_file); 730 696 paranoid_free(biggie_cksum); 731 697 paranoid_free(orig_cksum); 732 paranoid_free(tmp);733 698 paranoid_free(slice_fnam); 734 699 return (retval); … … 754 719 755 720 /*@ buffers ***************************************************** */ 756 char *tmp ;721 char *tmp = NULL; 757 722 char *fname; 758 char *curr_xattr_list_fname ;759 char *curr_acl_list_fname ;723 char *curr_xattr_list_fname = NULL; 724 char *curr_acl_list_fname = NULL; 760 725 761 726 /*@ long long *************************************************** */ … … 763 728 764 729 assert(bkpinfo != NULL); 765 malloc_string(tmp);766 730 malloc_string(fname); 767 malloc_string(curr_xattr_list_fname);768 malloc_string(curr_acl_list_fname);769 731 770 732 if (g_getfattr) { 771 sprintf(curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ, 772 bkpinfo->tmpdir); 733 mr_asprintf(&curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ, bkpinfo->tmpdir); 773 734 } 774 735 if (g_getfacl) { 775 sprintf(curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ, 776 bkpinfo->tmpdir); 736 mr_asprintf(&curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ, bkpinfo->tmpdir); 777 737 } 778 738 log_to_screen("Verifying regular archives on tape"); … … 796 756 wrong_marker(BLK_START_AFIOBALLS, ctrl_chr); 797 757 } 758 if (g_getfattr) { 759 mr_free(curr_xattr_list_fname); 760 } 761 if (g_getfacl) { 762 mr_free(curr_acl_list_fname); 763 } 798 764 799 765 for (res = read_header_block_from_stream(&size, fname, &ctrl_chr); … … 801 767 res = read_header_block_from_stream(&size, fname, &ctrl_chr)) { 802 768 if (g_getfattr) { 803 sprintf(curr_xattr_list_fname, XATTR_LIST_FNAME_RAW_SZ, 804 bkpinfo->tmpdir, current_afioball_number); 769 mr_asprintf(&curr_xattr_list_fname, XATTR_LIST_FNAME_RAW_SZ, bkpinfo->tmpdir, current_afioball_number); 805 770 } 806 771 if (g_getfacl) { 807 sprintf(curr_acl_list_fname, ACL_LIST_FNAME_RAW_SZ, 808 bkpinfo->tmpdir, current_afioball_number); 772 mr_asprintf(&curr_acl_list_fname, ACL_LIST_FNAME_RAW_SZ, bkpinfo->tmpdir, current_afioball_number); 809 773 } 810 774 if (ctrl_chr == BLK_START_EXTENDED_ATTRIBUTES) { … … 815 779 curr_acl_list_fname); 816 780 } 781 if (g_getfattr) { 782 mr_free(curr_xattr_list_fname); 783 } 784 if (g_getfacl) { 785 mr_free(curr_acl_list_fname); 786 } 817 787 if (ctrl_chr != BLK_START_AN_AFIO_OR_SLICE) { 818 788 wrong_marker(BLK_START_AN_AFIO_OR_SLICE, ctrl_chr); 819 789 } 820 sprintf(tmp, "Verifying fileset #%ld", current_afioball_number); 821 /*log_it(tmp); */ 790 mr_asprintf(&tmp, "Verifying fileset #%ld", current_afioball_number); 822 791 update_progress_form(tmp); 792 mr_free(tmp); 793 823 794 res = verify_an_afioball_from_stream(fname, size); 824 795 if (res) { 825 sprintf(tmp, "Afioball %ld differs from live filesystem",796 mr_asprintf(&tmp, "Afioball %ld differs from live filesystem", 826 797 current_afioball_number); 827 798 log_to_screen(tmp); 799 mr_free(tmp); 828 800 } 829 801 retval += res; … … 837 809 log_msg(1, "All done with afioballs"); 838 810 close_progress_form(); 839 paranoid_free(tmp);840 811 paranoid_free(fname); 841 paranoid_free(curr_xattr_list_fname);842 paranoid_free(curr_acl_list_fname);843 812 return (retval); 844 813 } … … 865 834 866 835 /*@ buffers ******************************************************** */ 867 char * tmp;868 char * orig_fname, *logical_fname;869 char *comment ;870 char *curr_xattr_list_fname ;871 char *curr_acl_list_fname ;836 char *orig_fname; 837 char *logical_fname = NULL; 838 char *comment = NULL; 839 char *curr_xattr_list_fname = NULL; 840 char *curr_acl_list_fname = NULL; 872 841 /*@ pointers ******************************************************* */ 873 842 char *p; … … 877 846 878 847 assert(bkpinfo != NULL); 879 malloc_string(tmp);880 848 malloc_string(orig_fname); 881 malloc_string(logical_fname);882 malloc_string(comment);883 malloc_string(curr_xattr_list_fname);884 malloc_string(curr_acl_list_fname);885 849 886 850 if (g_getfattr) { 887 sprintf(curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ, 888 bkpinfo->tmpdir); 851 mr_asprintf(&curr_xattr_list_fname, XATTR_BIGGLST_FNAME_RAW_SZ, bkpinfo->tmpdir); 889 852 } 890 853 if (g_getfacl) { 891 sprintf(curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ, 892 bkpinfo->tmpdir); 893 } 894 sprintf(comment, "Verifying all bigfiles."); 854 mr_asprintf(&curr_acl_list_fname, ACL_BIGGLST_FNAME_RAW_SZ, bkpinfo->tmpdir); 855 } 856 mr_asprintf(&comment, "Verifying all bigfiles."); 895 857 log_to_screen(comment); 896 sprintf(tmp, "%s/biggielist.txt", bkpinfo->tmpdir);897 // noof_biggiefiles = count_lines_in_file (tmp); // pointless898 858 res = read_header_block_from_stream(&size, orig_fname, &ctrl_chr); 899 859 if (ctrl_chr != BLK_START_BIGGIEFILES) { … … 906 866 } 907 867 } 868 if (g_getfattr) { 869 mr_free(curr_xattr_list_fname); 870 } 871 if (g_getfacl) { 872 mr_free(curr_acl_list_fname); 873 } 874 908 875 if (ctrl_chr != BLK_START_BIGGIEFILES) { 909 876 wrong_marker(BLK_START_BIGGIEFILES, ctrl_chr); … … 914 881 "Please wait. This may take some time.", "", 915 882 noof_biggiefiles); 883 mr_free(comment); 884 916 885 for (res = read_header_block_from_stream(&size, orig_fname, &ctrl_chr); 917 886 ctrl_chr != BLK_STOP_BIGGIEFILES; … … 928 897 p++; 929 898 } 930 sprintf(comment, "Verifying bigfile #%ld (%ld K)",899 mr_asprintf(&comment, "Verifying bigfile #%ld (%ld K)", 931 900 current_biggiefile_number, (long) size >> 10); 932 901 update_progress_form(comment); 933 sprintf(logical_fname, "%s/%s", bkpinfo->restore_path, orig_fname); 934 res = 935 verify_a_biggiefile_from_stream(logical_fname, size); 902 mr_free(comment); 903 904 mr_asprintf(&logical_fname, "%s/%s", bkpinfo->restore_path, orig_fname); 905 res = verify_a_biggiefile_from_stream(logical_fname, size); 906 mr_free(logical_fname); 907 936 908 retval += res; 937 909 current_biggiefile_number++; … … 940 912 close_progress_form(); 941 913 paranoid_free(orig_fname); 942 paranoid_free(logical_fname);943 paranoid_free(curr_xattr_list_fname);944 paranoid_free(curr_acl_list_fname);945 paranoid_free(comment);946 paranoid_free(tmp);947 914 return (retval); 948 915 } … … 1069 1036 1070 1037 /*@ buffers ******************************************************** */ 1071 char *mountpoint ;1072 char *command ;1073 char *tmp ;1074 char *fname ;1038 char *mountpoint = NULL; 1039 char *command = NULL; 1040 char *tmp = NULL; 1041 char *fname = NULL; 1075 1042 #ifdef __FreeBSD__ 1076 1043 char mdd[32]; … … 1082 1049 #endif 1083 1050 1084 command = malloc(2000);1085 malloc_string(mountpoint);1086 malloc_string(tmp);1087 malloc_string(fname);1088 1089 1051 assert(bkpinfo != NULL); 1090 1052 1091 sprintf(mountpoint, "%s/cdrom", bkpinfo->tmpdir); 1092 sprintf(fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, 1093 bkpinfo->prefix, g_current_media_number); 1053 mr_asprintf(&mountpoint, "%s/cdrom", bkpinfo->tmpdir); 1054 mr_asprintf(&fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, g_current_media_number); 1094 1055 1095 1056 mkdir(mountpoint, 1777); 1096 1057 sync(); 1097 1058 if (!does_file_exist(fname)) { 1098 sprintf(tmp, 1099 "%s not found; assuming you backed up to CD; verifying CD...", 1100 fname); 1101 log_msg(2, tmp); 1059 log_msg(2, "%s not found; assuming you backed up to CD; verifying CD...", fname); 1102 1060 if (bkpinfo->manual_cd_tray) { 1103 1061 popup_and_OK("Please push CD tray closed."); … … 1105 1063 if (find_and_mount_actual_cd(mountpoint)) { 1106 1064 log_to_screen("failed to mount actual CD"); 1065 mr_free(mountpoint); 1066 mr_free(fname); 1107 1067 return (1); 1108 1068 } 1109 1069 } else { 1110 sprintf(tmp, "%s found; verifying ISO...", fname);1070 log_msg(2, "%s found; verifying ISO...", fname); 1111 1071 #ifdef __FreeBSD__ 1112 1072 ret = 0; … … 1114 1074 mddevice = make_vn(fname); 1115 1075 if (ret) { 1116 sprintf(tmp, "make_vn of %s failed; unable to verify ISO\n", 1117 fname); 1076 mr_asprintf(&tmp, "make_vn of %s failed; unable to verify ISO\n", fname); 1118 1077 log_to_screen(tmp); 1078 mr_free(tmp); 1079 mr_free(mountpoint); 1080 mr_free(fname); 1119 1081 return (1); 1120 1082 } 1121 sprintf(command, "mount_cd9660 %s %s", mddevice, mountpoint);1083 mr_asprintf(&command, "mount_cd9660 %s %s", mddevice, mountpoint); 1122 1084 #else 1123 sprintf(command, "mount -o loop,ro -t iso9660 %s %s", fname, 1124 mountpoint); 1085 mr_asprintf(&command, "mount -o loop,ro -t iso9660 %s %s", fname, mountpoint); 1125 1086 #endif 1126 1087 if (run_program_and_log_output(command, FALSE)) { 1127 sprintf(tmp, "%s failed; unable to mount ISO image\n", 1128 command); 1088 mr_asprintf(&tmp, "%s failed; unable to mount ISO image\n", command); 1129 1089 log_to_screen(tmp); 1090 mr_free(tmp); 1091 mr_free(mountpoint); 1092 mr_free(command); 1093 mr_free(fname); 1130 1094 return (1); 1131 1095 } 1096 mr_free(command); 1132 1097 } 1133 1098 log_msg(2, "OK, I've mounted the ISO/CD\n"); 1134 sprintf(tmp, "%s/archives/NOT-THE-LAST", mountpoint);1099 mr_asprintf(&tmp, "%s/archives/NOT-THE-LAST", mountpoint); 1135 1100 if (!does_file_exist(tmp)) { 1136 1101 log_msg … … 1144 1109 */ 1145 1110 } 1111 mr_free(tmp); 1112 1146 1113 verify_afioballs_on_CD(mountpoint); 1147 1114 log_it("before verify_all_slices"); … … 1150 1117 #ifdef __FreeBSD__ 1151 1118 ret = 0; 1152 sprintf(command, "umount %s", mountpoint);1119 mr_asprintf(&command, "umount %s", mountpoint); 1153 1120 ret += system(command); 1154 1121 ret += kick_vn(mddevice); 1155 1122 if (ret) 1156 1123 #else 1157 sprintf(command, "umount %s", mountpoint);1124 mr_asprintf(&command, "umount %s", mountpoint); 1158 1125 if (system(command)) 1159 1126 #endif 1160 1127 { 1161 sprintf(tmp, "%s failed; unable to unmount ISO image\n", command);1128 mr_asprintf(&tmp, "%s failed; unable to unmount ISO image\n", command); 1162 1129 log_to_screen(tmp); 1130 mr_free(tmp); 1131 1163 1132 retval++; 1164 1133 } else { 1165 1134 log_msg(2, "OK, I've unmounted the ISO file\n"); 1166 1135 } 1136 mr_free(mountpoint); 1137 mr_free(command); 1138 1167 1139 if (!does_file_exist(fname)) { 1168 sprintf(command, "umount %s", bkpinfo->media_device);1140 mr_asprintf(&command, "umount %s", bkpinfo->media_device); 1169 1141 run_program_and_log_output(command, 2); 1142 mr_free(command); 1143 1170 1144 if (!bkpinfo->please_dont_eject 1171 1145 && eject_device(bkpinfo->media_device)) { … … 1173 1147 } 1174 1148 } 1175 paranoid_free(command); 1176 paranoid_free(mountpoint); 1177 paranoid_free(tmp); 1178 paranoid_free(fname); 1149 mr_free(fname); 1179 1150 return (retval); 1180 1151 } … … 1194 1165 1195 1166 /*@ buffers ******************************************************** */ 1196 char tmp[MAX_STR_LEN];1197 char changed_files_fname[MAX_STR_LEN];1167 char *tmp = NULL; 1168 char *changed_files_fname = NULL; 1198 1169 1199 1170 /*@ long *********************************************************** */ … … 1214 1185 /* close tape; exit */ 1215 1186 // fclose(g_tape_stream); <-- not needed; is handled by closein_tape() 1216 sprintf(tmp, "rm -f %s/biggies.changed %s/changed.files 2> /dev/null", bkpinfo->tmpdir, bkpinfo->tmpdir);1187 mr_asprintf(&tmp, "rm -f %s/biggies.changed %s/changed.files 2> /dev/null", bkpinfo->tmpdir, bkpinfo->tmpdir); 1217 1188 paranoid_system(tmp); 1218 sprintf(changed_files_fname, "%s/changed.files", bkpinfo->tmpdir); 1219 sprintf(tmp, 1220 "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", 1221 (bkpinfo->use_star) ? "star" : "afio", MONDO_LOGFILE, 1222 changed_files_fname); 1189 mr_free(tmp); 1190 1191 mr_asprintf(&changed_files_fname, "%s/changed.files", bkpinfo->tmpdir); 1192 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); 1223 1193 log_msg(2, "Running command to derive list of changed files"); 1224 1194 log_msg(2, tmp); 1225 1195 if (system(tmp)) { 1226 if (does_file_exist(changed_files_fname) 1227 && length_of_file(changed_files_fname) > 2) { 1228 log_to_screen 1229 ("Warning - unable to check logfile to derive list of changed files"); 1196 if (does_file_exist(changed_files_fname) && length_of_file(changed_files_fname) > 2) { 1197 log_to_screen("Warning - unable to check logfile to derive list of changed files"); 1230 1198 } else { 1231 log_to_screen 1232 ("No differences found. Therefore, no 'changed.files' text file."); 1233 } 1234 } 1235 sprintf(tmp, "cat %s/biggies.changed >> %s", bkpinfo->tmpdir, changed_files_fname); 1199 log_to_screen("No differences found. Therefore, no 'changed.files' text file."); 1200 } 1201 } 1202 mr_free(tmp); 1203 1204 mr_asprintf(&tmp, "cat %s/biggies.changed >> %s", bkpinfo->tmpdir, changed_files_fname); 1236 1205 paranoid_system(tmp); 1206 mr_free(tmp); 1237 1207 1238 1208 diffs = count_lines_in_file(changed_files_fname); 1239 1209 if (diffs > 0) { 1240 sprintf(tmp, "cp -f %s %s/changed.files", changed_files_fname,1210 mr_asprintf(&tmp, "cp -f %s %s/changed.files", changed_files_fname, 1241 1211 MONDO_CACHE); 1242 1212 run_program_and_log_output(tmp, FALSE); 1243 sprintf(tmp, 1244 "%ld files differed from live filesystem; type less %s or less %s/changed.files to see", 1245 diffs, changed_files_fname, MONDO_CACHE); 1246 log_msg(0, tmp); 1213 mr_free(tmp); 1214 1215 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); 1247 1216 log_to_screen("See "MONDO_CACHE"/changed.files for a list of nonmatching files."); 1248 1217 log_to_screen("The files probably changed on filesystem, not on backup media."); 1249 // retval++;1250 }1218 } 1219 mr_free(changed_files_fname); 1251 1220 return (retval); 1252 1221 }
Note:
See TracChangeset
for help on using the changeset viewer.