Changeset 1106 in MondoRescue for trunk/mondo/src/common/libmondo-archive.c
- Timestamp:
- Feb 7, 2007, 11:55:11 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mondo/src/common/libmondo-archive.c
r1086 r1106 20 20 #include "mr_mem.h" 21 21 #include "mr_err.h" 22 #include "mr_str.h" 23 #include "mr_file.h" 22 24 23 25 #include "libmondo-string-EXT.h" … … 544 546 /*@ buffer ************************************************************ */ 545 547 char *tmp = NULL; 546 char *tmp1 = NULL;547 char *tmp2 = NULL;548 548 char *command = NULL; 549 549 char *use_lzo_sz = NULL; … … 559 559 char *devs_to_exclude = NULL; 560 560 char *use_lilo_sz = NULL; 561 char *value = NULL;562 561 char *bootdev = NULL; 563 564 562 565 563 /*@ char ************************************************************** */ … … 572 570 int res = 0; 573 571 long estimated_total_noof_slices = 0; 572 573 FILE *fd = NULL; 574 FILE *fd1 = NULL; 574 575 575 576 assert(bkpinfo != NULL); … … 606 607 mr_asprintf(&tape_device, " "); 607 608 } 609 /* BERLIOS: This parameter is not used after? */ 610 mr_free(tape_size_sz); 608 611 if (bkpinfo->use_lzo) { 609 612 mr_asprintf(&use_lzo_sz, "yes"); … … 759 762 mr_asprintf(&tmp, "%s/BOOTLOADER.DEVICE", bkpinfo->tmpdir); 760 763 if (write_one_liner_data_file(tmp, bkpinfo->boot_device)) { 761 mr_msg(1, "%ld: Unable to write one-liner boot device", __LINE__); 762 } 763 mr_free(tmp); 764 /* BERLIOS: Use bkptype_to_string without LANG */ 765 switch (bkpinfo->backup_media_type) { 766 case cdr: 767 mr_asprintf(&value, "cdr"); 768 break; 769 case cdrw: 770 mr_asprintf(&value, "cdrw"); 771 break; 772 case cdstream: 773 mr_asprintf(&value, "cdstream"); 774 break; 775 case tape: 776 mr_asprintf(&value, "tape"); 777 break; 778 case udev: 779 mr_asprintf(&value, "udev"); 780 break; 781 case iso: 782 mr_asprintf(&value, "iso"); 783 break; 784 case nfs: 785 mr_asprintf(&value, "nfs"); 786 break; 787 case dvd: 788 mr_asprintf(&value, "dvd"); 789 break; 790 case usb: 791 strcpy(value, "usb"); 792 break; 793 default: 794 fatal_error("Unknown backup_media_type"); 795 } 796 mr_asprintf(&tmp, "%s/BACKUP-MEDIA-TYPE", bkpinfo->tmpdir); 797 if (write_one_liner_data_file(tmp, value)) { 798 res++; 799 mr_msg(1, "%ld: Unable to write one-liner backup-media-type", 800 __LINE__); 801 } 802 mr_free(value); 803 mr_free(tmp); 804 log_to_screen(bkpinfo->tmpdir); 805 mr_asprintf(&tmp, "%s/BOOTLOADER.NAME", bkpinfo->tmpdir); 806 if (write_one_liner_data_file(tmp, bootldr_str)) { 807 res++; 808 mr_msg(1, "%ld: Unable to write one-liner bootloader.name", 809 __LINE__); 810 } 811 mr_free(bootldr_str); 812 mr_free(tmp); 813 mr_asprintf(&tmp, "%s/DIFFERENTIAL", bkpinfo->tmpdir); 814 if (bkpinfo->differential) { 815 res += write_one_liner_data_file(tmp, "1"); 816 } else { 817 res += write_one_liner_data_file(tmp, "0"); 818 } 819 mr_free(tmp); 820 821 if (g_getfattr) { 822 mr_asprintf(&tmp1, "%s/XATTR", bkpinfo->tmpdir); 823 if (write_one_liner_data_file(tmp1, "TRUE")) { 824 mr_msg(1, "%ld: Unable to write one-liner XATTR", 825 __LINE__); 826 } 827 mr_free(tmp1); 828 } 829 if (g_getfacl) { 830 mr_asprintf(&tmp1, "%s/ACL", bkpinfo->tmpdir); 831 if (write_one_liner_data_file(tmp1, "TRUE")) { 832 mr_msg(1, "%ld: Unable to write one-liner ACL", 833 __LINE__); 834 } 835 mr_free(tmp1); 764 mr_msg(1, "Unable to write one-liner boot device"); 765 836 766 } 837 767 … … 850 780 log_OS_error("Unable to make mnt floppy directory"); 851 781 } 782 783 /* Prepare interface with mindi through a configuration file 784 * under /var/cache/mondo by default 785 * and the mondorestore configuration file at the same time that 786 * will be included by mindi on the initrd */ 787 788 fd = mr_fopen(MONDO_CACHE"/mindi.conf", "w"); 789 fd1 = mr_fopen(MONDORESTORECFG, "a"); 790 791 mr_fprintf(fd, "mindi_kernel=%s\n", bkpinfo->kernel_path); 792 mr_fprintf(fd, "mindi_use_own_kernel=yes\n"); 793 794 mr_fprintf(fd1, "files-in-filelist %ld\n", lines_in_filelist); 795 mr_fprintf(fd1, "internal-tape-block-size %ld\n", bkpinfo->internal_tape_block_size); 796 mr_fprintf(fd1, "total-slices %ld\n", estimated_total_noof_slices); 797 mr_fprintf(fd1, "excluded-devs %s\n", devs_to_exclude); 798 mr_free(devs_to_exclude); 799 mr_fprintf(fd1, "image-devs %s\n", bkpinfo->image_devs); 800 mr_fprintf(fd1, "last-filelist-number %s\n", last_filelist_number); 801 mr_free(last_filelist_number); 802 mr_fprintf(fd1, "bootloader.name %s\n", bootldr_str); 803 mr_free(bootldr_str); 804 mr_fprintf(fd1, "bootloader.device %s\n", bkpinfo->boot_device); 805 806 switch (bkpinfo->backup_media_type) { 807 case cdr: 808 mr_fprintf(fd1, "backup-media-type cdr\n"); 809 break; 810 case cdrw: 811 mr_fprintf(fd1, "backup-media-type cdrw\n"); 812 break; 813 case cdstream: 814 mr_fprintf(fd1, "backup-media-type cdstream\n"); 815 break; 816 case tape: 817 mr_fprintf(fd1, "backup-media-type tape\n"); 818 break; 819 case udev: 820 mr_fprintf(fd1, "backup-media-type udev\n"); 821 break; 822 case iso: 823 mr_fprintf(fd1, "backup-media-type iso\n"); 824 break; 825 case nfs: 826 mr_fprintf(fd1, "backup-media-type nfs\n"); 827 break; 828 case dvd: 829 mr_fprintf(fd1, "backup-media-type dvd\n"); 830 break; 831 case usb: 832 mr_fprintf(fd1, "backup-media-type usb\n"); 833 break; 834 default: 835 fatal_error("Unknown backup_media_type"); 836 } 837 838 if (bkpinfo->backup_media_type == usb) { 839 mr_fprintf(fd, "mindi_write_usb=yes\n"); 840 mr_fprintf(fd, "mindi_usb_device=%s\n", bkpinfo->media_device); 841 } 842 if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) { 843 mr_fprintf(fd, "mindi_write_tape=yes\n"); 844 mr_fprintf(fd, "mindi_tape_device=%s\n", bkpinfo->media_device); 845 mr_fprintf(fd1, "media-dev %s\n", bkpinfo->media_device); 846 mr_fprintf(fd1, "media-size %ld\n", bkpinfo->media_size[1]); 847 } 848 if (bkpinfo->compression_level > 0) { 849 mr_fprintf(fd1, "use-comp yes\n"); 850 } else { 851 mr_fprintf(fd1, "use-comp no\n"); 852 } 853 if (bkpinfo->use_gzip) { 854 mr_fprintf(fd1, "use-gzip yes\n"); 855 } else { 856 mr_fprintf(fd1, "use-gzip no\n"); 857 } 858 if (bkpinfo->use_lzo) { 859 mr_fprintf(fd1, "use-lzo yes\n"); 860 } else { 861 mr_fprintf(fd1, "use-lzo no\n"); 862 } 863 if (bkpinfo->use_star) { 864 mr_fprintf(fd1, "use-star yes\n"); 865 } else { 866 mr_fprintf(fd1, "use-star no\n"); 867 } 868 if (g_getfattr) { 869 mr_fprintf(fd1, "xattr yes\n"); 870 } else { 871 mr_fprintf(fd1, "xattr no\n"); 872 } 873 if (g_getfacl) { 874 mr_fprintf(fd1, "acl yes\n"); 875 } else { 876 mr_fprintf(fd1, "acl no\n"); 877 } 878 879 if (g_cd_recovery) { 880 mr_fprintf(fd1, "use-cdrecovery yes\n"); 881 } else { 882 mr_fprintf(fd1, "use-cdrecovery no\n"); 883 } 884 885 if (bkpinfo->make_cd_use_lilo) { 886 mr_fprintf(fd1, "use-lilo yes\n"); 887 } else { 888 mr_fprintf(fd1, "use-lilo no\n"); 889 } 890 if (bkpinfo->nonbootable_backup) { 891 mr_fprintf(fd1, "non-bootable yes\n"); 892 } else { 893 mr_fprintf(fd1, "non-bootable no\n"); 894 } 895 if (bkpinfo->differential) { 896 mr_fprintf(fd1, "differential 1\n"); 897 } else { 898 mr_fprintf(fd1, "differential 0\n"); 899 } 900 901 mr_fclose(fd); 902 mr_fprintf(fd1, "datestamp %s\n", mr_date()); 903 mr_fclose(fd1); 904 905 mr_asprintf(&command, "mindi --custom '%s' '%s/images'", 906 bkpinfo->tmpdir, bkpinfo->scratchdir); 907 //bkpinfo->tmpdir, // parameter #2 908 //bkpinfo->scratchdir, // parameter #3 909 //bkpinfo->kernel_path, // parameter #4 910 //tape_device, // parameter #5 911 //tape_size_sz, // parameter #6 912 //lines_in_filelist, // parameter #7 (INT) 913 //use_lzo_sz, // parameter #8 914 //cd_recovery_sz, // parameter #9 915 //bkpinfo->image_devs, // parameter #10 916 //broken_bios_sz, // parameter #11 always yes 917 //last_filelist_number, // parameter #12 (STRING) 918 //estimated_total_noof_slices, // parameter #13 (INT) 919 //devs_to_exclude, // parameter #14 920 //use_comp_sz, // parameter #15 921 //use_lilo_sz, // parameter #16 922 //use_star_sz, // parameter #17 923 //bkpinfo->internal_tape_block_size, // parameter #18 (LONG) 924 //bkpinfo->differential, // parameter #19 (INT) 925 //use_gzip_sz); // parameter #20 (STRING) 926 927 mr_msg(2, command); 928 929 930 res = run_program_and_log_to_screen(command, "Generating boot+data disks"); 852 931 mr_free(command); 853 854 mr_asprintf(&tmp, "BTW, I'm telling Mindi your kernel is '%s'",855 bkpinfo->kernel_path);856 log_to_screen(tmp);857 mr_free(tmp);858 859 mr_msg(1, "lines_in_filelist = %ld", lines_in_filelist);860 861 if (bkpinfo->backup_media_type == usb) {862 mr_asprintf(&tmp2, "--usb %s", bkpinfo->media_device);863 } else {864 mr_asprintf(&tmp2,"");865 }866 867 // Watch it! This next line adds a parameter...868 if (bkpinfo->nonbootable_backup) {869 mr_asprintf(&tmp, " NONBOOTABLE");870 } else {871 mr_asprintf(&tmp, " ");872 }873 874 mr_asprintf(&command,875 "mindi %s --custom '%s' '%s/images' '%s' '%s' \876 '%s' %ld '%s' '%s' '%s' \877 '%s' %s %ld '%s' '%s' '%s' '%s' %ld %d '%s'",878 tmp2,879 bkpinfo->tmpdir, // parameter #2880 bkpinfo->scratchdir, // parameter #3881 bkpinfo->kernel_path, // parameter #4882 tape_device, // parameter #5883 tape_size_sz, // parameter #6884 lines_in_filelist, // parameter #7 (INT)885 use_lzo_sz, // parameter #8886 cd_recovery_sz, // parameter #9887 bkpinfo->image_devs, // parameter #10888 broken_bios_sz, // parameter #11889 last_filelist_number, // parameter #12 (STRING)890 estimated_total_noof_slices, // parameter #13 (INT)891 devs_to_exclude, // parameter #14892 use_comp_sz, // parameter #15893 use_lilo_sz, // parameter #16894 use_star_sz, // parameter #17895 bkpinfo->internal_tape_block_size, // parameter #18 (LONG)896 bkpinfo->differential, // parameter #19 (INT)897 use_gzip_sz, // parameter #20 (STRING)898 tmp);899 mr_free(tmp);900 mr_free(tape_size_sz);901 mr_free(use_lzo_sz);902 mr_free(tape_device);903 mr_free(use_star_sz);904 mr_free(use_comp_sz);905 mr_free(broken_bios_sz);906 mr_free(cd_recovery_sz);907 mr_free(last_filelist_number);908 mr_free(devs_to_exclude);909 mr_free(use_lilo_sz);910 mr_free(use_gzip_sz);911 mr_free(tmp2);912 913 mr_msg(2, command);914 915 // popup_and_OK("Pausing");916 res = run_program_and_log_to_screen(command,917 "Generating boot+data disks");918 mr_free(command);919 920 932 if (bkpinfo->nonbootable_backup) { 921 933 res = 0; … … 1176 1188 closeout_tape(bkpinfo); 1177 1189 } else { 1178 /* write final ISO */1190 /* write final ISO/USB */ 1179 1191 res = write_final_iso_if_necessary(bkpinfo); 1180 1192 retval += res; … … 1868 1880 if (bkpinfo->nonbootable_backup) { 1869 1881 mr_msg(1, "Making nonbootable backup"); 1870 // FIXME --- change mkisofs string to MONDO_MKISOFS_NONBOOTABLE and add ' .' at end1871 1882 res = eval_call_to_make_ISO(bkpinfo, 1872 1883 "mkisofs -o '_ISO_' -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ .", … … 3563 3574 bkpinfo->media_size[g_current_media_number]) { 3564 3575 mr_asprintf(&tmp, 3565 "Warning! CD is too big. It occupies %ld KB, which is more than the %ld KB allowed.", 3566 (long) space_occupied_by_cd(bkpinfo->scratchdir), 3567 (long) bkpinfo->media_size[g_current_media_number]); 3576 "Warning! %s is too big. It occupies %ld KB, which is more than the %ld KB allowed.", 3577 media_descriptor_string(bkpinfo->backup_media_type), 3578 (long) space_occupied_by_cd(bkpinfo->scratchdir), 3579 (long) bkpinfo->media_size[g_current_media_number]); 3568 3580 log_to_screen(tmp); 3569 3581 mr_free(tmp); 3570 3582 } 3571 mr_asprintf(&isofile, "%s/%s/%s-%d.iso", bkpinfo->isodir, 3572 bkpinfo->nfs_remote_dir, bkpinfo->prefix, 3573 g_current_media_number); 3583 if (bkpinfo->backup_media_type != usb) { 3584 mr_asprintf(&isofile, "%s/%s/%s-%d.iso", bkpinfo->isodir, 3585 bkpinfo->nfs_remote_dir, bkpinfo->prefix, 3586 g_current_media_number); 3587 } else { 3588 } 3574 3589 for (that_one_was_ok = FALSE; !that_one_was_ok;) { 3575 res = make_iso_fs(bkpinfo, isofile); 3590 if (bkpinfo->backup_media_type != usb) { 3591 res = make_iso_fs(bkpinfo, isofile); 3592 } else { 3593 } 3576 3594 if (g_current_media_number == 1 && !res 3577 3595 && (bkpinfo->backup_media_type == cdr … … 3854 3872 3855 3873 setenv("MONDO_SHARE", MONDO_SHARE, 1); 3874 setenv("MONDORESTORECFG", MONDORESTORECFG, 1); 3875 setenv("MONDO_CACHE", MONDO_CACHE, 1); 3856 3876 } 3857 3877
Note:
See TracChangeset
for help on using the changeset viewer.