Changeset 3866 in MondoRescue
- Timestamp:
- Mar 7, 2024, 1:55:18 PM (12 months ago)
- Location:
- branches/3.3/mondo/src
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.3/mondo/src/common/libmondo-archive.c
r3860 r3866 344 344 if (bkpinfo->backup_media_type == dvd) { 345 345 #ifdef DVDRWFORMAT 346 if (!find_home_of_exe("dvd+rw-format")) { 346 if ((tmp = find_home_of_exe("dvd+rw-format")) == NULL) { 347 mr_free(tmp); 347 348 fatal_error("Cannot find dvd+rw-format. Please install it or fix your PATH."); 348 349 } 350 mr_free(tmp); 349 351 #endif 350 if (!find_home_of_exe("growisofs")) { 352 if ((tmp = find_home_of_exe("growisofs")) == NULL) { 353 mr_free(tmp); 351 354 fatal_error("Cannot find growisofs. Please install it or fix your PATH."); 352 355 } 356 mr_free(tmp); 353 357 } 354 358 … … 1695 1699 mr_asprintf(result_sz, "Call to mkisofs to make ISO (%s #%d) ", mds, g_current_media_number); 1696 1700 mr_free(mds); 1697 if (find_home_of_exe("xorriso")) { 1698 mr_asprintf(isofs_cmd, "%s", MONDO_XORRISO_CMD); 1699 } else if (find_home_of_exe("genisoimage")) { 1700 mr_asprintf(isofs_cmd, "%s", MONDO_GENISOIMAGE_CMD); 1701 if ((tmp = find_home_of_exe("xorriso")) != NULL) { 1702 mr_asprintf(isofs_cmd, "%s %s", tmp, MONDO_XORRISO_OPT); 1703 } else if ((tmp = find_home_of_exe("genisoimage")) != NULL) { 1704 mr_asprintf(isofs_cmd, "%s %s", tmp, MONDO_GENISOIMAGE_OPT); 1705 } else if ((tmp = find_home_of_exe("mkisofs")) != NULL) { 1706 mr_asprintf(isofs_cmd, "%s %s", tmp, MONDO_MKISOFS_OPT); 1707 } else if ((tmp = find_home_of_exe("wodim")) != NULL) { 1708 mr_asprintf(isofs_cmd, "%s %s", tmp, MONDO_WODIM_OPT); 1701 1709 } else { 1702 mr_asprintf(isofs_cmd, "%s", MONDO_MKISOFS_CMD); 1703 } 1710 fatal_error("Unable to find a command to create ISO among xorriso, genisoimage, mksiofs or wodim, please install one"); 1711 } 1712 mr_free(tmp); 1704 1713 if (bkpinfo->nonbootable_backup) { 1705 1714 log_msg(1, "Making nonbootable backup"); … … 2744 2753 mr_asprintf(checksum_line, "IGNORE"); 2745 2754 log_msg(2, "Not calculating checksum for %s: it would take too long", biggie_filename); 2746 if ( !find_home_of_exe("ntfsresize")) {2755 if ((tmp = find_home_of_exe("ntfsresize")) == NULL) { 2747 2756 fatal_error("ntfsresize not found"); 2748 2757 } 2749 mr_asprintf(command, "ntfsresize --force --info %s|grep '^You might resize at '|cut -d' ' -f5", biggie_filename); 2758 mr_asprintf(command, "%s --force --info %s|grep '^You might resize at '|cut -d' ' -f5", tmp, biggie_filename); 2759 mr_free(tmp); 2750 2760 log_it("command = %s", command); 2751 2761 tmp = call_program_and_get_last_line_of_output(command); -
branches/3.3/mondo/src/common/libmondo-cli.c
r3857 r3866 207 207 } 208 208 209 if (!find_home_of_exe("afio")) { 210 if (find_home_of_exe("star")) { 209 if ((tmp = find_home_of_exe("afio")) == NULL) { 210 mr_free(tmp); 211 if ((tmp = find_home_of_exe("star")) != NULL) { 212 mr_free(tmp); 211 213 flag_set['R'] = TRUE; 212 214 log_msg(1, "Using star instead of afio"); 213 215 } else { 216 mr_free(tmp); 214 217 fatal_error("Neither afio nor star is installed. Please install at least one."); 215 218 } … … 221 224 fatal_error("You may not use star and lzop at the same time."); 222 225 } 223 if (!find_home_of_exe("star")) { 224 fatal_error("Please install 'star' RPM or tarball if you are going to use -R. Thanks."); 225 } 226 if ((tmp = find_home_of_exe("star")) == NULL) { 227 mr_free(tmp); 228 fatal_error("Please install 'star' if you are going to use -R. Thanks."); 229 } 230 mr_free(tmp); 226 231 } 227 232 … … 363 368 } 364 369 if (! bkpinfo->restore_data) { 365 if (!find_home_of_exe("growisofs")) {366 fatal_error("Please install growisofs (probably part of dvd+rw-tools). If you want DVD support, you need it.");367 }368 if (!find_home_of_exe("dvd+rw-format")) {369 fatal_error("Please install dvd+rw-format (probably part of dvd+rw-tools). If you want DVD support, you need it.");370 }371 370 if (!flag_set['s']) { 372 371 sprintf(flag_val['s'], "%d", DEFAULT_DVD_DISK_SIZE); // 4.7 salesman's GB = 4.482 real GB = 4582 MB … … 555 554 } 556 555 if (flag_set['z']) { 557 if ( find_home_of_exe("getfattr")) {556 if ((tmp = find_home_of_exe("getfattr")) != NULL) { 558 557 mr_asprintf(g_getfattr,"getfattr"); 559 558 } 560 if (find_home_of_exe("getfacl")) { 561 mr_asprintf(g_getfacl,"getfacl"); 562 } 559 mr_free(tmp); 560 if ((tmp = find_home_of_exe("getfacl")) != NULL) { 561 mr_asprintf(g_getfattr,"getfaacl"); 562 } 563 mr_free(tmp); 563 564 } 564 565 -
branches/3.3/mondo/src/common/libmondo-devices.c
r3859 r3866 535 535 } 536 536 run_program_and_log_output("insmod ide-scsi", -1); 537 if ( find_home_of_exe("cdrecord")) {538 mr_asprintf(cdr_exe, "cdrecord");539 } else {540 mr_asprintf(cdr_exe, "dvdrecord");541 } 542 if ( find_home_of_exe(cdr_exe)) {537 if ((cdr_exe = find_home_of_exe("cdrecord")) == NULL) { 538 if ((cdr_exe = find_home_of_exe("wodim")) == NULL) { 539 cdr_exe = find_home_of_exe("dvdrecord"); 540 } 541 } 542 if (cdr_exe != NULL) { 543 543 mr_asprintf(command, "%s -scanbus 2> /dev/null | tr -s '\t' ' ' | grep \"[0-9]*,[0-9]*,[0-9]*\" | grep -v \"[0-9]*) \\*\" | grep -E '[D|C][V|D]' | cut -d' ' -f2 | head -n1", cdr_exe); 544 544 tmp = call_program_and_get_last_line_of_output(command); … … 594 594 static char the_last_place_i_found_it[MAX_STR_LEN] = ""; 595 595 596 /*@ intialize *************************************************** */ 597 malloc_string(tmp); 598 malloc_string(phrase_one); 599 malloc_string(mountpoint); 600 596 assert_string_is_neither_NULL_nor_zerolength(output); 601 597 output[0] = '\0'; 602 phrase_one[0] = '\0';603 604 /*@ end vars **************************************************** */605 598 606 599 if (g_cdrom_drive_is_here[0] && !isdigit(g_cdrom_drive_is_here[0])) { 607 600 strcpy(output, g_cdrom_drive_is_here); 608 601 log_msg(3, "Been there, done that. Returning %s", output); 609 retval = 0; 610 goto end_of_find_cdrom_device; 602 return(0); 611 603 } 612 604 if (the_last_place_i_found_it[0] != '\0' && !try_to_mount) { 613 605 strcpy(output, the_last_place_i_found_it); 614 606 log_msg(3, "find_cdrom_device() --- returning last found location - '%s'", output); 615 retval = 0; 616 goto end_of_find_cdrom_device; 617 } 618 619 sprintf(mountpoint, "%s/cd.mnt", bkpinfo->tmpdir); 620 make_hole_for_dir(mountpoint); 621 622 if (find_home_of_exe("cdrecord")) { 623 mr_asprintf(cdr_exe, "cdrecord"); 624 } else { 625 mr_asprintf(cdr_exe, "dvdrecord"); 626 } 627 tmp[0] = '\0'; 628 if (!find_home_of_exe(cdr_exe)) { 607 return(0); 608 } 609 610 if ((cdr_exe = find_home_of_exe("cdrecord")) == NULL) { 611 if ((cdr_exe = find_home_of_exe("wodim")) == NULL) { 612 cdr_exe = find_home_of_exe("dvdrecord"); 613 } 614 } 615 616 if (cdr_exe == NULL) { 629 617 strcpy(output, "/dev/cdrom"); 630 618 log_msg(4, "Can't find cdrecord; assuming %s", output); 631 619 if (!does_device_exist(output)) { 632 620 log_msg(4, "That didn't work. Sorry."); 633 retval = 1; 634 goto end_of_find_cdrom_device; 621 return(1) 635 622 } else { 636 retval = 0; 637 goto end_of_find_cdrom_device; 623 return(0) 638 624 } 639 625 } … … 646 632 mr_free(cdr_exe); 647 633 mr_free(command); 648 return 634 return(1); 649 635 } 650 636 mr_free(command); 637 638 /*@ intialize *************************************************** */ 639 malloc_string(tmp); 640 malloc_string(phrase_one); 641 642 phrase_one[0] = '\0'; 643 tmp[0] = '\0'; 644 645 /*@ end vars **************************************************** */ 646 651 647 652 648 for (tmp1 = fgets(tmp, MAX_STR_LEN, fin); !feof(fin) && (tmp1 != NULL); … … 810 806 #endif 811 807 808 mr_asprintf(mountpoint, "%s/cd.mnt", bkpinfo->tmpdir); 809 make_hole_for_dir(mountpoint); 810 812 811 if (found_it && try_to_mount) { 813 812 if (mount_CDROM_here(output, mountpoint)) { … … 829 828 } 830 829 unlink(mountpoint); 830 mr_free(mountpoint); 831 831 832 832 if (found_it) { … … 865 865 paranoid_free(tmp); 866 866 paranoid_free(phrase_one); 867 paranoid_free(mountpoint);868 867 return (retval); 869 868 } … … 2805 2804 2806 2805 if (ask_me_yes_or_no("Do you want to backup extended attributes?")) { 2807 if (find_home_of_exe("getfattr")) { 2808 mr_free(g_getfattr); 2809 mr_asprintf(g_getfattr,"getfattr"); 2810 } 2811 if (find_home_of_exe("getfacl")) { 2812 mr_free(g_getfacl); 2813 mr_asprintf(g_getfacl,"getfacl"); 2814 } 2806 mr_free(g_getfattr); 2807 g_getfattr = find_home_of_exe("getfattr"); 2808 mr_free(g_getfacl); 2809 g_getfacl = find_home_of_exe("getfacl"); 2815 2810 log_it("Backup of extended attributes"); 2816 2811 } -
branches/3.3/mondo/src/common/libmondo-filelist.c
r3753 r3866 654 654 655 655 656 int set_fattr_list(char *masklist, char *fattr_fname) 657 { 658 if (find_home_of_exe("setfattr")) { 659 return (set_EXAT_list(masklist, fattr_fname, "setfattr")); 656 int set_fattr_list(char *masklist, char *fattr_fname) { 657 658 int i = 0; 659 char * tmp = NULL; 660 661 if ((tmp = find_home_of_exe("setfattr")) != NULL) { 662 i = set_EXAT_list(masklist, fattr_fname, tmp) 663 mr_free(tmp); 660 664 } else { 661 665 log_msg(1, "ERROR: set_EXAT_list: setfattr doesn't exist"); 662 return(0); 663 } 664 } 665 666 667 668 int set_acl_list(char *masklist, char *acl_fname) 669 { 670 if (find_home_of_exe("setfacl")) { 671 return (set_EXAT_list(masklist, acl_fname, "setfacl")); 666 } 667 return(i); 668 } 669 670 671 672 int set_acl_list(char *masklist, char *acl_fname) { 673 674 int i = 0; 675 char * tmp = NULL; 676 677 if ((tmp = find_home_of_exe("setfacl")) != NULL) { 678 i = set_EXAT_list(masklist, facl_fname, tmp) 679 mr_free(tmp); 672 680 } else { 673 681 log_msg(1, "ERROR: set_EXAT_list: setfacl doesn't exist"); 674 return(0);675 }682 } 683 return(i); 676 684 } 677 685 -
branches/3.3/mondo/src/common/libmondo-files-EXT.h
r3861 r3866 11 11 extern void exclude_nonexistent_files(char *inout); 12 12 extern int figure_out_kernel_path_interactively_if_necessary(char *kernel); 13 extern char *find_home_of_exe(c har *fname);13 extern char *find_home_of_exe(const char *fname); 14 14 extern int get_trackno_from_logfile(char *logfile); 15 15 extern int grab_percentage_from_last_line_of_file(char *filename); -
branches/3.3/mondo/src/common/libmondo-files.c
r3861 r3866 317 317 * Find location of specified executable in user's PATH. 318 318 * @param fname The basename of the executable to search for (e.g. @c afio). 319 * @return The full path to the executable, or "" if it does not exist, or NULLif @c file could not be found.320 * @note The returned string points to static storage that will be overwritten with each call.319 * @return The full path to the executable, or NULL if it does not exist, or if @c file could not be found. 320 * @note The returned string points to an allocated string that needs to be freed by caller 321 321 * @bug The checks with @c file and @c dirname seem pointless. If @c incoming is "", then you're calling 322 322 * <tt>dirname 2\>/dev/null</tt> or <tt>file 2\>/dev/null | cut -d':' -f1 2\>/dev/null</tt>, which basically amounts 323 323 * to nothing. 324 324 */ 325 char *find_home_of_exe(c har *fname)325 char *find_home_of_exe(const char *fname) 326 326 { 327 327 /*@ buffers ********************* */ 328 static char output[MAX_STR_LEN]; 329 char *incoming = NULL; 328 char *output = NULL; 330 329 char *command = NULL; 331 330 … … 333 332 334 333 assert_string_is_neither_NULL_nor_zerolength(fname); 335 mr_asprintf(command, "which %s 2> /dev/null", fname); 336 incoming = call_program_and_get_last_line_of_output(command); 334 335 mr_asprintf(command, "whereis %s 2>/dev/null | awk '{ print $2 }'", fname); 336 /* either "" or the string can't be NULL*/ 337 output = call_program_and_get_last_line_of_output(command); 337 338 mr_free(command); 338 339 339 if (incoming[0] == '\0') { 340 if (system("which file > /dev/null 2> /dev/null")) { 341 mr_free(incoming); 342 output[0] = '\0'; 343 return(NULL); // forget it :) 344 } 345 mr_asprintf(command, "file %s 2> /dev/null | cut -d':' -f1 2> /dev/null", incoming); 346 mr_free(incoming); 347 348 incoming = call_program_and_get_last_line_of_output(command); 340 if (output[0] == '\0') { 341 mr_asprintf(command, "which %s 2> /dev/null", fname); 342 /* either "" or the string can't be NULL*/ 343 mr_free(output); 344 output = call_program_and_get_last_line_of_output(command); 349 345 mr_free(command); 350 346 } 351 if (incoming[0] == '\0') { 352 mr_asprintf(command, "dirname %s 2> /dev/null", incoming); 353 mr_free(incoming); 354 355 incoming = call_program_and_get_last_line_of_output(command); 356 mr_free(command); 357 } 358 strcpy(output, incoming); 347 359 348 if (output[0] != '\0' && does_file_exist(output)) { 360 log_msg(4, "find_home_of_exe --- Found %s at %s", fname, incoming); 349 log_msg(4, "find_home_of_exe --- Found %s at %s", fname, output); 350 return(output); 361 351 } else { 362 output[0] = '\0';363 352 log_msg(4, "find_home_of_exe --- Could not find %s", fname); 364 }365 mr_free(incoming);366 if (!output[0]) {367 353 return(NULL); 368 } else {369 return(output);370 354 } 371 355 } … … 777 761 if (0 == strncmp(fname, "/dev/", 5)) { 778 762 if (is_dev_an_NTFS_dev(fname)) { 779 if ( !find_home_of_exe("ntfsresize")) {763 if ((tmp = find_home_of_exe("ntfsresize")) == NULL) { 780 764 mr_free(tmp); 781 765 mr_free(fname); 782 766 fatal_error("ntfsresize not found"); 783 767 } 768 mr_asprintf(command, "%s --force --info %s|grep '^You might resize at '|cut -d' ' -f5", tmp, fname); 784 769 mr_free(tmp); 785 786 mr_asprintf(command, "ntfsresize --force --info %s|grep '^You might resize at '|cut -d' ' -f5", fname);787 770 log_it("command = %s", command); 788 771 tmp = call_program_and_get_last_line_of_output(command); … … 903 886 { 904 887 /*@ buffers *** */ 905 char *command = NULL; 906 int res = 0; 907 908 mr_asprintf(command, "which %s > /dev/null 2> /dev/null", fname); 909 res = system(command); 910 mr_free(command); 911 912 if (res) { 888 char *tmp = NULL; 889 890 tmp = find_home_of_exe(fname); 891 if (tmp == NULL) { 913 892 log_to_screen("Please install '%s'. I cannot find it on your system.", fname); 914 log_to_screen("There may be hyperlink at http://www.mondorescue.org which");915 log_to_screen("will take you to the relevant (missing) package.");916 893 return(1); 917 894 } else { 895 mr_free(tmp); 918 896 return(0); 919 897 } 920 898 } 921 922 923 924 899 925 900 -
branches/3.3/mondo/src/common/libmondo-files.h
r3861 r3866 12 12 void exclude_nonexistent_files(char *inout); 13 13 int figure_out_kernel_path_interactively_if_necessary(char *kernel); 14 char *find_home_of_exe(char *fname);15 14 int get_trackno_from_logfile(char *logfile); 16 15 int grab_percentage_from_last_line_of_file(char *filename); -
branches/3.3/mondo/src/common/libmondo-fork.c
r3863 r3866 608 608 int res = -1; 609 609 char *command = NULL; 610 char *tmp = NULL; 610 611 611 612 if (!does_file_exist(input_device)) { 612 613 fatal_error("input device does not exist"); 613 614 } 614 if ( !find_home_of_exe("ntfsclone")) {615 if ((tmp = find_home_of_exe("ntfsclone")) == NULL) { 615 616 fatal_error("ntfsclone not found"); 616 617 } 617 mr_asprintf(command, "ntfsclone --rescue --force --save-image --overwrite %s %s", output_fname, input_device); 618 mr_asprintf(command, "%s --rescue --force --save-image --overwrite %s %s", tmp, output_fname, input_device); 619 mr_free(tmp); 618 620 res = run_program_and_log_output(command, 5); 619 621 mr_free(command); … … 717 719 int res = -1; 718 720 char *command = NULL; 719 720 if ( !find_home_of_exe("ntfsclone")) { 721 char *tmp = NULL; 722 723 if ((tmp = find_home_of_exe("ntfsclone")) == NULL) { 721 724 fatal_error("ntfsclone not found"); 722 725 } 723 mr_asprintf(command, "ntfsclone --rescue --force --restore-image --overwrite %s %s", output_device, input_fifo); 726 mr_asprintf(command, "%s --rescue --force --restore-image --overwrite %s %s", tmp, output_device, input_fifo); 727 mr_free(tmp); 724 728 res = run_program_and_log_output(command, 5); 725 729 mr_free(command); -
branches/3.3/mondo/src/common/libmondo-stream.c
r3860 r3866 315 315 log_to_screen("I am looking for your tape streamer. Please wait."); 316 316 mr_free(dev); 317 if ( find_home_of_exe("cdrecord")) {318 mr_asprintf(cdr_exe, "cdrecord");319 } else {320 mr_asprintf(cdr_exe, "dvdrecord");317 if ((cdr_exe = find_home_of_exe("cdrecord")) != NULL) { 318 if ((cdr_exe = find_home_of_exe("wodim")) != NULL) { 319 cdr_exe = find_home_of_exe("dvdrecord"); 320 } 321 321 } 322 322 mr_asprintf(command, "%s -scanbus 2> /dev/null | grep -i tape | wc -l", cdr_exe); -
branches/3.3/mondo/src/include/my-stuff.h
r3754 r3866 177 177 178 178 #define MONDO_MKISOFS_CMD "mkisofs" 179 #define MONDO_GENISOIMAGE_CMD "genisoimage" 180 #define MONDO_XORRISO_CMD "xorriso -as mkisofs" 179 #define MONDO_MKISOFS_OPT "" 180 #define MONDO_WODIM_OPT "" 181 #define MONDO_GENISOIMAGE_OPT "" 182 #define MONDO_XORRISO_OPT "-as mkisofs" 181 183 #define MONDO_MKISOFS " -J -r -v -p MondoRescue -publisher http://www.mondorescue.org -A MondoRescue -V _CD#_ " 182 184 #define MONDO_MKISOFS_CMS " -b syslinux/isolinux.bin -c syslinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table " -
branches/3.3/mondo/src/mondorestore/mondo-prep.c
r3859 r3866 201 201 log_it("STARTING"); 202 202 log_msg(1, "OK, opened i-want-my-lvm. Shutting down LVM volumes..."); 203 if ( find_home_of_exe("lvm")) { // found it :) cool204 mr_asprintf(lvscan_sz, " lvm lvscan");205 mr_asprintf(lvremove_sz, " lvm lvremove");206 mr_asprintf(vgscan_sz, " lvm vgscan");207 mr_asprintf(pvscan_sz, " lvm pvscan");208 mr_asprintf(vgchange_sz, " lvm vgchange");209 mr_asprintf(vgremove_sz, " lvm vgremove -f");203 if ((tmp = find_home_of_exe("lvm")) != NULL) { // found it :) cool 204 mr_asprintf(lvscan_sz, "%s lvscan", tmp); 205 mr_asprintf(lvremove_sz, "%s lvremove", tmp); 206 mr_asprintf(vgscan_sz, "%s vgscan", tmp); 207 mr_asprintf(pvscan_sz, "%s pvscan", tmp); 208 mr_asprintf(vgchange_sz, "%s vgchange", tmp); 209 mr_asprintf(vgremove_sz, "%s vgremove -f", tmp); 210 210 } else { 211 211 mr_asprintf(lvscan_sz, "lvscan"); … … 216 216 mr_asprintf(vgremove_sz, "vgremove"); 217 217 } 218 mr_free(tmp); 219 218 220 mr_asprintf(cmd, "for i in `%s | cut -d\"'\" -f2 | sort -r` ; do echo \"Shutting down lv $i\" >> %s ; %s -f $i; done", lvscan_sz, MONDO_LOGFILE, lvremove_sz); 219 221 mr_free(lvscan_sz); -
branches/3.3/mondo/src/mondorestore/mondo-rstr-compare.c
r3822 r3866 259 259 260 260 if (compressor_exe) { 261 mr_asprintf(tmp, "%s", compressor_exe); 262 if (!find_home_of_exe(tmp)) { 261 if ((tmp = find_home_of_exe(compressor_exe)) == NULL) { 263 262 mr_free(tmp); 264 263 mr_free(compressor_exe); … … 266 265 fatal_error("(compare_a_tarball) Compression program missing"); 267 266 } 268 mr_free(tmp);269 267 270 268 if (use_star) { … … 278 276 } else { 279 277 // afio 280 mr_asprintf(tmp, "%s", compressor_exe);281 mr_free(compressor_exe);282 278 mr_asprintf(compressor_exe, "-P %s -Z", tmp); 283 mr_free(tmp);284 }279 } 280 mr_free(tmp); 285 281 } 286 282 … … 541 537 if (g_text_mode) { 542 538 save_mountlist_to_disk(mountlist, g_mountlist_fname); 543 sprintf(tmp, "%s %s", find_my_editor(), g_mountlist_fname); 544 res = system(tmp); 539 tmp = find_my_editor(); 540 res = mr_system("%s %s", tmp, g_mountlist_fname); 541 mr_free(tmp); 545 542 load_mountlist(mountlist, g_mountlist_fname); 546 543 } else { -
branches/3.3/mondo/src/mondorestore/mondo-rstr-tools.c
r3854 r3866 405 405 /** malloc **/ 406 406 char *tmp = NULL; 407 char *tmp1 = NULL; 407 408 char *command = NULL; 408 409 char *mountdir = NULL; … … 437 438 mr_strcat(additional_parameters, "-o ro"); 438 439 } 439 if ( find_home_of_exe("setfattr")) {440 if ((tmp = find_home_of_exe("setfattr")) != NULL) { 440 441 mr_strcat(additional_parameters, ",user_xattr"); 441 442 } 442 if (find_home_of_exe("setfacl")) { 443 mr_free(tmp); 444 if ((tmp = find_home_of_exe("setfacl")) != NULL) { 443 445 mr_strcat(additional_parameters, ",acl"); 444 446 } 447 mr_free(tmp); 445 448 } 446 449 … … 780 783 read_cfg_var(cfg_file, "acl", value); 781 784 if (strstr(value, "TRUE")) { 782 mr_asprintf(g_getfacl,"setfacl"); 783 log_msg(1, "We will restore ACLs"); 784 if (! find_home_of_exe("setfacl")) { 785 if ((tmp = find_home_of_exe("setfacl")) == NULL) { 785 786 log_msg(1, "Unable to restore ACLs as no setfacl found"); 786 } 787 } else { 788 mr_asprintf(g_getfacl,"%s", tmp); 789 log_msg(1, "We will restore ACLs"); 790 } 791 mr_free(tmp); 787 792 } 788 793 read_cfg_var(cfg_file, "xattr", value); 789 794 if (strstr(value, "TRUE")) { 790 mr_asprintf(g_getfattr,"setfattr"); 791 log_msg(1, "We will restore XATTRs"); 792 if (! find_home_of_exe("setfattr")) { 795 if ((tmp = find_home_of_exe("setfattr")) == NULL) { 793 796 log_msg(1, "Unable to restore XATTRs as no setfattr found"); 794 } 797 } else { 798 mr_asprintf(g_getfattr,"%s", tmp); 799 log_msg(1, "We will restore XATTRs"); 800 } 801 mr_free(tmp); 795 802 } 796 803 … … 1390 1397 * Attempt to find the user's editor. 1391 1398 * @return The editor found ("vi" if none could be found). 1392 * @note The returned string points to static storage that will be overwritten with each call.1399 * @note The returned string points to an allocated storage that needs to be freed by caller 1393 1400 */ 1394 1401 char *find_my_editor(void) { 1395 1402 1396 static char output[MAX_STR_LEN]; 1397 if (find_home_of_exe("pico")) { 1398 strcpy(output, "pico"); 1399 } else if (find_home_of_exe("nano")) { 1400 strcpy(output, "nano"); 1401 } else if (find_home_of_exe("e3em")) { 1402 strcpy(output, "e3em"); 1403 } else if (find_home_of_exe("e3vi")) { 1404 strcpy(output, "e3vi"); 1405 } else { 1406 strcpy(output, "vi"); 1407 } 1408 if (!find_home_of_exe(output)) { 1409 log_msg(2, " (find_my_editor) --- warning - %s not found", output); 1403 char *output = NULL ; 1404 1405 if ((output = find_home_of_exe("pico")) == NULL) { 1406 if ((output = find_home_of_exe("nano")) == NULL) { 1407 if ((output = find_home_of_exe("e3em")) == NULL) { 1408 if ((output = find_home_of_exe("e3vi")) == NULL) { 1409 if ((output = find_home_of_exe("vim")) == NULL) { 1410 output = find_home_of_exe("vi"); 1411 } 1412 } 1413 } 1414 } 1415 } 1416 if (output == NULL) { 1417 log_msg(2, " (find_my_editor) --- warning - no editor found, even vi"); 1410 1418 } 1411 1419 return (output); … … 1459 1467 popup_and_OK("The mountlist was changed. You will now edit fstab, mtab, device.map and menu.lst/grub.cfg in order to fix grub install"); 1460 1468 } 1461 if (!g_text_mode) { 1462 newtSuspend(); 1469 editor = find_my_editor()); 1470 if (editor == NULL) { 1471 popup_and_OK("No editor found. You won't be able to edit conf files"); 1472 } else { 1473 if (!g_text_mode) { 1474 newtSuspend(); 1475 } 1476 mr_asprintf(tmp, "chroot %s %s /etc/fstab", MNT_RESTORING, editor); 1477 paranoid_system(tmp); 1478 mr_free(tmp); 1479 1480 mr_asprintf(tmp, "chroot %s %s /etc/mtab", MNT_RESTORING, editor); 1481 paranoid_system(tmp); 1482 mr_free(tmp); 1483 1484 if (does_file_exist(MNT_RESTORING"/boot/grub/menu.lst")) { 1485 mr_asprintf(tmp, "chroot %s %s /boot/grub/menu.lst", MNT_RESTORING, editor); 1486 } else if (does_file_exist(MNT_RESTORING"/boot/grub/grub.cfg")) { 1487 mr_asprintf(tmp, "chroot %s %s /boot/grub/grub.cfg", MNT_RESTORING, editor); 1488 } else if (does_file_exist(MNT_RESTORING"/boot/grub2/grub.cfg")) { 1489 mr_asprintf(tmp, "chroot %s %s /boot/grub2/grub.cfg", MNT_RESTORING, editor); 1490 } 1491 paranoid_system(tmp); 1492 mr_free(tmp); 1493 1494 if (does_file_exist(MNT_RESTORING"/boot/grub/device.map")) { 1495 mr_asprintf(tmp, "chroot %s %s /boot/grub/device.map", MNT_RESTORING, editor); 1496 } else if (does_file_exist(MNT_RESTORING"/boot/grub2/device.map")) { 1497 mr_asprintf(tmp, "chroot %s %s /boot/grub2/device.map", MNT_RESTORING, editor); 1498 } 1499 paranoid_system(tmp); 1500 mr_free(tmp); 1501 if (!g_text_mode) { 1502 newtResume(); 1503 } 1463 1504 } 1464 mr_asprintf(editor, "%s", find_my_editor());1465 mr_asprintf(tmp, "chroot %s %s /etc/fstab", MNT_RESTORING, editor);1466 paranoid_system(tmp);1467 mr_free(tmp);1468 1469 mr_asprintf(tmp, "chroot %s %s /etc/mtab", MNT_RESTORING, editor);1470 paranoid_system(tmp);1471 mr_free(tmp);1472 1473 if (does_file_exist(MNT_RESTORING"/boot/grub/menu.lst")) {1474 mr_asprintf(tmp, "chroot %s %s /boot/grub/menu.lst", MNT_RESTORING, editor);1475 } else if (does_file_exist(MNT_RESTORING"/boot/grub/grub.cfg")) {1476 mr_asprintf(tmp, "chroot %s %s /boot/grub/grub.cfg", MNT_RESTORING, editor);1477 } else if (does_file_exist(MNT_RESTORING"/boot/grub2/grub.cfg")) {1478 mr_asprintf(tmp, "chroot %s %s /boot/grub2/grub.cfg", MNT_RESTORING, editor);1479 }1480 paranoid_system(tmp);1481 mr_free(tmp);1482 1483 if (does_file_exist(MNT_RESTORING"/boot/grub/device.map")) {1484 mr_asprintf(tmp, "chroot %s %s /boot/grub/device.map", MNT_RESTORING, editor);1485 } else if (does_file_exist(MNT_RESTORING"/boot/grub2/device.map")) {1486 mr_asprintf(tmp, "chroot %s %s /boot/grub2/device.map", MNT_RESTORING, editor);1487 }1488 paranoid_system(tmp);1489 mr_free(tmp);1490 1505 mr_free(editor); 1491 1506 1492 if (!g_text_mode) {1493 newtResume();1494 }1495 1507 mr_asprintf(command, "mr-stabgrub-me %s", boot_device); 1496 1508 res = run_program_and_log_output(command, 1); … … 1587 1599 1588 1600 if (res) { 1589 popup_and_OK 1590 ("You will now edit fstab and elilo.conf, to make sure they match your new mountlist."); 1601 popup_and_OK("You will now edit fstab and elilo.conf, to make sure they match your new mountlist."); 1591 1602 for (done = FALSE; !done;) { 1592 if (!g_text_mode) { 1593 newtSuspend(); 1603 editor = find_my_editor(); 1604 if (editor == NULL) { 1605 popup_and_OK("No editor found. You won't be able to edit conf files"); 1606 done = TRUE; 1607 } else { 1608 1609 if (!g_text_mode) { 1610 newtSuspend(); 1611 } 1612 mr_asprintf(tmp, "chroot %s %s /etc/fstab", MNT_RESTORING, editor); 1613 paranoid_system(tmp); 1614 mr_free(tmp); 1615 1616 mr_asprintf(tmp, "chroot %s %s /etc/elilo.conf", MNT_RESTORING, editor); 1617 paranoid_system(tmp); 1618 mr_free(tmp); 1619 mr_free(editor); 1620 1621 if (!g_text_mode) { 1622 newtResume(); 1623 } 1624 // newtCls(); 1625 if (ask_me_yes_or_no("Edit them again?")) { 1626 continue; 1627 } 1628 done = TRUE; 1594 1629 } 1595 mr_asprintf(editor, "%s", find_my_editor());1596 1597 mr_asprintf(tmp, "chroot %s %s /etc/fstab", MNT_RESTORING, editor);1598 paranoid_system(tmp);1599 mr_free(tmp);1600 1601 mr_asprintf(tmp, "chroot %s %s /etc/elilo.conf", MNT_RESTORING, editor);1602 paranoid_system(tmp);1603 mr_free(tmp);1604 1630 mr_free(editor); 1605 1606 if (!g_text_mode) {1607 newtResume();1608 }1609 // newtCls();1610 if (ask_me_yes_or_no("Edit them again?")) {1611 continue;1612 }1613 done = TRUE;1614 1631 } 1615 1632 } else { … … 1666 1683 ("You will now edit fstab and lilo.conf, to make sure they match your new mountlist."); 1667 1684 for (done = FALSE; !done;) { 1668 if (!g_text_mode) { 1669 newtSuspend(); 1685 editor = find_my_editor(); 1686 if (editor == NULL) { 1687 popup_and_OK("No editor found. You won't be able to edit conf files"); 1688 } else { 1689 if (!g_text_mode) { 1690 newtSuspend(); 1691 } 1692 mr_asprintf(tmp, "%s " MNT_RESTORING "/etc/fstab", editor); 1693 paranoid_system(tmp); 1694 mr_free(tmp); 1695 1696 mr_asprintf(tmp, "%s " MNT_RESTORING "/etc/lilo.conf", editor); 1697 paranoid_system(tmp); 1698 mr_free(tmp); 1699 mr_free(editor); 1700 1701 if (!g_text_mode) { 1702 newtResume(); 1703 } 1704 // newtCls(); 1705 if (ask_me_yes_or_no("Edit them again?")) { 1706 continue; 1707 } 1670 1708 } 1671 mr_asprintf(editor, "%s", find_my_editor());1672 1673 mr_asprintf(tmp, "%s " MNT_RESTORING "/etc/fstab", editor);1674 paranoid_system(tmp);1675 mr_free(tmp);1676 1677 mr_asprintf(tmp, "%s " MNT_RESTORING "/etc/lilo.conf", editor);1678 paranoid_system(tmp);1679 mr_free(tmp);1680 1709 mr_free(editor); 1681 1710 1682 if (!g_text_mode) { 1683 newtResume(); 1684 } 1685 // newtCls(); 1686 if (ask_me_yes_or_no("Edit them again?")) { 1687 continue; 1688 } 1689 res = 1690 run_program_and_log_output("chroot " MNT_RESTORING 1691 " lilo -L", 3); 1711 res = run_program_and_log_output("chroot " MNT_RESTORING " lilo -L", 3); 1692 1712 if (res) { 1693 res = 1694 run_program_and_log_output("chroot " MNT_RESTORING 1695 " lilo", 3); 1713 res = run_program_and_log_output("chroot " MNT_RESTORING " lilo", 3); 1696 1714 } 1697 1715 if (res) { 1698 done = 1699 ask_me_yes_or_no 1700 ("LILO failed. Re-edit system files?"); 1716 done = ask_me_yes_or_no("LILO failed. Re-edit system files?"); 1701 1717 } else { 1702 1718 done = TRUE; … … 1768 1784 mvaddstr_and_log_it(g_currentY, 0, "Modifying fstab and restoring MBR... "); 1769 1785 for (done = FALSE; !done;) { 1770 if (!run_program_and_log_output("which vi", FALSE)) { 1771 popup_and_OK("You will now edit fstab"); 1786 popup_and_OK("You will now edit fstab"); 1787 editor = find_my_editor()); 1788 if (editor == NULL) { 1789 popup_and_OK("No editor found. You won't be able to edit conf files"); 1790 } else { 1772 1791 if (!g_text_mode) { 1773 1792 newtSuspend(); 1774 1793 } 1775 mr_asprintf(editor, "%s", find_my_editor());1776 1794 mr_asprintf(tmp, "%s " MNT_RESTORING "/etc/fstab", editor); 1777 mr_free(editor);1778 1795 1779 1796 paranoid_system(tmp); … … 1783 1800 } 1784 1801 } 1802 mr_free(editor); 1803 1785 1804 popup_and_get_string("Boot device", "Please confirm/enter the boot device. If in doubt, try /dev/hda", boot_device, MAX_STR_LEN / 4); 1786 1805 mr_asprintf(command, "mr-stabraw-me %s", boot_device); -
branches/3.3/mondo/src/mondorestore/mondo-rstr-tools.h
r2682 r3866 20 20 int run_elilo(bool); 21 21 int run_raw_mbr(bool offer_to_hack_scripts, char *bd); 22 char *find_my_editor(void);23 22 void streamline_changes_file(char *, char *); 24 23 void set_signals(int on); -
branches/3.3/mondo/src/mondorestore/mondorestore.c
r3862 r3866 207 207 mr_asprintf(tmp1,"%s/var/lib/multipath/bindings",bkpinfo->restore_path); 208 208 (void)unlink(tmp1); 209 paranoid_free(tmp1);209 mr_free(tmp1); 210 210 211 211 /* Edit multipath.conf if needed to adapt wwid */ … … 214 214 log_msg(2, "We may need to clean /etc/multipath.conf"); 215 215 } else { 216 paranoid_free(tmp1);216 mr_free(tmp1); 217 217 return; 218 218 } 219 paranoid_free(tmp1);219 mr_free(tmp1); 220 220 221 221 if (bkpinfo->restore_mode != nuke) { 222 mr_asprintf(editor, "%s", find_my_editor());222 editor = find_my_editor(); 223 223 mr_asprintf(tmp1,"chroot %s %s /etc/multipath.conf", MNT_RESTORING, editor); 224 224 popup_and_OK("You will now edit multipath.conf"); … … 230 230 newtResume(); 231 231 } 232 paranoid_free(tmp1);233 paranoid_free(editor);232 mr_free(tmp1); 233 mr_free(editor); 234 234 } else { 235 235 log_to_screen("Non-interactive mode: no way to give you the keyboard so that you edit your multipath.conf. Hope it's OK"); … … 1767 1767 1768 1768 log_msg(1, "restoring everything"); 1769 if ( !find_home_of_exe("petris") && !g_text_mode) {1769 if (((tmp = find_home_of_exe("petris")) != NULL) && !g_text_mode) { 1770 1770 newtDrawRootText(0, g_noof_rows - 2, 1771 1771 "Press ALT-<left cursor> twice to play Petris :-) "); 1772 1772 newtRefresh(); 1773 1773 } 1774 mr_free(tmp); 1774 1775 mvaddstr_and_log_it(g_currentY, 0, "Preparing to read your archives"); 1775 1776 mount_media(); … … 1842 1843 1843 1844 /** needs malloc **********/ 1845 char *tmp = NULL; 1844 1846 char *tmp1 = NULL; 1845 1847 char *fstab_fname = NULL; … … 1881 1883 if (g_text_mode) { 1882 1884 save_mountlist_to_disk(mountlist, g_mountlist_fname); 1883 mr_asprintf(tmp1, "%s %s", find_my_editor(), g_mountlist_fname); 1885 tmp = find_my_editor(); 1886 mr_asprintf(tmp1, "%s %s", tmp, g_mountlist_fname); 1887 mr_free(tmp); 1884 1888 res = system(tmp1); 1885 1889 mr_free(tmp1);
Note:
See TracChangeset
for help on using the changeset viewer.