- Timestamp:
- Aug 11, 2008, 3:05:15 AM (17 years ago)
- Location:
- trunk/mondo/src
- Files:
-
- 8 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/mondo/src/mondoarchive/mondo-cli.c
r1188 r2009 140 140 { 141 141 int j; 142 char *tmp; 143 char *p; 144 char *q; 145 char *comment; 142 char *tmp = NULL; 143 char *p = NULL; 144 char *q = NULL; 146 145 147 146 assert(bkpinfo != NULL); … … 159 158 mr_free(tmp); 160 159 161 mr_ asprintf(&comment, "media_size[%d] = %ld", j,160 mr_msg(3, "media_size[%d] = %ld", j, 162 161 bkpinfo->media_size[j]); 163 mr_msg(3, comment);164 mr_free(comment);165 162 } 166 163 for (; j <= MAX_NOOF_MEDIA; j++) { … … 201 198 char *tmp = NULL; 202 199 char *tmp1 = NULL; 200 char *tmp2 = NULL; 203 201 char *psz = NULL; 204 202 char *p = NULL; … … 398 396 mr_free(tmp); // allocation from find_tape_device_and_size 399 397 400 mr_asprintf(&tmp ,398 mr_asprintf(&tmp2, 401 399 _("You didn't specify a tape streamer device. I'm assuming %s"), 402 400 flag_val['d']); 403 log_to_screen(tmp );404 mr_free(tmp );401 log_to_screen(tmp2); 402 mr_free(tmp2); 405 403 percent = 0; 406 404 } … … 481 479 mr_allocstr(bkpinfo->nfs_remote_dir,"/"); 482 480 } 483 mr_asprintf(&tmp , "mount | grep -E '^%s .*$' | cut -d' ' -f3",481 mr_asprintf(&tmp2, "mount | grep -E '^%s .*$' | cut -d' ' -f3", 484 482 bkpinfo->nfs_mount); 485 483 mr_free(bkpinfo->isodir); 486 bkpinfo->isodir = call_program_and_get_last_line_of_output(tmp );487 mr_free(tmp );484 bkpinfo->isodir = call_program_and_get_last_line_of_output(tmp2); 485 mr_free(tmp2); 488 486 489 487 if (strlen(bkpinfo->isodir) < 3) { … … 642 640 if (!does_file_exist(bkpinfo->kernel_path)) { 643 641 retval++; 644 mr_asprintf(&tmp ,642 mr_asprintf(&tmp2, 645 643 _("You specified kernel '%s', which does not exist\n"), 646 644 bkpinfo->kernel_path); 647 log_to_screen(tmp );648 mr_free(tmp );645 log_to_screen(tmp2); 646 mr_free(tmp2); 649 647 } 650 648 } else { … … 660 658 if (flag_set['i']) { 661 659 mr_allocstr(bkpinfo->isodir,flag_val['d']); 662 mr_asprintf(&tmp , "ls -l %s", bkpinfo->isodir);663 if (run_program_and_log_output(tmp , FALSE)) {660 mr_asprintf(&tmp2, "ls -l %s", bkpinfo->isodir); 661 if (run_program_and_log_output(tmp2, FALSE)) { 664 662 fatal_error 665 663 ("output folder does not exist - please create it"); 666 664 } 667 mr_free(tmp );665 mr_free(tmp2); 668 666 } else if (flag_set['n']) { 669 667 mr_allocstr(bkpinfo->nfs_remote_dir,flag_val['d']); … … 674 672 675 673 if (flag_set['n']) { 676 mr_asprintf(&tmp , "echo hi > %s/%s/.dummy.txt", bkpinfo->isodir,674 mr_asprintf(&tmp2, "echo hi > %s/%s/.dummy.txt", bkpinfo->isodir, 677 675 bkpinfo->nfs_remote_dir); 678 if (run_program_and_log_output(tmp , FALSE)) {676 if (run_program_and_log_output(tmp2, FALSE)) { 679 677 retval++; 680 mr_free(tmp );681 mr_asprintf(&tmp ,678 mr_free(tmp2); 679 mr_asprintf(&tmp2, 682 680 _("Are you sure directory '%s' exists in remote dir '%s'?\nIf so, do you have rights to write to it?\n"), 683 681 bkpinfo->nfs_remote_dir, bkpinfo->nfs_mount); 684 log_to_screen(tmp );685 } 686 mr_free(tmp );682 log_to_screen(tmp2); 683 } 684 mr_free(tmp2); 687 685 } 688 686 … … 730 728 mr_free(bkpinfo->tmpdir); 731 729 bkpinfo->tmpdir = tmp; 732 mr_asprintf(&tmp , "touch %s/.foo.dat", flag_val['T']);733 if (run_program_and_log_output(tmp , 1)) {730 mr_asprintf(&tmp2, "touch %s/.foo.dat", flag_val['T']); 731 if (run_program_and_log_output(tmp2, 1)) { 734 732 retval++; 735 733 log_to_screen … … 737 735 fatal_error("I cannot write to the tempdir you specified."); 738 736 } 739 mr_free(tmp );740 741 mr_asprintf(&tmp , "ln -sf %s/.foo.dat %s/.bar.dat", flag_val['T'],737 mr_free(tmp2); 738 739 mr_asprintf(&tmp2, "ln -sf %s/.foo.dat %s/.bar.dat", flag_val['T'], 742 740 flag_val['T']); 743 if (run_program_and_log_output(tmp , 1)) {741 if (run_program_and_log_output(tmp2, 1)) { 744 742 retval++; 745 743 log_to_screen … … 747 745 fatal_error("I cannot write to the tempdir you specified."); 748 746 } 749 mr_free(tmp );747 mr_free(tmp2); 750 748 } 751 749 … … 788 786 mr_allocstr(bkpinfo->boot_device,tmp); 789 787 } 788 790 789 if (flag_set['Q']) { 791 if (tmp == NULL) { 792 printf("-f option required when using -Q\n"); 793 finish(-1); 794 } 795 i = which_boot_loader(tmp); 796 mr_msg(3, "boot loader is %c, residing at %s", i, tmp); 797 printf(_("boot loader is %c, residing at %s\n"), i, tmp); 798 mr_free(tmp); 790 if (bkpinfo->boot_device == NULL) { 791 fatal_error("-f option required when using -Q\n"); 792 } 793 i = which_boot_loader(bkpinfo->boot_device); 794 mr_msg(3, "boot loader is %c, residing at %s", i, bkpinfo->boot_device); 795 log_to_screen(_("boot loader is %c, residing at %s\n"), i, tmp); 799 796 finish(0); 800 797 } 801 mr_free(tmp);802 798 803 799 if (flag_set['P']) { … … 880 876 return (retval); 881 877 } 882 883 878 884 879 … … 901 896 /*@ ints ** */ 902 897 int opt = 0; 903 char *tmp ;898 char *tmp = NULL; 904 899 int i = 0; 905 int len ;900 int len = 0; 906 901 907 902 /*@ bools *** */ … … 965 960 966 961 967 968 969 962 /** 970 963 * Print a not-so-helpful help message and exit. 971 964 */ 972 void help_screen( )965 void help_screen(void) 973 966 { 974 967 mr_msg(1, "Type 'man mondo-archive' for more information\n"); … … 983 976 void terminate_daemon(int sig) 984 977 { 985 char *tmp ;986 char *tmp2 ;978 char *tmp = NULL; 979 char *tmp2 = NULL; 987 980 988 981 switch (sig) { -
trunk/mondo/src/mondorestore/Makefile.am
r1084 r2009 1 ## $Id$2 1 ## 3 2 ## $Id$ … … 5 4 ## Process with Automake to generate Makefile.in 6 5 ## 7 AM_CPPFLAGS = -DMONDO_CONF_DIR=\"$(sysconfdir)\" -I${top_builddir}/src/include 6 AM_CPPFLAGS = -DMONDO_CONF_DIR=\"$(sysconfdir)\" -I${top_builddir}/src/include -I${top_builddir}/src/common 8 7 9 8 ## Headers … … 14 13 ## The program 15 14 sbin_PROGRAMS = mondorestore 16 mondorestore_SOURCES = mondo-prep.c mondo -restore.c mondo-rstr-newt.c \15 mondorestore_SOURCES = mondo-prep.c mondorestore.c mondo-rstr-newt.c \ 17 16 mondo-rstr-compare.c mondo-rstr-tools.c 18 17 mondorestore_LDADD = ${top_builddir}/src/common/libmondo.a ${top_builddir}/src/lib/libmr.a @MONDORESTORE_STATIC@ -
trunk/mondo/src/mondorestore/mondo-prep.c
r1106 r2009 10 10 11 11 #include "my-stuff.h" 12 #include " ../common/mondostructures.h"12 #include "mondostructures.h" 13 13 #include "mondoprep.h" 14 #include " ../common/libmondo.h"14 #include "libmondo.h" 15 15 #include "mondo-rstr-tools-EXT.h" 16 16 … … 20 20 #include <unistd.h> 21 21 #include "mr_mem.h" 22 #include "mr_msg.h" 22 23 23 24 … … 52 53 void wipe_MBRs_and_reboot_if_necessary(struct mountlist_itself *mountlist) 53 54 { 54 char *command; 55 int lino; 56 FILE *fout; 57 char *buf; 55 char *command = NULL; 56 int lino = 0; 57 int res = 0; 58 FILE *fout = NULL; 59 char *buf = NULL; 58 60 struct list_of_disks *drivelist = NULL; 59 // If LVMs are present and a zero-and-reboot wasn't recently undertaken 60 // then zero & insist on reboot. 61 62 // If LVMs are present and a zero-and-reboot wasn't recently undertaken 63 // then zero & insist on reboot. 61 64 if (does_file_exist("/tmp/i-want-my-lvm")) // FIXME - cheating :) 62 65 { … … 67 70 "dd if=%s bs=512 count=1 2> /dev/null | grep \"%s\"", 68 71 drivelist->el[lino].device, MONDO_WAS_HERE); 69 if (!run_program_and_log_output(command, 1)) { 72 res = run_program_and_log_output(command, 1); 73 mr_free(command); 74 if (!res) { 70 75 mr_msg(1, "Found MONDO_WAS_HERE marker on drive#%d (%s)", 71 76 lino, drivelist->el[lino].device); 72 mr_free(command);73 77 break; 74 78 } 75 mr_free(command);76 79 } 77 80 78 81 if (lino == drivelist->entries) { 79 // zero & reboot82 // zero & reboot 80 83 log_to_screen 81 84 (_ … … 120 123 int fput_string_one_char_at_a_time(FILE * fout, char *str) 121 124 { 122 int i , j;123 FILE *fq ;125 int i = 0, j = 0; 126 FILE *fq = NULL; 124 127 125 128 if (ferror(fout)) { … … 159 162 bool vacuum_pack) 160 163 { 161 /** char **************************************************/162 164 char *tmp = NULL; 163 165 char *tmp1 = NULL; … … 178 180 int i = 0; 179 181 int lvmversion = 1; 180 long extents ;182 long extents = 0L; 181 183 fpos_t orig_pos; 182 184 size_t n = 0; … … 184 186 185 187 /** pointers **********************************************/ 186 FILE *fin ;188 FILE *fin = NULL; 187 189 188 190 /** end *****************************************************/ … … 257 259 continue; 258 260 } 259 if (res && strstr(command, "create") && vacuum_pack) {260 sleep(2);261 sync();262 sync();263 sync();264 }265 261 if ((p = strstr(incoming, "vgcreate"))) { 266 262 // include next line(s) if they end in /dev (cos we've got a broken i-want-my-lvm) … … 271 267 } else { 272 268 fgetpos(fin, &orig_pos); 273 mr_asprintf(&tmp1, "%s%s", incoming, tmp); 274 mr_free(incoming); 275 incoming = tmp1; 269 mr_strcat(incoming, tmp); 276 270 } 277 271 } … … 287 281 *q = '\0'; 288 282 mr_msg(1, "Deleting old entries at /dev/%s", tmp1); 289 mr_asprintf(& tmp, "rm -Rf /dev/%s", tmp1);283 mr_asprintf(&command, "rm -Rf /dev/%s", tmp1); 290 284 mr_free(tmp1); 291 285 292 run_program_and_log_output( tmp, 1);293 mr_free( tmp);286 run_program_and_log_output(command, 1); 287 mr_free(command); 294 288 295 289 run_program_and_log_output(vgscan_sz, 1); … … 300 294 } 301 295 for (p = incoming + 1; *p == ' '; p++); 302 mr_a llocstr(command,p);296 mr_asprintf(&command,p); 303 297 for (p = command; *p != '\0'; p++); 304 for (; *(p - 1) < 32; p--);298 for (; (*(p - 1) < 32) && (p > command) ; p--); 305 299 *p = '\0'; 306 300 … … 319 313 if (strstr(command, "lvm lvcreate")) 320 314 lvmversion = 2; 321 /* BERLIOS : this tmp may be uninitialized ?322 log_it("%s... so I'll get creative.", tmp);323 */324 315 if (lvmversion == 2) { 325 316 tmp = call_program_and_get_last_line_of_output 326 ("tail -n5 " MONDO_LOGFILE 327 " | grep Insufficient | tail -n1"); 317 ("tail -n5 " MONDO_LOGFILE " | grep Insufficient | tail -n1"); 328 318 } else { 329 319 tmp = call_program_and_get_last_line_of_output 330 ("tail -n5 " MONDO_LOGFILE 331 " | grep lvcreate | tail -n1"); 320 ("tail -n5 " MONDO_LOGFILE " | grep lvcreate | tail -n1"); 332 321 } 333 322 for (p = tmp; *p != '\0' && !isdigit(*p); p++); … … 373 362 mr_msg(0, "%s --> %d", command, res); 374 363 if (!res) { 375 mr_msg(5, "Y AY! This time, it succeeded.");364 mr_msg(5, "Yep! This time, it succeeded."); 376 365 } 377 366 } … … 429 418 int j = 0; 430 419 char *incoming = NULL; 431 char *tmp = NULL;432 420 char *p = NULL; 433 421 size_t n = 0; … … 465 453 mr_getline(&incoming, &n, fin)); 466 454 if (!feof(fin)) { 467 mr_asprintf(&tmp,"Investigating %s",455 log_it("Investigating %s", 468 456 old_mountlist->el[lino].device); 469 log_it(tmp);470 mr_free(tmp);471 472 457 for (mr_getline(&incoming, &n, fin); !feof(fin) 473 458 && !strstr(incoming, "raiddev"); … … 476 461 && !strchr(incoming, '#')) { 477 462 for (p = incoming + strlen(incoming); 478 *(p - 1) <= 32; p--);463 (*(p - 1) <= 32) && (p >= incoming) ; p--); 479 464 *p = '\0'; 480 for (p--; p > incoming && *(p - 1) > 32; p--); 481 mr_asprintf(&tmp, "Extrapolating %s", p); 482 log_it(tmp); 483 mr_free(tmp); 484 465 for (p--; (p >= incoming) && (*(p - 1) > 32); p--); 466 log_it("Extrapolating %s", p); 485 467 for (j = 0; 486 468 j < new_mountlist->entries … … 500 482 new_mountlist->entries++; 501 483 } else { 502 mr_asprintf(&tmp, 503 "Not adding %s to mountlist: it's already there", p); 504 log_it(tmp); 505 mr_free(tmp); 484 log_it("Not adding %s to mountlist: it's already there", p); 506 485 } 507 486 } … … 509 488 } 510 489 mr_free(incoming); 490 511 491 paranoid_fclose(fin); 512 492 } else { … … 534 514 * @return 0 for success, nonzero for failure. 535 515 */ 536 int create_raid_device_via_mdadm(struct raidlist_itself *raidlist, 537 char *device) 516 int create_raid_device_via_mdadm(struct raidlist_itself *raidlist, char *device) 538 517 { 539 518 /** int **************************************************************/ … … 567 546 mr_asprintf(&devices, raidlist->el[i].data_disks.el[0].device); 568 547 for (j = 1; j < raidlist->el[i].data_disks.entries; j++) { 569 mr_asprintf(&strtmp, "%s", devices); 570 mr_free(devices); 571 mr_asprintf(&devices, "%s %s", strtmp, 572 raidlist->el[i].data_disks.el[j].device); 573 mr_free(strtmp); 548 mr_strcat(devices, " %s", raidlist->el[i].data_disks.el[j].device); 574 549 } 575 550 for (j = 0; j < raidlist->el[i].spare_disks.entries; j++) { 576 mr_asprintf(&strtmp, "%s", devices); 577 mr_free(devices); 578 mr_asprintf(&devices, "%s %s", strtmp, 579 raidlist->el[i].spare_disks.el[j].device); 580 mr_free(strtmp); 551 mr_strcat(devices, " %s", raidlist->el[i].spare_disks.el[j].device); 581 552 } 582 553 // translate RAID level … … 597 568 raidlist->el[i].raid_device, level, 598 569 raidlist->el[i].data_disks.entries); 570 mr_free(level); 599 571 if (raidlist->el[i].parity != -1) { 600 asprintf(&strtmp, "%s", program);601 mr_free(program);602 572 switch(raidlist->el[i].parity) { 603 573 case 0: 604 mr_ asprintf(&program, "%s --parity=%s", strtmp, "la");574 mr_strcat(program, " --parity=%s", "la"); 605 575 break; 606 576 case 1: 607 mr_ asprintf(&program, "%s --parity=%s", strtmp, "ra");577 mr_strcat(program, " --parity=%s", "ra"); 608 578 break; 609 579 case 2: 610 mr_ asprintf(&program, "%s --parity=%s", strtmp, "ls");580 mr_strcat(program, " --parity=%s", "ls"); 611 581 break; 612 582 case 3: 613 mr_ asprintf(&program, "%s --parity=%s", strtmp, "rs");583 mr_strcat(program, " --parity=%s", "rs"); 614 584 break; 615 585 default: … … 617 587 break; 618 588 } 619 mr_free(strtmp);620 589 } 621 590 if (raidlist->el[i].chunk_size != -1) { 622 mr_asprintf(&strtmp, "%s", program); 623 mr_free(program); 624 mr_asprintf(&program, "%s --chunk=%d", strtmp, raidlist->el[i].chunk_size); 625 mr_free(strtmp); 591 mr_strcat(program, " --chunk=%d", raidlist->el[i].chunk_size); 626 592 } 627 593 if (raidlist->el[i].spare_disks.entries > 0) { 628 mr_asprintf(&strtmp, "%s", program); 629 mr_free(program); 630 mr_asprintf(&program, "%s --spare-devices=%d", strtmp, 631 raidlist->el[i].spare_disks.entries); 632 mr_free(strtmp); 594 mr_strcat(program, " --spare-devices=%d", raidlist->el[i].spare_disks.entries); 633 595 } 634 mr_asprintf(&strtmp, "%s", program); 635 mr_free(program); 636 mr_asprintf(&program, "%s %s", strtmp, devices); 637 mr_free(strtmp); 596 mr_strcat(program, " %s", devices); 638 597 res = run_program_and_log_output(program, 1); 639 598 // free memory 640 599 mr_free(devices); 641 mr_free(level);642 600 mr_free(program); 643 601 // return to calling instance 644 return res;602 return(res); 645 603 } 646 604 … … 656 614 * @return 0 for success, nonzero for failure. 657 615 */ 658 int format_device(char *device, char *format, 659 struct raidlist_itself *raidlist) 616 int format_device(char *device, char *format, struct raidlist_itself *raidlist) 660 617 { 661 618 /** int **************************************************************/ … … 673 630 char *line = NULL; 674 631 char *status = NULL; 675 FILE *pin ;676 FILE *fin ;632 FILE *pin = NULL; 633 FILE *fin = NULL; 677 634 size_t n = 0; 678 635 size_t n1 = 0; … … 685 642 686 643 if (strstr(format, "raid")) { // do not form RAID disks; do it to /dev/md* instead 687 mr_asprintf(&tmp, "Not formatting %s (it is a RAID disk)", device); 688 log_it(tmp); 689 mr_free(tmp); 644 log_it("Not formatting %s (it is a RAID disk)", device); 690 645 return (0); 691 646 } … … 700 655 "%s has a really small format type ('%s') - this is probably a hexadecimal string, which would suggest the partition is an image --- I shouldn't format it", 701 656 device, format); 702 log_it(tmp);703 mr_free(tmp);704 657 return (0); 705 658 } 706 659 if (is_this_device_mounted(device)) { 707 mr_asprintf(&tmp, _("%s is mounted - cannot format it "), device); 708 log_to_screen(tmp); 709 mr_free(tmp); 660 log_to_screen(_("%s is mounted - cannot format it "), device); 710 661 return (1); 711 662 } … … 734 685 735 686 if (vinum_started_yet) { 736 mr_asprintf(&tmp, 737 _ 738 ("Initializing Vinum device %s (this may take a *long* time)"), 687 log_to_screen(_("Initializing Vinum device %s (this may take a *long* time)"), 739 688 device); 740 log_to_screen(tmp);741 mr_free(tmp);742 689 743 690 /* format raid partition */ … … 785 732 } 786 733 mr_free(line); 734 787 735 fclose(fin); 788 736 unlink("/tmp/plexes"); … … 790 738 } 791 739 #else 792 mr_asprintf(&tmp, _("Initializing RAID device %s"), device); 793 log_to_screen(tmp); 794 mr_free(tmp); 795 796 // Shouldn't be necessary. 740 log_to_screen(_("Initializing RAID device %s"), device); 741 742 // Shouldn't be necessary. 797 743 log_to_screen(_("Stopping %s"), device); 798 744 stop_raid_device(device); 799 745 sync(); 800 746 sleep(1); 801 /* BERLIOS: This code is wrong as program has not been initialized802 if (g_fprep) {803 fprintf(g_fprep, "%s\n", program);804 }805 */806 747 807 748 mr_msg(1, "Making %s", device); 808 749 // use mkraid if it exists, otherwise use mdadm 809 if (run_program_and_log_output("which mkraid", FALSE)) { 810 res = create_raid_device_via_mdadm(raidlist, device); 811 mr_msg(1, "Creating RAID device %s via mdadm returned %d", 812 device, res); 750 if (run_program_and_log_output("which mkraid", FALSE)) { 751 res = create_raid_device_via_mdadm(raidlist, device); 752 mr_msg(1, "Creating RAID device %s via mdadm returned %d", device, res); 813 753 } else { 814 754 mr_asprintf(&program, "mkraid --really-force %s", device); … … 830 770 newtResume(); 831 771 } 832 //#ifndef __FreeBSD__833 //#endif834 772 835 773 if (!strcmp(format, "lvm")) { … … 849 787 mr_free(tmp); 850 788 851 mr_asprintf(&tmp, "Formatting %s as %s", device, format);789 mr_asprintf(&tmp, _("Formatting %s as %s"), device, format); 852 790 update_progress_form(tmp); 853 791 854 792 res = run_program_and_log_output(program, FALSE); 855 793 if (res && strstr(program, "kludge")) { 794 mr_free(tmp); 795 mr_asprintf(&tmp, _("Kludge failed; using regular mkfs.%s to format %s"), format, device); 796 mr_free(program); 856 797 #ifdef __FreeBSD__ 857 mr_free(program);858 798 mr_asprintf(&program, "newfs_msdos -F 32 %s", device); 859 799 #else … … 861 801 /* For EFI partitions take fat16 862 802 * as we want to make small ones */ 863 mr_free(program);864 803 mr_asprintf(&program, "mkfs -t %s -F 16 %s", format, device); 865 804 #else 866 mr_free(program);867 805 mr_asprintf(&program, "mkfs -t %s -F 32 %s", format, device); 868 806 #endif … … 877 815 retval += res; 878 816 if (retval) { 879 mr_ asprintf(&tmp1, "%s%s",tmp, _("...failed"));817 mr_strcat(tmp, _("...failed")); 880 818 } else { 881 mr_asprintf(&tmp1, "%s%s",tmp, _("...OK")); 882 } 819 mr_strcat(tmp, _("...OK")); 820 } 821 log_to_screen(tmp); 883 822 mr_free(tmp); 884 823 885 log_to_screen(tmp1);886 mr_free(tmp1);887 824 sync(); 888 825 sleep(1); … … 902 839 /** int **************************************************************/ 903 840 int retval = 0; 904 int lino; 905 int res; 906 // int i; 907 // struct list_of_disks *drivelist; 841 int lino = 0; 842 int res = 0; 908 843 909 844 /** long *************************************************************/ 910 long progress_step ;845 long progress_step = 0L; 911 846 912 847 /** bools ************************************************************/ 913 bool do_it ;848 bool do_it = FALSE; 914 849 915 850 /** buffers **********************************************************/ 916 char *tmp ;851 char *tmp = NULL; 917 852 918 853 /** pointers *********************************************************/ 919 struct mountlist_line *me ; // mountlist entry854 struct mountlist_line *me = NULL; // mountlist entry 920 855 /** end **************************************************************/ 921 856 922 857 assert(mountlist != NULL); 923 mr_asprintf(&tmp,"format_everything (mountlist, interactively = %s",858 log_it("format_everything (mountlist, interactively = %s", 924 859 (interactively) ? "true" : "false"); 925 log_it(tmp);926 mr_free(tmp);927 928 860 mvaddstr_and_log_it(g_currentY, 0, _("Formatting partitions ")); 929 861 open_progress_form(_("Formatting partitions"), … … 935 867 (mountlist->entries > 936 868 0) ? g_maximum_progress / mountlist->entries : 1; 937 // start soft-raids now (because LVM might depend on them)938 // ...and for simplicity's sake, let's format them at the same time :)869 // start soft-raids now (because LVM might depend on them) 870 // ...and for simplicity's sake, let's format them at the same time :) 939 871 mr_msg(1, "Stopping all RAID devices"); 940 872 stop_all_raid_devices(mountlist); … … 968 900 sync(); 969 901 sleep(2); 970 // This last step is probably necessary971 // log_to_screen("Re-starting software RAIDs...");972 // start_all_raid_devices(mountlist);973 // system("sync"); system("sync"); system("sync");974 // sleep(5);975 // do LVMs now902 // This last step is probably necessary 903 // log_to_screen("Re-starting software RAIDs..."); 904 // start_all_raid_devices(mountlist); 905 // system("sync"); system("sync"); system("sync"); 906 // sleep(5); 907 // do LVMs now 976 908 mr_msg(1, "Creating LVMs"); 977 909 if (does_file_exist("/tmp/i-want-my-lvm")) { … … 995 927 sleep(3); 996 928 } 997 // do regulars at last929 // do regulars at last 998 930 sleep(2); // woo! 999 931 mr_msg(1, "Formatting regulars"); … … 1001 933 me = &mountlist->el[lino]; // the current mountlist entry 1002 934 if (!strcmp(me->mountpoint, "image")) { 1003 mr_asprintf(&tmp, "Not formatting %s - it's an image", me->device); 1004 log_it(tmp); 1005 mr_free(tmp); 935 log_it("Not formatting %s - it's an image", me->device); 1006 936 } else if (!strcmp(me->format, "raid")) { 1007 mr_asprintf(&tmp, "Not formatting %s - it's a raid-let", 1008 me->device); 1009 log_it(tmp); 1010 mr_free(tmp); 937 log_it("Not formatting %s - it's a raid-let", me->device); 1011 938 continue; 1012 939 } else if (!strcmp(me->format, "lvm")) { 1013 mr_asprintf(&tmp, "Not formatting %s - it's an LVM", me->device); 1014 log_it(tmp); 1015 mr_free(tmp); 940 log_it("Not formatting %s - it's an LVM", me->device); 1016 941 continue; 1017 942 } else if (!strncmp(me->device, "/dev/md", 7)) { 1018 mr_asprintf(&tmp, "Already formatted %s - it's a soft-RAID dev", 1019 me->device); 1020 log_it(tmp); 1021 mr_free(tmp); 943 log_it("Already formatted %s - it's a soft-RAID dev", me->device); 1022 944 continue; 1023 945 } else if (!does_file_exist(me->device) 1024 946 && strncmp(me->device, "/dev/hd", 7) 1025 947 && strncmp(me->device, "/dev/sd", 7)) { 1026 mr_asprintf(&tmp, 1027 "Not formatting %s yet - doesn't exist - probably an LVM", 1028 me->device); 1029 log_it(tmp); 1030 mr_free(tmp); 948 log_it("Not formatting %s yet - doesn't exist - probably an LVM", me->device); 1031 949 continue; 1032 950 } else { … … 1066 984 } 1067 985 1068 mr_asprintf(&tmp,"format_everything () - %s",986 log_it("format_everything () - %s", 1069 987 (retval) ? "failed!" : "finished successfully"); 1070 log_it(tmp);1071 mr_free(tmp);1072 988 1073 989 if (g_partition_table_locked_up > 0) { … … 1120 1036 { 1121 1037 /** int **************************************************************/ 1122 int current_devno ;1123 int previous_devno ;1038 int current_devno = 0; 1039 int previous_devno = 0; 1124 1040 int retval = 0; 1125 int res; 1126 1127 /** buffers **********************************************************/ 1128 char *tmp; 1041 int res = 0; 1129 1042 1130 1043 /** end **************************************************************/ … … 1133 1046 1134 1047 if (devno_we_must_allow_for >= 5) { 1135 mr_asprintf(&tmp, "Making dummy primary %s%d", drivename, 1); 1136 log_it(tmp); 1137 mr_free(tmp); 1138 1048 log_it("Making dummy primary %s%d", drivename, 1); 1139 1049 g_maximum_progress++; 1140 1050 res = … … 1149 1059 } 1150 1060 for (; current_devno < devno_we_must_allow_for; current_devno++) { 1151 mr_asprintf(&tmp, "Creating dummy partition %s%d", drivename, 1152 current_devno); 1153 log_it(tmp); 1154 mr_free(tmp); 1155 1061 log_it("Creating dummy partition %s%d", drivename, current_devno); 1156 1062 g_maximum_progress++; 1157 1063 res = … … 1293 1199 { 1294 1200 static struct disklabel loclab; 1295 struct partition *dp ;1296 char *lnamebuf ;1201 struct partition *dp = NULL; 1202 char *lnamebuf = NULL; 1297 1203 int f; 1298 1204 u_int secsize, u; … … 1376 1282 char *drivename, struct disklabel *ret) 1377 1283 { 1378 char *subdev_str ;1379 char *command ;1380 struct disklabel *lp ;1284 char *subdev_str = NULL; 1285 char *command = NULL; 1286 struct disklabel *lp = NULL; 1381 1287 int i, lo = 0; 1382 1288 int retval = 0; 1383 char c ;1384 FILE *ftmp ;1289 char c = ' '; 1290 FILE *ftmp = NULL; 1385 1291 1386 1292 lp = get_virgin_disklabel(drivename); … … 1493 1399 assert_string_is_neither_NULL_nor_zerolength(drivename); 1494 1400 1495 mr_asprintf(&tmp, "Partitioning drive %s", drivename); 1496 log_it(tmp); 1497 mr_free(tmp); 1401 log_it("Partitioning drive %s", drivename); 1498 1402 1499 1403 #if __FreeBSD__ … … 1523 1427 // then see if the user has picked 'dangerously-dedicated' mode. 1524 1428 // If so, then we just call label_drive_or_slice() and return. 1525 char c ;1526 char *command ;1429 char c = ' '; 1430 char *command = NULL; 1527 1431 1528 1432 if (current_devno == 1) { … … 1593 1497 file = open(drivename, O_WRONLY); 1594 1498 if (!file) { 1595 mr_asprintf(&tmp, 1596 _("Warning - unable to open %s for wiping it's partition table"), 1597 drivename); 1598 log_to_screen(tmp); 1599 mr_free(tmp); 1499 log_to_screen(_("Warning - unable to open %s for wiping it's partition table"), drivename); 1600 1500 } 1601 1501 1602 1502 for (i = 0; i < 512; i++) { 1603 1503 if (!write(file, "\0", 1)) { 1604 mr_asprintf(&tmp, _("Warning - unable to write to %s"), 1605 drivename); 1606 log_to_screen(tmp); 1607 mr_free(tmp); 1504 log_to_screen(_("Warning - unable to write to %s"), drivename); 1608 1505 } 1609 1506 } … … 1625 1522 if (!fbsd_part) { 1626 1523 #endif 1627 1524 mr_free(format); 1628 1525 mr_asprintf(&format, mountlist->el[lino].format); 1629 1526 partsize = mountlist->el[lino].size; … … 1633 1530 #endif 1634 1531 1532 #ifndef __IA64__ 1635 1533 if (current_devno == 5 && previous_devno == 4) { 1636 1534 log_to_screen … … 1641 1539 return (1); 1642 1540 } 1541 #endif 1643 1542 1644 1543 retval += … … 1716 1615 1717 1616 /** buffers **********************************************************/ 1718 char *program ;1719 char *partition_name ;1720 char *tmp ;1721 char *output ;1617 char *program = NULL; 1618 char *partition_name = NULL; 1619 char *tmp = NULL; 1620 char *output = NULL; 1722 1621 1723 1622 /** pointers **********************************************************/ 1724 char *p ;1725 char *part_table_fmt ;1726 FILE *fout ;1623 char *p = NULL; 1624 char *part_table_fmt = NULL; 1625 FILE *fout = NULL; 1727 1626 1728 1627 /** end ***************************************************************/ … … 1735 1634 1736 1635 if (!strncmp(drive, RAID_DEVICE_STUB, strlen(RAID_DEVICE_STUB))) { 1737 mr_asprintf(&tmp, "Not partitioning %s - it is a virtual drive", drive); 1738 log_it(tmp); 1739 mr_free(tmp); 1636 log_it("Not partitioning %s - it is a virtual drive", drive); 1740 1637 return (0); 1741 1638 } … … 1752 1649 1753 1650 if (is_this_device_mounted(partition_name)) { 1754 mr_asprintf(&tmp, _("%s is mounted, and should not be partitioned"),1651 log_to_screen("%s is mounted, and should not be partitioned", 1755 1652 partition_name); 1756 1653 mr_free(partition_name); 1757 1758 log_to_screen(tmp);1759 mr_free(tmp);1760 1654 return (1); 1761 1655 } 1762 1656 1763 1657 p = (char *) strrchr(partition_name, '/'); 1764 mr_asprintf(&program, "parted2fdisk %s >> %s 2>> %s", drive, MONDO_LOGFILE,1765 MONDO_LOGFILE);1766 1658 1767 1659 /* BERLIOS: should not be called each time */ … … 1779 1671 ("You need to leave at least one partition free, for 'extended/logical'")); 1780 1672 mr_free(partition_name); 1781 mr_free(program);1782 1783 mr_free(output);1784 1673 return (1); 1785 1674 } else { … … 1787 1676 } 1788 1677 } 1789 mr_asprintf(&tmp,"%sn\nl\n",output); 1790 mr_free(output); 1791 output = tmp; 1678 mr_strcat(output, "n\nl\n"); 1792 1679 } else { 1793 1680 /* GPT allows more than 4 primary partitions */ … … 1797 1684 mr_free(part_table_fmt); 1798 1685 /*start block (ENTER for next free blk */ 1799 mr_asprintf(&tmp,"%s\n",output); 1800 mr_free(output); 1801 output = tmp; 1802 1686 mr_strcat(output, "\n"); 1803 1687 if (partsize > 0) { 1804 1688 if (!strcmp(format, "7")) { … … 1806 1690 partsize += 512; 1807 1691 } 1808 mr_asprintf(&tmp,"%s+%lldK", output, (long long) (partsize)); 1809 mr_free(output); 1810 output = tmp; 1811 } 1812 mr_asprintf(&tmp,"%s\n",output); 1813 mr_free(output); 1814 output = tmp; 1692 mr_strcat(output, "+%lldK", (long long) (partsize)); 1693 } 1694 mr_strcat(output, "\n"); 1815 1695 #if 0 1816 1696 /* 1817 1697 #endif 1818 mr_asprintf(&tmp,"PARTSIZE = +%ld",(long)partsize); 1819 log_it(tmp); 1820 mr_free(tmp); 1821 1698 log_it("PARTSIZE = +%ld",(long)partsize); 1822 1699 log_it("---fdisk command---"); 1823 1700 log_it(output); … … 1860 1737 } 1861 1738 } else { 1862 mr_ asprintf(&tmp,"%sw\n\n",output);1863 mr_ free(output);1864 output = tmp;1739 mr_strcat(output, "w\n\n"); 1740 mr_asprintf(&program, "parted2fdisk %s >> %s 2>> %s", drive, MONDO_LOGFILE, 1741 MONDO_LOGFILE); 1865 1742 1866 1743 if (g_fprep) { … … 1874 1751 paranoid_pclose(fout); 1875 1752 } 1753 mr_free(program); 1754 1876 1755 if (!does_partition_exist(drive, partno) && partsize > 0) { 1877 1756 log_it("Vaccum-packing"); … … 1881 1760 format, -1); 1882 1761 if (res) { 1883 mr_asprintf(&tmp, "Failed to vacuum-pack %s", partition_name); 1884 log_it(tmp); 1885 mr_free(tmp); 1886 1762 log_it("Failed to vacuum-pack %s", partition_name); 1887 1763 retval++; 1888 1764 } else { … … 1895 1771 partsize); 1896 1772 if (retval) { 1897 mr_asprintf(&tmp,"Partitioned %s but failed to set its type",1773 log_it("Partitioned %s but failed to set its type", 1898 1774 partition_name); 1899 log_it(tmp);1900 mr_free(tmp);1901 1775 } else { 1902 1776 if (partsize > 0) { 1903 mr_asprintf(&tmp, "Partition %s created+configured OK",1777 log_to_screen(_("Partition %s created+configured OK"), 1904 1778 partition_name); 1905 log_to_screen(tmp);1906 mr_free(tmp);1907 1779 } else { 1908 1780 log_it("Returning from a successful vacuum-pack"); … … 1923 1795 log_it("partition_device() --- leaving"); 1924 1796 mr_free(partition_name); 1925 mr_free(program);1926 1797 mr_free(output); 1927 1798 return (retval); … … 1939 1810 { 1940 1811 /** int ************************************************************/ 1941 int lino ;1812 int lino = 0; 1942 1813 int retval = 0; 1943 int i ;1944 int res ;1814 int i = 0; 1815 int res = 0; 1945 1816 1946 1817 /** buffer *********************************************************/ 1947 struct list_of_disks *drivelist; 1948 /* struct mountlist_itself new_mtlist, *mountlist; */ 1818 struct list_of_disks *drivelist = NULL; 1949 1819 1950 1820 /** end ************************************************************/ … … 1955 1825 log_it("partition_everything() --- starting"); 1956 1826 mvaddstr_and_log_it(g_currentY, 0, "Partitioning hard drives "); 1957 /* mountlist=orig_mtlist; */1958 1827 if (mountlist_contains_raid_devices(mountlist)) { 1959 1828 /* mountlist=&new_mtlist; */ … … 1977 1846 stop_all_raid_devices(mountlist); 1978 1847 mr_msg(0, "Done."); 1979 1980 /*1981 if (does_file_exist("/tmp/i-want-my-lvm"))1982 {1983 wipe_MBRs_and_reboot_if_necessary(mountlist); // i.e. if it wasn't done recently1984 }1985 */1986 1848 1987 1849 open_progress_form(_("Partitioning devices"), … … 2010 1872 system("clear"); 2011 1873 newtResume(); 2012 mr_free( (void*)drivelist);1874 mr_free(drivelist); 2013 1875 return (retval); 2014 1876 } 2015 2016 2017 2018 2019 1877 2020 1878 … … 2076 1934 mr_asprintf(&partcode, "8e"); 2077 1935 } else if (format[0] == '\0') { /* LVM physical partition */ 2078 mr_asprintf(&partcode, " %s", "");1936 mr_asprintf(&partcode, ""); 2079 1937 } else if (strlen(format) >= 1 && strlen(format) <= 2) { 2080 1938 mr_asprintf(&partcode, format); … … 2098 1956 mr_msg(1, tmp); 2099 1957 mr_free(tmp); 1958 2100 1959 if (partcode[0] != '\0' && strcmp(partcode, "83")) { /* no need to set type if 83: 83 is default */ 2101 1960 … … 2119 1978 fput_string_one_char_at_a_time(pout_to_fdisk, tmp); 2120 1979 mr_free(tmp); 1980 2121 1981 tmp1 = last_line_of_file(FDISK_LOG); 2122 1982 mr_msg(5, "B - last line = '%s'",tmp1); … … 2170 2030 { 2171 2031 /** int *************************************************************/ 2172 int res ;2032 int res = 0; 2173 2033 int retval = 0; 2174 2034 2175 2035 /** buffers *********************************************************/ 2176 char *program ;2036 char *program = NULL; 2177 2037 2178 2038 /** end *************************************************************/ … … 2187 2047 mr_asprintf(&program, "vinum start -f %s", raid_device); 2188 2048 #else 2189 mr_asprintf(&program, "raidstart %s", raid_device); 2049 // use raidstart if it exists, otherwise use mdadm 2050 if (run_program_and_log_output("which raidstart", FALSE)) { 2051 // BERLIOS: Not sure it's sufficient 2052 mr_asprintf(&program, "mdadm -A %s", raid_device); 2053 } else { 2054 mr_asprintf(&program, "raidstart %s", raid_device); 2055 } 2190 2056 #endif 2191 2057 mr_msg(1, "program = %s", program); … … 2214 2080 { 2215 2081 /** int *************************************************************/ 2216 int res ;2082 int res = 0; 2217 2083 int retval = 0; 2218 2084 2219 2085 /** buffers *********************************************************/ 2220 char *program ;2086 char *program = NULL; 2221 2087 2222 2088 /** end *************************************************************/ … … 2255 2121 int start_all_raid_devices(struct mountlist_itself *mountlist) 2256 2122 { 2257 int i ;2123 int i = 0; 2258 2124 int retval = 0; 2259 int res ;2125 int res = 0; 2260 2126 2261 2127 for (i = 0; i < mountlist->entries; i++) { … … 2366 2232 /** int *************************************************************/ 2367 2233 int res = 0; 2368 2369 /** buffers *********************************************************/2370 char *tmp;2371 2234 2372 2235 /** end ***************************************************************/ … … 2402 2265 mr_asprintf(&program, "mkfs -t %s -c", format); // -c checks for bad blocks 2403 2266 #endif 2404 mr_asprintf(&tmp,"Unknown format (%s) - assuming '%s' will do", format,2267 log_it("Unknown format (%s) - assuming '%s' will do", format, 2405 2268 program); 2406 log_it(tmp);2407 mr_free(tmp);2408 2269 res = 0; 2409 2270 } … … 2423 2284 { 2424 2285 /** long ************************************************************/ 2425 long original_size_of_drive ;2286 long original_size_of_drive = 0L; 2426 2287 2427 2288 /** int *************************************************************/ 2428 int partno; 2429 2430 /** buffers *********************************************************/ 2431 char *tmp; 2289 int partno = 0; 2432 2290 2433 2291 /** end *************************************************************/ … … 2442 2300 strlen(drive_name)) == 0) { 2443 2301 original_size_of_drive += mountlist->el[partno].size; 2444 } else {2445 mr_asprintf(&tmp, "Skipping %s", mountlist->el[partno].device);2446 // log_to_screen(tmp);2447 mr_free(tmp);2448 2302 } 2449 2303 } … … 2468 2322 char *drive_name) 2469 2323 { 2470 /**buffers **********************************************************/2471 char *tmp;2472 2473 2324 /** int *************************************************************/ 2474 int partno , lastpart;2325 int partno = 0, lastpart = 0; 2475 2326 /** remove driveno, noof_drives stan benoit apr 2002**/ 2476 2327 … … 2478 2329 float factor; 2479 2330 float new_size; 2480 // float newcylinderno;2481 2331 2482 2332 /** long *************************************************************/ 2483 long newsizL ;2484 long current_size_of_drive = 0 ;2485 long original_size_of_drive = 0 ;2486 long final_size ; /* all in Megabytes */2487 struct mountlist_reference *drivemntlist ;2333 long newsizL = 0L; 2334 long current_size_of_drive = 0L; 2335 long original_size_of_drive = 0L; 2336 long final_size = 0L; /* all in Megabytes */ 2337 struct mountlist_reference *drivemntlist = NULL; 2488 2338 2489 2339 /** structures *******************************************************/ … … 2507 2357 return; 2508 2358 } 2509 mr_asprintf(&tmp, _("Expanding entries to suit drive %s (%ld MB)"), 2510 drive_name, current_size_of_drive); 2511 log_to_screen(tmp); 2512 mr_free(tmp); 2359 log_to_screen("Expanding entries to suit drive %s (%ld MB)", drive_name, 2360 current_size_of_drive); 2513 2361 2514 2362 drivemntlist = mr_malloc(sizeof(struct mountlist_reference)); … … 2524 2372 2525 2373 if (original_size_of_drive <= 0) { 2526 mr_asprintf(&tmp,_("Cannot resize %s's entries. Drive not found."),2374 log_to_screen(_("Cannot resize %s's entries. Drive not found."), 2527 2375 drive_name); 2528 log_to_screen(tmp);2529 mr_free(tmp);2530 2376 return; 2531 2377 } 2532 2378 factor = 2533 2379 (float) (current_size_of_drive) / (float) (original_size_of_drive); 2534 mr_asprintf(&tmp, "Disk %s was %ld MB; is now %ld MB; factor = %f",2380 log_to_screen(_("Disk %s was %ld MB; is now %ld MB; factor = %f"), 2535 2381 drive_name, original_size_of_drive, current_size_of_drive, 2536 2382 factor); 2537 log_to_screen(tmp);2538 mr_free(tmp);2539 2383 2540 2384 lastpart = drivemntlist->entries - 1; … … 2555 2399 newsizL = (long) new_size; 2556 2400 } 2557 mr_asprintf(&tmp,_("Changing %s from %lld KB to %ld KB"),2401 log_to_screen(_("Changing %s from %lld KB to %ld KB"), 2558 2402 drivemntlist->el[partno]->device, 2559 2403 drivemntlist->el[partno]->size, newsizL); 2560 log_to_screen(tmp);2561 mr_free(tmp);2562 2404 drivemntlist->el[partno]->size = newsizL; 2563 2405 } 2564 2406 final_size = get_phys_size_of_drive(drive_name); 2565 mr_asprintf(&tmp, _("final_size = %ld MB"), final_size); 2566 log_to_screen(tmp); 2567 mr_free(tmp); 2407 log_to_screen(_("final_size = %ld MB"), final_size); 2568 2408 } 2569 2409 … … 2579 2419 { 2580 2420 /** buffers *********************************************************/ 2581 struct list_of_disks *drivelist ;2421 struct list_of_disks *drivelist = NULL; 2582 2422 2583 2423 /** int *************************************************************/ 2584 int driveno ;2424 int driveno = 0; 2585 2425 2586 2426 /** end *************************************************************/ … … 2592 2432 ("resize_mountlist_prop...() - warning - mountlist fname is blank"); 2593 2433 log_it("That does NOT affect the functioning of this subroutine."); 2594 log_it("--- Hugo, 2002/11/20");2595 2434 } 2596 2435 iamhere("Resizing mountlist"); … … 2604 2443 } 2605 2444 log_to_screen(_("Mountlist adjusted to suit current hard drive(s)")); 2606 mr_free( (void*)drivelist);2445 mr_free(drivelist); 2607 2446 } 2608 2447 … … 2619 2458 struct mountlist_reference *drivemntlist) 2620 2459 { 2621 int partno ;2622 char *tmp_drive_name , *c;2460 int partno = 0; 2461 char *tmp_drive_name = NULL, *c = NULL; 2623 2462 2624 2463 assert(mountlist != NULL); … … 2628 2467 mr_msg(1, "Creating list of partitions for drive %s", drive_name); 2629 2468 2630 mr_asprintf(&tmp_drive_name,drive_name); 2631 if (!tmp_drive_name) 2632 fatal_error("Out of memory"); 2469 mr_asprintf(&tmp_drive_name, drive_name); 2633 2470 2634 2471 /* devfs devices? */ -
trunk/mondo/src/mondorestore/mondo-restore-EXT.h
r783 r2009 13 13 extern char *g_isodir_format; 14 14 15 extern struct s_bkpinfo *g_bkpinfo_DONTUSETHIS;16 15 extern char *g_biggielist_txt; 17 16 extern char *g_filelist_full; -
trunk/mondo/src/mondorestore/mondo-rstr-compare.c
r1086 r2009 4 4 */ 5 5 6 #include <pthread.h> 6 7 #include "my-stuff.h" 7 8 #include "../common/mondostructures.h" 8 9 #include "../common/libmondo.h" 10 #include "mr_msg.h" 11 #include "mr_mem.h" 9 12 #include "mr-externs.h" 10 13 #include "mondo-rstr-compare.h" 11 14 #include "mondo-restore-EXT.h" 12 15 #include "mondo-rstr-tools-EXT.h" 13 #ifndef S_SPLINT_S 14 #include <pthread.h> 15 #endif 16 #include "mr_mem.h" 16 17 //static char cvsid[] = "$Id$"; 17 18 18 19 void popup_changelist_from_file(char *); … … 32 33 { 33 34 34 FILE *fin ;35 FILE *fout ;35 FILE *fin = NULL; 36 FILE *fout = NULL; 36 37 37 38 /** needs malloc *******/ … … 62 63 } 63 64 if (!(fin = fopen(tmp1, "r"))) { 64 mr_asprintf(&tmp, _("Cannot open bigfile %ld (%s)'s info file"), 65 bigfileno + 1, tmp); 66 log_to_screen(tmp); 67 mr_free(tmp); 65 log_to_screen(_("Cannot open bigfile %ld (%s)'s info file"), 66 bigfileno + 1, tmp1); 68 67 mr_free(tmp1); 69 68 return (1); … … 74 73 paranoid_fclose(fin); 75 74 76 mr_asprintf(&checksum, biggiestruct.checksum);77 75 mr_asprintf(&bigfile_fname, biggiestruct.filename); 78 79 76 mr_msg(2, "biggiestruct.filename = %s", bigfile_fname); 80 mr_msg(2, "biggiestruct.checksum = %s", checksum); 77 if (!biggiestruct.checksum[0]) { 78 mr_msg(2, "Warning - %s has no checksum", bigfile_fname); 79 } else { 80 mr_asprintf(&checksum, biggiestruct.checksum); 81 mr_msg(2, "biggiestruct.checksum = %s", checksum); 82 } 81 83 82 84 if (!g_text_mode) { … … 86 88 mr_free(tmp); 87 89 } 88 /* BERLIOS: Useless ? 89 if (!checksum[0]) { 90 mr_msg(2, "Warning - %s has no checksum", bigfile_fname_ptr); 91 } */ 90 92 91 if (!strncmp(bigfile_fname, "/dev/", 5)) { 93 92 mr_msg(2, _("Ignoring device %s"), bigfile_fname); 93 mr_free(bigfile_fname); 94 94 return(0); 95 } else { 96 mr_asprintf(&command, 97 "md5sum \"%s%s\" > /tmp/md5sum.txt 2> /tmp/errors.txt", 98 MNT_RESTORING, bigfile_fname); 99 } 95 } 96 mr_asprintf(&command, 97 "md5sum \"%s%s\" > /tmp/md5sum.txt 2> /tmp/errors.txt", 98 MNT_RESTORING, bigfile_fname); 100 99 mr_msg(2, command); 101 paranoid_system("cat /tmp/errors >> /tmp/mondo-restore.log 2> /dev/null");102 100 if (system(command)) { 103 101 log_OS_error("Warning - command failed"); 102 paranoid_system("cat /tmp/errors >> /tmp/mondo-restore.log 2> /dev/null"); 104 103 mr_free(command); 105 104 mr_free(bigfile_fname); … … 157 156 { 158 157 int retval = 0; 159 int res ;160 long noof_biggiefiles , bigfileno = 0;161 char *tmp ;158 int res = 0; 159 long noof_biggiefiles = 0L, bigfileno = 0L; 160 char *tmp = NULL; 162 161 163 162 assert(bkpinfo != NULL); … … 186 185 update_progress_form(tmp); 187 186 mr_free(tmp); 187 188 188 res = compare_a_biggiefile(bkpinfo, bigfileno); 189 189 retval += res; … … 218 218 { 219 219 int retval = 0; 220 int res; 221 long noof_lines; 222 long archiver_errors; 223 bool use_star; 224 225 /*** needs malloc *********/ 220 int res = 0; 221 long noof_lines = 0L; 222 long archiver_errors = 0L; 223 bool use_star = FALSE; 224 226 225 char *command = NULL; 227 226 char *tmp = NULL; … … 242 241 mr_asprintf(&compressor_exe, "bzip2"); 243 242 } else if (strstr(tarball_fname, ".gz")) { 244 strcpy(compressor_exe, "gzip"); 245 } else if (strstr(tarball_fname, ".gz")) { 246 strcpy(compressor_exe, "gzip"); 243 mr_asprintf(&compressor_exe, "gzip"); 247 244 } else if (strstr(tarball_fname, ".lzo")) { 248 245 mr_asprintf(&compressor_exe, "lzop"); … … 275 272 } 276 273 } 277 // star -diff H=star -bz file=....278 274 279 275 #ifdef __FreeBSD__ … … 317 313 archiver_errors = 0; 318 314 } 319 320 315 if (archiver_errors) { 321 mr_asprintf(&tmp, 322 "Differences found while processing fileset #%d ", 316 mr_msg(1, "Differences found while processing fileset #%d ", 323 317 current_tarball_number); 324 mr_msg(1, tmp);325 mr_free(tmp);326 318 } 327 319 unlink(logfile); … … 343 335 { 344 336 int retval = 0; 345 int res ;337 int res = 0; 346 338 int current_tarball_number = 0; 347 348 /** needs malloc **********/349 339 350 340 char *tarball_fname = NULL; 351 341 char *progress_str = NULL; 352 342 char *tmp = NULL; 353 long max_val ;343 long max_val = 0L; 354 344 355 345 assert(bkpinfo != NULL); … … 415 405 } else { 416 406 res = compare_a_tarball(tarball_fname, current_tarball_number); 417 mr_free(tarball_fname);418 419 407 g_current_progress++; 420 408 current_tarball_number++; 421 409 } 410 mr_free(tarball_fname); 422 411 } 423 412 mr_free(progress_str); … … 457 446 int resA = 0; 458 447 int resB = 0; 459 long noof_changed_files ;448 long noof_changed_files = 0L; 460 449 461 450 malloc_string(cwd); … … 475 464 noof_changed_files = count_lines_in_file("/tmp/changed.txt"); 476 465 if (noof_changed_files) { 477 mr_asprintf(&tmp,_("%ld files do not match the backup "),466 log_to_screen(_("%ld files do not match the backup "), 478 467 noof_changed_files); 479 // mvaddstr_and_log_it( g_currentY++, 0, tmp );480 log_to_screen(tmp);481 mr_free(tmp);482 483 468 mr_asprintf(&command, "cat /tmp/changed.txt >> %s", MONDO_LOGFILE); 484 469 paranoid_system(command); … … 517 502 { 518 503 int retval = 0; 519 long q ;520 char *tmp ;504 long q = 0L; 505 char *tmp = NULL; 521 506 522 507 /************************************************************************** … … 633 618 run_program_and_log_output(command, FALSE); 634 619 mr_free(command); 620 635 621 mvaddstr_and_log_it(g_currentY, 636 622 0, _("Verifying archives against filesystem")); … … 680 666 int compare_to_tape(struct s_bkpinfo *bkpinfo) 681 667 { 682 int res ;668 int res = 0; 683 669 char *dir = NULL; 684 670 char *command = NULL; -
trunk/mondo/src/mondorestore/mondo-rstr-newt.h
r1106 r2009 4 4 5 5 #include "my-stuff.h" 6 #include "../common/mondostructures.h" 7 #include "../common/libmondo.h" 6 #include "mr_str.h" 7 8 #include "mondostructures.h" 9 #include "libmondo.h" 8 10 #ifdef __FreeBSD__ 9 11 #define raid_device_record vinum_volume … … 29 31 extern long get_phys_size_of_drive(char *); 30 32 extern bool is_this_device_mounted(char *); 31 extern void strip_spaces(char *);33 extern void mr_strip_spaces(char *); 32 34 extern void initialize_raidrec(struct raid_device_record *); 33 35 extern int make_list_of_drives(struct mountlist_itself *, -
trunk/mondo/src/mondorestore/mondoprep.h
r688 r2009 42 42 int start_all_raid_devices(struct mountlist_itself *); 43 43 int stop_all_raid_devices(struct mountlist_itself *); 44 int format_everything(struct mountlist_itself *, bool, 45 struct raidlist_itself *); 44 int format_everything(struct mountlist_itself *, bool, struct raidlist_itself *); 46 45 int partition_device(FILE *, const char *, int, int, const char *, 47 46 long long); -
trunk/mondo/src/mondorestore/mondorestore.c
r1176 r2009 15 15 16 16 #include "my-stuff.h" 17 #include "../common/mondostructures.h" 18 #include "../common/libmondo.h" 17 #include "mr_mem.h" 18 #include "mr_msg.h" 19 #include "mr_str.h" 20 21 #include "mondostructures.h" 22 #include "libmondo.h" 19 23 #include "mr-externs.h" 20 24 #include "mondo-restore.h" … … 24 28 #include <pthread.h> 25 29 #endif 26 #include "mr_mem.h"27 30 28 31 extern void twenty_seconds_til_yikes(void); … … 41 44 **************************************************************************/ 42 45 extern char *g_tmpfs_mountpt; // declared in libmondo-tools.c 43 extern struct s_bkpinfo *g_bkpinfo_DONTUSETHIS; // used by finish() to free44 // up global bkpinfo struct45 46 extern bool g_text_mode; 46 47 extern FILE *g_fprep; … … 429 430 } 430 431 431 fmt_errs = 432 format_everything(mountlist, FALSE, raidlist); 432 fmt_errs = format_everything(mountlist, FALSE, raidlist); 433 433 if (!fmt_errs) { 434 434 log_to_screen … … 510 510 if (filelist) { 511 511 gotos_suck: 512 // (NB: %s is where your filesystem is mounted now, by default)", MNT_RESTORING); 512 // (NB: MNT_RESTORING is where your filesystem is mounted now, by default) 513 513 if (popup_and_get_string 514 514 (_("Restore path"), _("Restore files to where?"), bkpinfo->restore_path)) { … … 558 558 } 559 559 560 // run_program_and_log_output("cp -af /etc/lvm " MNT_RESTORING "/etc/", 1);561 560 protect_against_braindead_sysadmins(); 562 561 retval += unmount_all_devices(mountlist); … … 585 584 mvaddstr_and_log_it(g_currentY++, 74, _("Failed.")); 586 585 } else { 587 mvaddstr_and_log_it(g_currentY++, 74, "Done.");586 mvaddstr_and_log_it(g_currentY++, 74, _("Done.")); 588 587 } 589 588 retval += res; … … 597 596 ("Warning - errors occurred during the restore phase.")); 598 597 } 598 iamhere("Leaving interactive_mode()"); 599 599 return(retval); 600 600 } … … 619 619 struct raidlist_itself *raidlist, bool nuke_me_please) 620 620 { 621 char c ;621 char c = ' '; 622 622 int retval = 0; 623 623 … … 647 647 paranoid_system("umount " MNT_CDROM); 648 648 } 649 // if (! already_mounted)650 // {651 649 if (system("umount /tmp/isodir 2> /dev/null")) { 652 650 log_to_screen … … 654 652 ("WARNING - unable to unmount device where the ISO files are stored.")); 655 653 } 656 // }657 654 return (retval); 658 655 } … … 661 658 *END_ISO_MODE * 662 659 **************************************************************************/ 663 664 665 660 static void call_me_after_the_nuke(int retval) { 666 661 … … 670 665 if (retval) { 671 666 log_to_screen(_("Errors occurred during the nuke phase.")); 672 log_to_screen(_("Please visit our website at http://www.mondorescue.org for more information.")); 667 log_to_screen(_("Please visit our website at http://www.mondores 668 cue.org for more information.")); 673 669 } else { 674 670 #ifdef __FreeBSD__ 675 671 tmp1 = call_program_and_get_last_line_of_output("cat /tmp/cmdline"); 676 672 #else 677 673 tmp1 = call_program_and_get_last_line_of_output("cat /proc/cmdline"); 678 674 #endif 679 675 if ((strstr(tmp1,"restore") == NULL) || 680 (strstr(tmp1,"RESTORE") == NULL)) { 681 /* -H option */ 682 mr_asprintf(&tmp, 683 _ 684 (" Mondo has restored your system. Please remove the backup media and reboot.\n\nPlease visit our website at http://www.mondorescue.org for more information.")); 685 popup_and_OK(tmp); 686 mr_free(tmp); 676 (strstr(tmp1,"RESTORE") == NULL)) { 677 /* -H option */ 678 mr_asprintf(&tmp, 679 _ 680 (" Mondo has restored your system. Please remove the backup media and reboot.\n\nPlease visit our website at http://www. 681 mondorescue.org for more information.")); 682 popup_and_OK(tmp); 683 mr_free(tmp); 687 684 } 688 685 mr_free(tmp1); 689 686 690 687 log_to_screen(_ 691 688 ("Mondo has restored your system. Please remove the backup media and reboot.")); 692 689 log_to_screen(_ 693 690 ("Thank you for using Mondo Rescue.")); 694 691 log_to_screen(_ 695 692 ("Please visit our website at http://www.mondorescue.org for more information.")); 696 693 } 697 694 g_I_have_just_nuked = TRUE; … … 750 747 mr_free(tmp); 751 748 retval = interactive_mode(bkpinfo, mountlist, raidlist); 752 goto after_the_nuke; 749 call_me_after_the_nuke(retval); 750 return(retval); 753 751 } else { 754 752 mr_free(tmp); … … 812 810 retval = interactive_mode(bkpinfo, mountlist, raidlist); 813 811 call_me_after_the_nuke(retval); 812 return(retval); 814 813 } else 815 814 if (!ask_me_yes_or_no 816 815 (_("Would you like to try to proceed anyway?"))) { 817 }818 return(retval);816 return(retval); 817 } 819 818 } 820 819 retval = mount_all_devices(mountlist, TRUE); … … 834 833 } 835 834 protect_against_braindead_sysadmins(); 836 // run_program_and_log_output("cp -af /etc/lvm " MNT_RESTORING "/etc/", 1);837 835 retval += unmount_all_devices(mountlist); 838 836 mvaddstr_and_log_it(g_currentY, … … 855 853 retval += res; 856 854 857 after_the_nuke: 858 if (retval) { 859 log_to_screen("Errors occurred during the nuke phase."); 860 } else if (strstr(call_program_and_get_last_line_of_output("cat /proc/cmdline"), "RESTORE")) // Bruno's thing 861 { 862 log_to_screen 863 ("PC was restored successfully. Thank you for using Mondo Rescue."); 864 log_to_screen 865 ("Please visit our website at http://www.mondorescue.org for more information."); 866 } else { 867 strcpy(tmp,"Mondo has restored your system.\n\nPlease wait for the command prompt. Then remove the backup media and reboot.\n\nPlease visit our website at http://www.mondorescue.org for more information."); 868 if (strstr(call_program_and_get_last_line_of_output("cat /proc/cmdline"), "restore") == NULL) { 869 popup_and_OK(tmp); 870 } 871 log_to_screen 872 ("Mondo has restored your system. Please wait for the command prompt."); 873 log_to_screen 874 ("Then remove the backup media and reboot."); 875 log_to_screen 876 ("Please visit our website at http://www.mondorescue.org for more information."); 877 } 878 g_I_have_just_nuked = TRUE; 879 /* 880 if (!boot_loader_installed && !does_file_exist(DO_MBR_PLEASE)) 881 { 882 log_to_screen("PLEASE RUN 'mondorestore --mbr' NOW TO INITIALIZE YOUR BOOT SECTOR"); 883 write_one_liner_data_file(DO_MBR_PLEASE, "mondorestore --mbr"); 884 } 885 */ 855 call_me_after_the_nuke(retval); 886 856 return (retval); 887 857 } 858 888 859 /************************************************************************** 889 860 *END_NUKE_MODE * … … 996 967 FILE *fout = NULL; 997 968 FILE *fbzip2 = NULL; 969 998 970 char *checksum = NULL; 999 1000 971 char *outfile_fname = NULL; 972 char *tmp = NULL; 1001 973 char *tmp0 = NULL; 1002 974 char *tmp1 = NULL; 1003 975 char *tmp2 = NULL; 1004 976 char *tmp3 = NULL; 1005 977 char *bzip2_command = NULL; 1006 978 char *bigblk = NULL; 1007 979 char *pathname_of_last_file_restored = NULL; 1008 980 int finished = FALSE; 1009 long sliceno ;981 long sliceno = 0L; 1010 982 long siz; 1011 983 long siz1; … … 1018 990 int res = 0; 1019 991 int old_loglevel; 1020 char *sz_msg ;992 char *sz_msg = NULL; 1021 993 struct s_node *node = NULL; 1022 994 … … 1046 1018 1047 1019 if (!checksum[0]) { 1048 mr_ asprintf(&tmp, "Warning - bigfile %ld does not have a checksum",1020 mr_msg(3, "Warning - bigfile %ld does not have a checksum", 1049 1021 bigfileno + 1); 1050 mr_msg(3, tmp);1051 mr_free(tmp);1052 /* BERLIOS : Useless ???1053 p = checksum;1054 */1055 1022 } 1056 1023 mr_free(checksum); … … 1090 1057 1091 1058 if (biggiestruct.use_ntfsprog) // if it's an NTFS device 1092 // if (!strncmp ( biggiestruct.filename, "/dev/", 5))1093 1059 { 1094 1060 g_loglevel = 4; … … 1112 1078 feed_outfrom_ntfsprog(biggiestruct.filename, 1113 1079 ntfsprog_fifo); 1114 // mr_msg(3, "CHILD - fip - exiting");1115 1080 exit(res); 1116 1081 break; … … 1120 1085 (long int) (pid)); 1121 1086 } 1122 // BERLIOS: Is it the right place ??1123 mr_free(ntfsprog_fifo);1124 1087 } else { 1125 1088 use_ntfsprog_hack = FALSE; … … 1131 1094 } 1132 1095 1133 mr_ asprintf(&tmp, "Reassembling big file %ld (%s)", bigfileno + 1,1096 mr_msg(2, "Reassembling big file %ld (%s)", bigfileno + 1, 1134 1097 outfile_fname); 1135 mr_msg(2, tmp);1136 mr_free(tmp);1137 1098 1138 1099 /* … … 1146 1107 mr_msg(3, "file_to_openout = %s", file_to_openout); 1147 1108 if (!(fout = fopen(file_to_openout, "w"))) { 1148 log_to_screen(_("Cannot openout outfile_fname- hard disk full?"));1109 log_to_screen(_("Cannot openout file_to_openout - hard disk full?")); 1149 1110 return (pathname_of_last_file_restored); 1150 1111 } 1112 mr_free(ntfsprog_fifo); 1151 1113 mr_msg(3, "Opened out to %s", outfile_fname); // CD/DVD --> mondorestore --> ntfsclone --> hard disk itself 1152 1114 … … 1164 1126 g_current_media_number); 1165 1127 g_current_media_number++; 1166 mr_asprintf(&tmp3, 1167 "Asking for %s #%d so that I may read slice #%ld\n", 1168 bkpinfo->backup_media_string, 1128 mr_msg(2, "Asking for %s #%d so that I may read slice #%ld\n", 1129 media_descriptor_string(bkpinfo->backup_media_type), 1169 1130 g_current_media_number, sliceno); 1170 mr_msg(2, tmp3); 1171 mr_free(tmp3); 1172 1173 mr_asprintf(&tmp3, _("Restoring from %s #%d"), 1131 log_to_screen(_("Restoring from %s #%d"), 1174 1132 bkpinfo->backup_media_string, 1175 1133 g_current_media_number); 1176 log_to_screen(tmp3);1177 mr_free(tmp3);1178 1179 1134 insist_on_this_cd_number(bkpinfo, g_current_media_number); 1180 1135 log_to_screen(_("Continuing to restore.")); … … 1194 1149 mr_asprintf(&bzip2_command, "bzip2 -dc %s 2>> %s",tmp2, MONDO_LOGFILE); 1195 1150 } else if (does_file_exist(tmp)) { 1196 mr_asprintf(&bzip2_command, " %s", "");1151 mr_asprintf(&bzip2_command, ""); 1197 1152 } else { 1198 1153 log_to_screen(_("OK, that's pretty fsck0red...")); … … 1204 1159 mr_asprintf(&bzip2_command, "cat %s 2>> %s", tmp, MONDO_LOGFILE); 1205 1160 } 1206 mr_asprintf(&tmp3, "Working on %s #%d, file #%ld, slice #%ld 1161 mr_asprintf(&tmp3, "Working on %s #%d, file #%ld, slice #%ld", 1207 1162 bkpinfo->backup_media_string, 1208 1163 g_current_media_number, bigfileno + 1, sliceno); … … 1216 1171 1217 1172 if (!(fbzip2 = popen(bzip2_command, "r"))) { 1173 mr_free(bzip2_command); 1218 1174 fatal_error("Can't run popen command"); 1219 1175 } … … 1224 1180 if (siz > 0) { 1225 1181 siz1 = fwrite(bigblk, 1, siz, fout); 1226 mr_asprintf(&sz_msg, "Read %ld from fbzip2; written %ld to fout", siz, siz1);1227 log_it(sz_msg);1228 mr_free(sz_msg);1229 1182 } 1230 1183 } 1231 1184 paranoid_pclose(fbzip2); 1232 1233 1185 1234 1186 sliceno++; … … 1288 1240 int use_ntfsprog) 1289 1241 { 1290 FILE *pout ;1291 FILE *fin ;1242 FILE *pout = NULL; 1243 FILE *fin = NULL; 1292 1244 1293 1245 /** mallocs ********/ … … 1300 1252 char *pathname_of_last_file_restored = NULL; 1301 1253 1302 struct s_node *node ;1303 1304 int old_loglevel ;1254 struct s_node *node = NULL; 1255 1256 int old_loglevel = 0; 1305 1257 long current_slice_number = 0; 1306 1258 int retval = 0; 1307 1259 int res = 0; 1308 1260 int ctrl_chr = '\0'; 1309 long long slice_siz ;1261 long long slice_siz = 0L; 1310 1262 bool dummy_restore = FALSE; 1311 1263 bool use_ntfsprog_hack = FALSE; 1312 1264 pid_t pid; 1313 1265 struct s_filename_and_lstat_info biggiestruct; 1314 struct utimbuf the_utime_buf, *ubuf ;1266 struct utimbuf the_utime_buf, *ubuf = NULL; 1315 1267 ubuf = &the_utime_buf; 1316 1268 … … 1380 1332 outfile_fname, ntfsprog_fifo); 1381 1333 res = feed_outfrom_ntfsprog(outfile_fname, ntfsprog_fifo); 1382 // mr_msg(3, "CHILD - fip - exiting");1383 1334 exit(res); 1384 1335 break; … … 1388 1339 (long int) (pid)); 1389 1340 } 1390 mr_free(ntfsprog_fifo);1391 1341 } else { 1392 1342 if (!strncmp(orig_bf_fname, "/dev/", 5)) // non-NTFS partition … … 1404 1354 make_hole_for_file(outfile_fname); 1405 1355 } 1406 mr_ asprintf(&tmp1, "Reassembling big file %ld (%s)",1356 mr_msg(2, "Reassembling big file %ld (%s)", 1407 1357 biggiefile_number + 1, orig_bf_fname); 1408 mr_msg(2, tmp1);1409 mr_free(tmp1);1410 1358 } 1411 1359 … … 1421 1369 file_to_openout, MONDO_LOGFILE); 1422 1370 } 1423 mr_ asprintf(&tmp1, "Pipe command = '%s'", command);1424 mr_ msg(3, tmp1);1425 mr_free( tmp1);1371 mr_msg(3, "Pipe command = '%s'", command); 1372 mr_free(outfile_fname); 1373 mr_free(ntfsprog_fifo); 1426 1374 1427 1375 /* restore biggiefile, one slice at a time */ … … 1445 1393 newtRefresh(); 1446 1394 } 1447 strip_spaces(tmp1);1395 mr_strip_spaces(tmp1); 1448 1396 update_progress_form(tmp1); 1449 1397 mr_free(tmp1); … … 1506 1454 } 1507 1455 1508 mr_free(outfile_fname);1509 1456 g_loglevel = old_loglevel; 1510 1457 return (pathname_of_last_file_restored); … … 1533 1480 { 1534 1481 int retval = 0; 1535 int res ;1536 char *p ;1482 int res = 0; 1483 char *p = NULL; 1537 1484 1538 1485 /** malloc **/ 1539 char *command ;1486 char *command = NULL; 1540 1487 char *tmp = NULL; 1541 char *filelist_name ;1488 char *filelist_name = NULL; 1542 1489 char *filelist_subset_fname = NULL; 1543 1490 char *executable = NULL; 1544 1491 char *temp_log = NULL; 1545 1492 long matches = 0; 1546 bool use_star ;1493 bool use_star = FALSE; 1547 1494 char *xattr_fname = NULL; 1548 1495 char *acl_fname = NULL; … … 1567 1514 retval = 0; 1568 1515 mr_msg(5, "Leaving"); 1516 mr_free(filelist_name); 1569 1517 return (retval); 1570 1518 } … … 1573 1521 mr_msg(3, "length_of_file(%s) = %llu", tarball_fname, 1574 1522 length_of_file(tarball_fname)); 1575 mr_asprintf(&tmp, "Unable to restore fileset #%ld (CD I/O error)",1523 log_to_screen(_("Unable to restore fileset #%ld (CD I/O error)"), 1576 1524 current_tarball_number); 1577 log_to_screen(tmp);1578 mr_free(tmp);1579 1525 retval = 1; 1580 1526 mr_msg(5, "Leaving"); 1527 mr_free(filelist_name); 1581 1528 return (retval); 1582 1529 } … … 1590 1537 use_star)) 1591 1538 <= 0) { 1592 mr_asprintf(&tmp, "Skipping fileset %ld", current_tarball_number); 1593 mr_msg(1, tmp); 1594 mr_free(tmp); 1539 mr_msg(1, "Skipping fileset %ld", current_tarball_number); 1595 1540 } else { 1596 1541 mr_msg(3, "Saved fileset %ld's subset to %s", 1597 1542 current_tarball_number, filelist_subset_fname); 1598 1543 } 1599 mr_asprintf(&tmp,"Tarball #%ld --- %ld matches",1544 log_to_screen("Tarball #%ld --- %ld matches", 1600 1545 current_tarball_number, matches); 1601 log_to_screen(tmp);1602 mr_free(tmp);1603 } else {1604 filelist_subset_fname = NULL;1605 1546 } 1606 1547 mr_free(filelist_name); … … 1616 1557 } 1617 1558 if (strstr(tarball_fname, ".bz2")) { 1618 mr_asprintf(&executable, " bzip2");1559 mr_asprintf(&executable, "-P bzip2 -Z"); 1619 1560 } else if (strstr(tarball_fname, ".gz")) { 1620 strcpy(executable, "gzip"); 1621 } else if (strstr(tarball_fname, ".gz")) { 1622 strcpy(executable, "gzip"); 1561 mr_asprintf(&executable, "-P gzip -Z"); 1623 1562 } else if (strstr(tarball_fname, ".lzo")) { 1624 mr_asprintf(&executable, "lzop"); 1625 } else { 1626 executable = NULL; 1563 mr_asprintf(&executable, "-P lzop -Z"); 1627 1564 } 1628 1565 … … 1633 1570 (_ 1634 1571 ("(compare_a_tarball) Compression program not found - oh no!")); 1572 mr_free(tmp); 1573 mr_free(executable); 1574 mr_free(acl_fname); 1575 mr_free(xattr_fname); 1576 mr_free(filelist_subset_fname); 1635 1577 paranoid_MR_finish(1); 1636 1578 } 1637 mr_free(tmp);1638 1639 mr_asprintf(&tmp, executable);1640 mr_asprintf(&executable, "-P %s -Z", tmp);1641 1579 mr_free(tmp); 1642 1580 } … … 1647 1585 #endif 1648 1586 1649 mr_asprintf(&temp_log, "/tmp/%d.%d", (int) (random() % 32768),1650 (int) (random() % 32768));1651 1652 1587 if (use_star) { 1588 mr_sprintf(&command, 1589 "star -x -force-remove -U " STAR_ACL_SZ 1590 " errctl= file=%s", tarball_fname); 1653 1591 if (strstr(tarball_fname, ".bz2")) { 1654 mr_asprintf(&tmp, " -bz"); 1655 } else { 1656 mr_asprintf(&tmp, "%s", ""); 1657 } 1658 mr_asprintf(&command, 1659 "star -x -force-remove -U " STAR_ACL_SZ 1660 " errctl= file=%s %s 2>> %s >> %s", tarball_fname, tmp, temp_log, temp_log); 1661 mr_free(tmp); 1592 mr_strcat(command, " -bz"); 1593 } 1662 1594 } else { 1663 1595 if (filelist_subset_fname != NULL) { 1664 1596 mr_asprintf(&command, 1665 "afio -i -M 8m -b %ld -c %ld %s -w '%s' %s 2>> %s >> %s",1597 "afio -i -M 8m -b %ld -c %ld %s -w '%s' %s", 1666 1598 TAPE_BLOCK_SIZE, 1667 1599 BUFSIZE, executable, filelist_subset_fname, 1668 // files_to_restore_this_time_fname, 1669 tarball_fname, temp_log, temp_log); 1600 tarball_fname); 1670 1601 } else { 1671 1602 mr_asprintf(&command, 1672 "afio -i -b %ld -c %ld -M 8m %s %s 2>> %s >> %s",1603 "afio -i -b %ld -c %ld -M 8m %s %s", 1673 1604 TAPE_BLOCK_SIZE, 1674 BUFSIZE, executable, tarball_fname , temp_log, temp_log);1605 BUFSIZE, executable, tarball_fname); 1675 1606 } 1676 1607 } … … 1678 1609 1679 1610 #undef BUFSIZE 1611 mr_asprintf(&temp_log, "/tmp/%d.%d", (int) (random() % 32768), 1612 (int) (random() % 32768)); 1613 1614 mr_strcat(command, " 2>> %s >> %s", temp_log, temp_log); 1680 1615 mr_msg(1, "command = '%s'", command); 1681 1616 unlink(temp_log); … … 1732 1667 unlink(xattr_fname); 1733 1668 mr_free(xattr_fname); 1669 unlink(acl_fname); 1670 mr_free(acl_fname); 1671 unlink(temp_log); 1672 mr_free(temp_log); 1734 1673 } 1735 1674 if (does_file_exist("/PAUSE")) { … … 1739 1678 } 1740 1679 unlink(filelist_subset_fname); 1741 unlink(acl_fname);1742 unlink(temp_log);1743 1744 1680 mr_free(filelist_subset_fname); 1745 mr_free(acl_fname);1746 mr_free(temp_log);1747 1681 mr_msg(5, "Leaving"); 1748 1682 return (retval); … … 1789 1723 long matches = 0; 1790 1724 bool restore_this_fileset = FALSE; 1791 bool use_star ;1725 bool use_star = FALSE; 1792 1726 1793 1727 assert(bkpinfo != NULL); … … 1795 1729 /* to do it with a file... */ 1796 1730 use_star = (strstr(tarball_fname, ".star")) ? TRUE : FALSE; 1797 mr_asprintf(&tmp, 1798 "Restoring from fileset #%ld (%ld KB) on %s #%d", 1731 mr_msg(2, "Restoring from fileset #%ld (%ld KB) on %s #%d", 1799 1732 current_tarball_number, (long) size >> 10, 1800 1733 bkpinfo->backup_media_string, 1801 1734 g_current_media_number); 1802 mr_msg(2, tmp);1803 mr_free(tmp);1804 1735 run_program_and_log_output("mkdir -p " MNT_RESTORING "/tmp", FALSE); 1805 1736 … … 1837 1768 if (strstr(tarball_fname, ".star.")) { 1838 1769 use_star = TRUE; 1839 mr_asprintf(&command, "star -t file=%s %s > %s 2>> %s", afio_fname, executable, filelist_fname, MONDO_LOGFILE);1770 mr_asprintf(&command, "star -t file=%s %s", afio_fname, executable); 1840 1771 } else { 1841 1772 use_star = FALSE; 1842 mr_asprintf(&command, "afio -t -M 8m -b %ld %s %s > %s 2>> %s", TAPE_BLOCK_SIZE, 1843 executable, afio_fname, filelist_fname, MONDO_LOGFILE); 1844 } 1773 mr_asprintf(&command, "afio -t -M 8m -b %ld %s %s", TAPE_BLOCK_SIZE, 1774 executable, afio_fname); 1775 } 1776 mr_strcat(command, " > %s 2>> %s", filelist_fname, MONDO_LOGFILE); 1845 1777 mr_msg(1, "command = %s", command); 1846 1778 if (system(command)) { … … 1848 1780 } 1849 1781 mr_free(command); 1782 1850 1783 if ((matches = 1851 1784 save_filelist_entries_in_common(filelist_fname, filelist, … … 1857 1790 current_tarball_number); 1858 1791 } 1859 mr_asprintf(&tmp, "Skipping fileset %ld", current_tarball_number); 1860 mr_msg(2, tmp); 1861 mr_free(tmp); 1792 mr_msg(2, "Skipping fileset %ld", current_tarball_number); 1862 1793 restore_this_fileset = FALSE; 1863 1794 } else { … … 1875 1806 // star 1876 1807 if (filelist) { 1877 mr_asprintf(&command, "star -x file=%s %s list=%s 2>> %s", afio_fname, executable, 1878 filelist_subset_fname,MONDO_LOGFILE); 1808 mr_asprintf(&command, "star -x file=%s %s list=%s 2>> %s", afio_fname, executable, filelist_subset_fname, MONDO_LOGFILE); 1879 1809 } else { 1880 mr_asprintf(&command, "star -x file=%s %s 2>> %s", afio_fname, executable,MONDO_LOGFILE);1810 mr_asprintf(&command, "star -x file=%s %s 2>> %s", afio_fname, executable, MONDO_LOGFILE); 1881 1811 } 1882 1812 } else { 1883 1813 // afio 1884 1814 if (filelist) { 1885 mr_asprintf(&command, "afio -i -M 8m -b %ld %s -w %s %s 2>> %s", TAPE_BLOCK_SIZE, executable, filelist_subset_fname, afio_fname,MONDO_LOGFILE);1815 mr_asprintf(&command, "afio -i -M 8m -b %ld %s -w %s %s 2>> %s", TAPE_BLOCK_SIZE, executable, filelist_subset_fname, afio_fname, MONDO_LOGFILE); 1886 1816 } else { 1887 mr_asprintf(&command, "afio -i -M 8m -b %ld %s %s 2>> %s", TAPE_BLOCK_SIZE, executable, afio_fname,MONDO_LOGFILE);1817 mr_asprintf(&command, "afio -i -M 8m -b %ld %s %s 2>> %s", TAPE_BLOCK_SIZE, executable, afio_fname, MONDO_LOGFILE); 1888 1818 } 1889 1819 } … … 1992 1922 return (0); 1993 1923 } 1994 mr_asprintf(&tmp, "OK, there are %ld biggiefiles in the archives", 1995 noof_biggiefiles); 1996 mr_msg(2, tmp); 1997 mr_free(tmp); 1924 mr_msg(2, "OK, there are %ld biggiefiles in the archives", noof_biggiefiles); 1998 1925 1999 1926 open_progress_form(_("Reassembling large files"), … … 2023 1950 insist_on_this_cd_number(bkpinfo, 2024 1951 ++g_current_media_number); 2025 mr_asprintf(&tmp,_("Restoring from %s #%d"),1952 log_to_screen(_("Restoring from %s #%d"), 2026 1953 bkpinfo->backup_media_string, 2027 1954 g_current_media_number); 2028 log_to_screen(tmp);2029 mr_free(tmp);2030 2031 1955 just_changed_cds = TRUE; 2032 1956 } else { … … 2051 1975 retval += res; 2052 1976 bigfileno++; 2053 2054 } 2055 mr_free(tmp); 1977 } 2056 1978 } 2057 1979 … … 2088 2010 return (retval); 2089 2011 } 2012 2090 2013 /************************************************************************** 2091 2014 *END_RESTORE_ALL_BIGGIFILES_FROM_CD * … … 2108 2031 { 2109 2032 int retval = 0; 2110 int res ;2111 int attempts ;2033 int res = 0; 2034 int attempts = 0; 2112 2035 long current_tarball_number = 0; 2113 long max_val ;2036 long max_val = 0L; 2114 2037 /**malloc ***/ 2115 char *tmp ;2116 char *tmp1 ;2117 char *tarball_fname ;2118 char *progress_str ;2119 char *comment ;2038 char *tmp = NULL; 2039 char *tmp1 = NULL; 2040 char *tarball_fname = NULL; 2041 char *progress_str = NULL; 2042 char *comment = NULL; 2120 2043 2121 2044 assert(bkpinfo != NULL); … … 2144 2067 insist_on_this_cd_number(bkpinfo, g_current_media_number); 2145 2068 update_progress_form(progress_str); 2146 2147 2069 mr_asprintf(&tarball_fname, MNT_CDROM "/archives/%ld.afio.bz2", 2148 2070 current_tarball_number); … … 2178 2100 (_ 2179 2101 ("No tarballs. Strange. Maybe you only backed up freakin' big files?")); 2102 mr_free(progress_str); 2180 2103 return (0); 2181 2104 } … … 2184 2107 "/archives/slice* > /dev/null 2> /dev/null") == 2185 2108 0) { 2109 mr_free(tarball_fname); 2110 mr_free(progress_str); 2186 2111 break; 2187 2112 } 2188 2113 g_current_media_number++; 2189 2114 mr_free(progress_str); 2115 2190 2116 mr_asprintf(&progress_str, _("Restoring from %s #%d"), 2191 2117 bkpinfo->backup_media_string, … … 2199 2125 bkpinfo->backup_media_string, 2200 2126 g_current_media_number); 2201 // mr_msg(3, "progress_str = %s", progress_str);2202 2127 for (res = 999, attempts = 0; attempts < 3 && res != 0; 2203 2128 attempts++) { … … 2207 2132 filelist); 2208 2133 } 2134 mr_asprintf(&tmp, _("%s #%d, fileset #%ld - restore "), 2135 media_descriptor_string(bkpinfo->backup_media_type), 2136 g_current_media_number, current_tarball_number); 2209 2137 if (res) { 2210 mr_ asprintf(&tmp1, _("reported errors"));2138 mr_strcat(tmp, _("reported errors")); 2211 2139 } else { 2212 mr_asprintf(&tmp1, _("succeeded")); 2213 } 2214 mr_asprintf(&tmp, _("%s #%d, fileset #%ld - restore %s"), 2215 bkpinfo->backup_media_string, 2216 g_current_media_number, current_tarball_number,tmp1); 2217 mr_free(tmp1); 2218 2140 mr_strcat(tmp, _("succeeded")); 2141 } 2219 2142 if (attempts > 1) { 2220 mr_asprintf(&tmp1, _(" (%d attempts) - review logs"), attempts); 2221 } 2222 mr_asprintf(&comment, "%s%s", tmp, tmp1); 2143 mr_strcat(tmp, _(" (%d attempts) - review logs"), attempts); 2144 } 2145 if (attempts > 1) { 2146 log_to_screen(tmp); 2147 } 2223 2148 mr_free(tmp); 2224 mr_free(tmp1);2225 if (attempts > 1) {2226 log_to_screen(comment);2227 }2228 mr_free(comment);2229 2149 2230 2150 retval += res; … … 2242 2162 mvaddstr_and_log_it(g_currentY++, 74, _("Done.")); 2243 2163 } 2244 2245 2164 return (retval); 2246 2165 } … … 2262 2181 struct s_node *filelist) 2263 2182 { 2264 long noof_biggiefiles ;2265 long current_bigfile_number = 0 ;2266 long total_slices ;2183 long noof_biggiefiles = 0L; 2184 long current_bigfile_number = 0L; 2185 long total_slices = 0L; 2267 2186 2268 2187 int retval = 0; 2269 2188 int res = 0; 2270 int ctrl_chr ;2189 int ctrl_chr = 0; 2271 2190 2272 2191 /** malloc add ****/ … … 2302 2221 biggies_whose_EXATs_we_should_set); 2303 2222 } 2304 // get xattr and acl files if they're there2223 // get xattr and acl files if they're there 2305 2224 res = 2306 2225 read_header_block_from_stream(&biggie_size, biggie_fname, … … 2313 2232 2314 2233 noof_biggiefiles = atol(biggie_fname); 2315 mr_ asprintf(&tmp, "OK, there are %ld biggiefiles in the archives",2234 mr_msg(2, "OK, there are %ld biggiefiles in the archives", 2316 2235 noof_biggiefiles); 2317 mr_msg(2, tmp);2318 mr_free(tmp);2319 2320 2236 open_progress_form(_("Reassembling large files"), 2321 2237 _("I am now reassembling all the large files."), … … 2363 2279 if (current_bigfile_number != noof_biggiefiles 2364 2280 && noof_biggiefiles != 0) { 2365 mr_ asprintf(&tmp, "Warning - bigfileno=%ld but noof_biggiefiles=%ld\n",2281 mr_msg(1, "Warning - bigfileno=%ld but noof_biggiefiles=%ld\n", 2366 2282 current_bigfile_number, noof_biggiefiles); 2367 2283 } else { 2368 mr_asprintf(&tmp, 2369 "%ld biggiefiles in biggielist.txt; %ld biggiefiles processed today.", 2284 mr_msg(1, "%ld biggiefiles in biggielist.txt; %ld biggiefiles processed today.", 2370 2285 noof_biggiefiles, current_bigfile_number); 2371 2286 } 2372 mr_msg(1, tmp);2373 mr_free(tmp);2374 2287 2375 2288 if (fbw) { … … 2437 2350 { 2438 2351 int retval = 0; 2439 int res ;2352 int res = 0; 2440 2353 long current_afioball_number = 0; 2441 int ctrl_chr ;2442 long max_val /*, total_noof_files */ ;2354 int ctrl_chr = 0; 2355 long max_val = 0L /*, total_noof_files */ ; 2443 2356 2444 2357 /** malloc **/ … … 2449 2362 char *acl_fname = NULL; 2450 2363 2451 long long tmp_size ;2364 long long tmp_size = 0L; 2452 2365 2453 2366 assert(bkpinfo != NULL); … … 2515 2428 retval += res; 2516 2429 if (res) { 2517 mr_asprintf(&tmp, _("Fileset %ld - errors occurred"),2430 log_to_screen("Fileset %ld - errors occurred", 2518 2431 current_afioball_number); 2519 log_to_screen(tmp);2520 mr_free(tmp);2521 2432 } 2522 2433 res = … … 2609 2520 mr_free(tmp); 2610 2521 2611 mvaddstr_and_log_it(g_currentY, 0, 2612 _("Preparing to read your archives")); 2522 mvaddstr_and_log_it(g_currentY, 0, _("Preparing to read your archives")); 2613 2523 if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) { 2614 2524 mount_cdrom(bkpinfo); … … 2785 2695 void welcome_to_mondorestore() 2786 2696 { 2787 mr_msg(0, "-------------- Mondo Restore v%s -------------", 2788 PACKAGE_VERSION); 2697 mr_msg(0, "-------------- Mondo Restore v%s -------------", PACKAGE_VERSION); 2789 2698 mr_msg(0, 2790 2699 "DON'T PANIC! Mondorestore logs almost everything, so please "); … … 2837 2746 bool run_postnuke = FALSE; 2838 2747 2839 /**************************************************************************2840 * hugo- *2841 * busy stuff here - it needs some comments -stan *2842 * *2843 **************************************************************************/2844 2845 2748 #ifdef ENABLE_NLS 2846 2749 setlocale(LC_ALL, ""); … … 2869 2772 mr_free(tmp); 2870 2773 2871 bkpinfo = g_bkpinfo_DONTUSETHIS =mr_malloc(sizeof(struct s_bkpinfo));2774 bkpinfo = mr_malloc(sizeof(struct s_bkpinfo)); 2872 2775 mountlist = mr_malloc(sizeof(struct mountlist_itself)); 2873 2776 raidlist = mr_malloc(sizeof(struct raidlist_itself)); … … 2927 2830 run_program_and_log_output("rm -Rf /tmp/tmpfs/mondo.tmp.*", FALSE); 2928 2831 2929 /* Init GUI */2832 /* Init GUI */ 2930 2833 malloc_libmondo_global_strings(); 2931 2834 setup_newt_stuff(); /* call newtInit and setup screen log */ … … 2939 2842 iamhere("what time is it"); 2940 2843 2941 /* Process command-line parameters */2844 /* Process command-line parameters */ 2942 2845 if (argc == 2 && strcmp(argv[1], "--edit-mountlist") == 0) { 2943 2846 #ifdef __FreeBSD__ … … 2998 2901 // BERLIOS: /usr/lib ??? 2999 2902 toggle_path_selection(filelist, "/usr/share", TRUE); 3000 // show_filelist(filelist);3001 2903 save_filelist(filelist, "/tmp/out.txt"); 3002 // finish(0);3003 // toggle_path_selection (filelist, "/root/stuff", TRUE);3004 2904 mr_asprintf(&a, argv[3]); 3005 2905 mr_asprintf(&b, argv[4]); … … 3073 2973 ("Live mode doesn't support command-line parameters yet.")); 3074 2974 paranoid_MR_finish(1); 3075 // return(1);3076 2975 } 3077 2976 mr_msg(1, "I am in normal, live mode."); … … 3225 3124 if (!bkpinfo->please_dont_eject) { 3226 3125 res = eject_device("/dev/cdrom"); 3227 /*3228 if (res)3229 {3230 log_to_screen( "WARNING - failed to eject CD-ROM disk" );3231 }3232 */3233 3126 } 3234 3127 mvaddstr_and_log_it(g_currentY++, … … 3239 3132 } 3240 3133 3241 // g_I_have_just_nuked is set true by nuke_mode() just before it returns3134 // g_I_have_just_nuked is set true by nuke_mode() just before it returns 3242 3135 if (!system("which post-nuke > /dev/null 2> /dev/null")) { 3243 3136 mr_msg(1, "post-nuke found; find out whether we should run it..."); … … 3262 3155 } else { 3263 3156 mr_msg(1, "Re-mounted partitions for post-nuke stuff"); 3264 sprintf(tmp, "post-nuke %s %d", bkpinfo->restore_path,3157 mr_asprintf(&tmp, "post-nuke %s %d", bkpinfo->restore_path, 3265 3158 retval); 3266 3159 mr_msg(2, "Calling '%s'", tmp); … … 3268 3161 log_OS_error(tmp); 3269 3162 } 3163 mr_free(tmp); 3270 3164 mr_msg(1, "post-nuke returned w/ res=%d", res); 3271 3165 } … … 3274 3168 } 3275 3169 3276 /*3277 log_to_screen("If you are REALLY in a hurry, hit Ctrl-Alt-Del now.");3278 log_to_screen("Otherwise, please wait until the RAID disks are done.");3279 wait_until_software_raids_are_prepped("/proc/mdstat", 100);3280 log_to_screen("Thank you.");3281 */3282 3170 unlink("/tmp/mondo-run-prog.tmp"); 3283 3171 set_signals(FALSE); … … 3289 3177 (_ 3290 3178 ("Restore log copied to /tmp/mondo-restore.log on your hard disk")); 3291 mr_asprintf(&tmp, 3292 _ 3293 ("Mondo-restore is exiting (retval=%d) "), 3294 retval); 3295 log_to_screen(tmp); 3296 mr_free(tmp); 3179 log_to_screen(_("Mondo-restore is exiting (retval=%d)"), retval); 3297 3180 3298 3181 mr_asprintf(&tmp, "umount %s", bkpinfo->isodir); -
trunk/mondo/src/mondorestore/mr-externs.h
r688 r2009 27 27 extern int edit_mountlist(char *mountlist_fname, struct mountlist_itself *, 28 28 struct raidlist_itself *); 29 extern int format_everything(struct mountlist_itself *, bool, 30 struct raidlist_itself *); 29 extern int format_everything(struct mountlist_itself *, bool, struct raidlist_itself *); 31 30 extern int format_device(char *, char *, struct raidlist_itself *); 32 31 extern void finish(int); … … 72 71 extern int read_header_block_from_stream(long long *, char *, int *); 73 72 extern void save_filelist(struct s_node *, char *); 74 extern void strip_spaces(char *);73 extern void mr_strip_spaces(char *); 75 74 extern int strcmp_inc_numbers(char *, char *); 76 75 extern char *slice_fname(long, long, char *, char *); … … 86 85 extern void resize_drive_proportionately_to_suit_new_drives(struct 87 86 mountlist_itself 88 *mountlist, char 87 *mountlist, 88 char 89 89 *drive_name); 90 90 extern void resize_mountlist_proportionately_to_suit_new_drives(struct
Note:
See TracChangeset
for help on using the changeset viewer.