Changeset 1081 in MondoRescue for trunk/mondo/src/mondorestore/mondo-rstr-tools.c
- Timestamp:
- Jan 28, 2007, 11:20:07 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mondo/src/mondorestore/mondo-rstr-tools.c
r1043 r1081 1 /* 1 /*************************************************************************** 2 2 * $Id$ 3 **/ 3 */ 4 4 5 5 6 #include <unistd.h> 6 7 7 #include "my-stuff.h" 8 8 #include "../common/mondostructures.h" … … 67 67 mr_free(g_isodir_device); 68 68 mr_free(g_isodir_format); 69 70 69 } 71 70 … … 201 200 retval = 0; 202 201 } 202 <<<<<<< .courant 203 203 mr_free(orig_fname); 204 ======= 205 mr_free(mountpt); 206 mr_free(command); 207 mr_free(orig_fname); 208 >>>>>>> .fusion-droit.r1080 204 209 return (retval); 205 210 } … … 265 270 266 271 res = run_program_and_log_output(command, FALSE); 267 mr_free(command); 272 <<<<<<< .courant 273 mr_free(command); 274 ======= 275 mr_free(command); 276 mr_free(file); 277 mr_free(tmp); 278 >>>>>>> .fusion-droit.r1080 268 279 if (res) { 269 280 return (FALSE); … … 363 374 log_msg(2, "%ld: bkpinfo->isodir is now %s", __LINE__, 364 375 bkpinfo->isodir); 376 <<<<<<< .courant 377 ======= 378 mr_free(mount_isodir_command); 379 mr_free(tmp); 380 mr_free(command); 381 >>>>>>> .fusion-droit.r1080 365 382 return (retval); 366 383 } … … 419 436 return (0); 420 437 } 438 <<<<<<< .courant 421 439 if (!strcmp(mountpoint, "image")) { 422 440 mr_free(mountpoint); 423 441 return (0); 442 ======= 443 if (!does_file_exist(rclocal_fname)) { 444 mr_free(rclocal_fname); 445 mr_free(newfile_fname); 446 mr_free(tmp); 447 return (1); 448 >>>>>>> .fusion-droit.r1080 424 449 } 425 450 mr_asprintf(&tmp, "Mounting device %s ", device); … … 431 456 mr_asprintf(&p1, "-o ro"); 432 457 } 458 <<<<<<< .courant 433 459 tmp = find_home_of_exe("setfattr"); 434 460 if (tmp) { … … 438 464 } 439 465 mr_free(tmp); 466 ======= 467 sprintf(tmp, "echo -en \"#!/bin/sh\ 468 \\n\ 469 \\n\ 470 grep -v mondorescue %s > %s\\n\ 471 rm -f /var/lock/subsys/*xfs*\\n\ 472 rm -f /var/run/xfs.*\\n\ 473 killall xfs\\n\ 474 service xfs start\\n\ 475 yes | rm -f %s\\n\ 476 \" > %s", rclocal_fname, rclocal_fname, newfile_fname, newfile_fname); 477 sprintf(tmp, "chmod +x \"%s\"", newfile_fname); 478 run_program_and_log_output(tmp, FALSE); 479 mr_free(rclocal_fname); 480 mr_free(newfile_fname); 481 mr_free(tmp); 482 return (0); 483 } 484 >>>>>>> .fusion-droit.r1080 440 485 441 486 tmp = find_home_of_exe("setfacl"); … … 538 583 539 584 assert(p_external_copy_of_mountlist != NULL); 540 mountlist = m alloc(sizeof(struct mountlist_itself));585 mountlist = mr_malloc(sizeof(struct mountlist_itself)); 541 586 memcpy((void *) mountlist, (void *) p_external_copy_of_mountlist, 542 587 sizeof(struct mountlist_itself)); … … 621 666 } 622 667 run_program_and_log_output("df -m", 3); 668 <<<<<<< .courant 623 669 mr_free(mountlist); 670 ======= 671 mr_free(mountlist); 672 mr_free(tmp); 673 mr_free(format); 674 mr_free(these_failed); 675 >>>>>>> .fusion-droit.r1080 624 676 return (retval); 625 677 } … … 651 703 || bkpinfo->backup_media_type == udev) { 652 704 log_msg(8, "Tape/udev. Therefore, no need to mount CDROM."); 705 <<<<<<< .courant 706 ======= 707 mr_free(mount_cmd); 708 >>>>>>> .fusion-droit.r1080 653 709 return 0; 654 710 } … … 656 712 if (!run_program_and_log_output("mount | grep -F " MNT_CDROM, FALSE)) { 657 713 log_msg(2, "mount_cdrom() - CD already mounted. Fair enough."); 714 <<<<<<< .courant 715 ======= 716 mr_free(mount_cmd); 717 >>>>>>> .fusion-droit.r1080 658 718 return (0); 659 719 } … … 747 807 log_msg(2, "Mounted CD-ROM drive OK"); 748 808 } 809 <<<<<<< .courant 810 ======= 811 mr_free(mount_cmd); 812 >>>>>>> .fusion-droit.r1080 749 813 return (res); 750 814 } … … 755 819 756 820 /** 821 <<<<<<< .courant 822 ======= 823 * Mount @p device at @p mpt as @p format. 824 * @param device The device (/dev entry) to mount. 825 * @param mpt The directory to mount it on. 826 * @param format The filesystem type of @p device. 827 * @param writeable If TRUE, mount read-write; if FALSE, mount read-only. 828 * @return 0 for success, nonzero for failure. 829 */ 830 int mount_device(char *device, char *mpt, char *format, bool writeable) 831 { 832 int res = 0; 833 834 /** malloc **/ 835 char *tmp, *command, *mountdir, *mountpoint, *additional_parameters; 836 837 assert_string_is_neither_NULL_nor_zerolength(device); 838 assert_string_is_neither_NULL_nor_zerolength(mpt); 839 assert(format != NULL); 840 malloc_string(tmp); 841 malloc_string(command); 842 malloc_string(mountdir); 843 malloc_string(mountpoint); 844 malloc_string(additional_parameters); 845 846 if (!strcmp(mpt, "/1")) { 847 strcpy(mountpoint, "/"); 848 log_msg(3, "Mommm! SME is being a dildo!"); 849 } else { 850 strcpy(mountpoint, mpt); 851 } 852 853 if (!strcmp(mountpoint, "lvm")) { 854 return (0); 855 } 856 if (!strcmp(mountpoint, "image")) { 857 return (0); 858 } 859 sprintf(tmp, "Mounting device %s ", device); 860 log_msg(1, tmp); 861 if (writeable) { 862 strcpy(additional_parameters, "-o rw"); 863 } else { 864 strcpy(additional_parameters, "-o ro"); 865 } 866 if (find_home_of_exe("setfattr")) { 867 strcat(additional_parameters, ",user_xattr"); 868 } 869 if (find_home_of_exe("setfacl")) { 870 strcat(additional_parameters, ",acl"); 871 } 872 873 if (!strcmp(mountpoint, "swap")) { 874 sprintf(command, "swapon %s", device); 875 } else { 876 if (!strcmp(mountpoint, "/")) { 877 strcpy(mountdir, MNT_RESTORING); 878 } else { 879 sprintf(mountdir, "%s%s", MNT_RESTORING, mountpoint); 880 } 881 sprintf(command, "mkdir -p %s", mountdir); 882 run_program_and_log_output(command, FALSE); 883 sprintf(command, "mount -t %s %s %s %s 2>> %s", format, device, 884 additional_parameters, mountdir, MONDO_LOGFILE); 885 log_msg(2, "command='%s'", command); 886 } 887 res = run_program_and_log_output(command, TRUE); 888 if (res && (strstr(command, "xattr") || strstr(command, "acl"))) { 889 log_msg(1, "Re-trying without the fancy extra parameters"); 890 sprintf(command, "mount -t %s %s %s 2>> %s", format, device, 891 mountdir, MONDO_LOGFILE); 892 res = run_program_and_log_output(command, TRUE); 893 } 894 if (res) { 895 log_msg(1, "Unable to mount device %s (type %s) at %s", device, 896 format, mountdir); 897 log_msg(1, "command was '%s'", command); 898 if (!strcmp(mountpoint, "swap")) { 899 log_to_screen(tmp); 900 } else { 901 log_msg(2, "Retrying w/o the '-t' switch"); 902 sprintf(command, "mount %s %s 2>> %s", device, mountdir, 903 MONDO_LOGFILE); 904 log_msg(2, "2nd command = '%s'", command); 905 res = run_program_and_log_output(command, TRUE); 906 if (res == 0) { 907 log_msg(1, 908 "That's OK. I called mount w/o a filesystem type and it worked fine in the end."); 909 } else { 910 log_to_screen(tmp); 911 } 912 } 913 } 914 if (res && !strcmp(mountpoint, "swap")) { 915 log_msg(2, "That's ok. It's just a swap partition."); 916 log_msg(2, "Non-fatal error. Returning 0."); 917 res = 0; 918 } 919 920 mr_free(tmp); 921 mr_free(command); 922 mr_free(mountdir); 923 mr_free(mountpoint); 924 mr_free(additional_parameters); 925 926 return (res); 927 } 928 929 /************************************************************************** 930 *END_MOUNT_DEVICE * 931 **************************************************************************/ 932 933 934 935 /** 936 >>>>>>> .fusion-droit.r1080 757 937 * Fix some miscellaneous things in the filesystem so the system will come 758 938 * up correctly on the first boot. … … 920 1100 read_cfg_var(cfg_file, "acl", value); 921 1101 if (strstr(value, "TRUE")) { 922 asprintf(&g_getfacl,"setfacl");1102 mr_asprintf(&g_getfacl,"setfacl"); 923 1103 log_msg(1, "We will restore ACLs"); 924 1104 if (! find_home_of_exe("setfacl")) { … … 928 1108 read_cfg_var(cfg_file, "xattr", value); 929 1109 if (strstr(value, "TRUE")) { 930 asprintf(&g_getfattr,"setfattr");1110 mr_asprintf(&g_getfattr,"setfattr"); 931 1111 log_msg(1, "We will restore XATTRs"); 932 1112 if (! find_home_of_exe("setfattr")) { … … 1129 1309 } 1130 1310 g_backup_media_type = bkpinfo->backup_media_type; 1311 <<<<<<< .courant 1131 1312 bkpinfo->backup_media_string = bkptype_to_string(bkpinfo->backup_media_type); 1132 1313 g_backup_media_string = bkpinfo->backup_media_string; 1314 ======= 1315 mr_free(value); 1316 mr_free(tmp); 1317 mr_free(command); 1318 mr_free(iso_mnt); 1319 mr_free(iso_path); 1320 mr_free(old_isodir); 1321 >>>>>>> .fusion-droit.r1080 1133 1322 return (0); 1134 1323 } … … 1320 1509 TRUE); 1321 1510 } 1511 <<<<<<< .courant 1512 ======= 1513 1514 mr_free(command); 1515 mr_free(tmp); 1516 >>>>>>> .fusion-droit.r1080 1322 1517 return (filelist); 1323 1518 } … … 1344 1539 mr_asprintf(&command, "cp -f %s/%s %s/%s.pristine", path_root, filename,path_root, filename); 1345 1540 res = run_program_and_log_output(command, 5); 1346 mr_free(command); 1541 <<<<<<< .courant 1542 mr_free(command); 1543 ======= 1544 mr_free(tmp); 1545 mr_free(command); 1546 >>>>>>> .fusion-droit.r1080 1347 1547 return (res); 1348 1548 } … … 1427 1627 log_to_screen(_("Your boot loader ran OK")); 1428 1628 } 1629 <<<<<<< .courant 1630 ======= 1631 mr_free(device); 1632 mr_free(tmp); 1633 mr_free(name); 1634 >>>>>>> .fusion-droit.r1080 1429 1635 return (retval); 1430 1636 } … … 1579 1785 mvaddstr_and_log_it(g_currentY++, 74, _("Done.")); 1580 1786 } 1787 <<<<<<< .courant 1788 ======= 1789 mr_free(rootdev); 1790 mr_free(rootdrive); 1791 mr_free(conffile); 1792 mr_free(command); 1793 mr_free(boot_device); 1794 mr_free(tmp); 1795 mr_free(editor); 1796 1797 >>>>>>> .fusion-droit.r1080 1581 1798 return (res); 1582 1799 } … … 1649 1866 res = TRUE; 1650 1867 } 1868 <<<<<<< .courant 1869 ======= 1870 mr_free(command); 1871 mr_free(tmp); 1872 mr_free(editor); 1873 >>>>>>> .fusion-droit.r1080 1651 1874 return (res); 1652 1875 } … … 1762 1985 " lilo -M /dev/sda", 3); 1763 1986 } 1987 <<<<<<< .courant 1988 ======= 1989 mr_free(command); 1990 mr_free(tmp); 1991 mr_free(editor); 1992 >>>>>>> .fusion-droit.r1080 1764 1993 return (res); 1765 1994 } … … 1842 2071 mvaddstr_and_log_it(g_currentY++, 74, _("Done.")); 1843 2072 } 2073 <<<<<<< .courant 2074 ======= 2075 mr_free(command); 2076 mr_free(boot_device); 2077 mr_free(tmp); 2078 mr_free(editor); 2079 >>>>>>> .fusion-droit.r1080 1844 2080 return (res); 1845 2081 } … … 1942 2178 paranoid_fclose(fout); 1943 2179 paranoid_fclose(fin); 2180 <<<<<<< .courant 2181 ======= 2182 mr_free(incoming); 2183 >>>>>>> .fusion-droit.r1080 1944 2184 } 1945 2185 /************************************************************************** … … 1988 2228 } 1989 2229 close_progress_form(); 2230 <<<<<<< .courant 2231 ======= 2232 mr_free(tmp); 2233 >>>>>>> .fusion-droit.r1080 1990 2234 } 1991 2235 /************************************************************************** … … 2028 2272 assert(p_external_copy_of_mountlist != NULL); 2029 2273 2030 mountlist = m alloc(sizeof(struct mountlist_itself));2274 mountlist = mr_malloc(sizeof(struct mountlist_itself)); 2031 2275 memcpy((void *) mountlist, (void *) p_external_copy_of_mountlist, 2032 2276 sizeof(struct mountlist_itself)); … … 2121 2365 log_to_screen(_("All partitions were unmounted OK.")); 2122 2366 } 2367 <<<<<<< .courant 2123 2368 free(mountlist); 2369 ======= 2370 mr_free(mountlist); 2371 mr_free(command); 2372 mr_free(tmp); 2373 >>>>>>> .fusion-droit.r1080 2124 2374 return (retval); 2125 2375 } … … 2157 2407 res = 0; 2158 2408 } 2409 <<<<<<< .courant 2410 ======= 2411 mr_free(command); 2412 >>>>>>> .fusion-droit.r1080 2159 2413 return (res); 2160 2414 } … … 2425 2679 2426 2680 g_backup_media_type = bkpinfo->backup_media_type; 2681 <<<<<<< .courant 2427 2682 bkpinfo->backup_media_string = bkptype_to_string(bkpinfo->backup_media_type); 2428 2683 g_backup_media_string = bkpinfo->backup_media_string; 2684 ======= 2685 mr_free(device); 2686 mr_free(command); 2687 mr_free(tmp); 2688 mr_free(cfg_file); 2689 mr_free(mounted_cfgf_path); 2690 mr_free(mountpt); 2691 mr_free(ramdisk_fname); 2692 mr_free(mountlist_file); 2693 >>>>>>> .fusion-droit.r1080 2429 2694 return (retval); 2430 2695 } … … 2442 2707 char *screen_message = NULL; 2443 2708 2444 raidlist = m alloc(sizeof(struct raidlist_itself));2709 raidlist = mr_malloc(sizeof(struct raidlist_itself)); 2445 2710 2446 2711 assert(wait_for_percentage <= 100); … … 2480 2745 } 2481 2746 } 2747 <<<<<<< .courant 2482 2748 mr_free(raidlist); 2483 } 2749 ======= 2750 mr_free(screen_message); 2751 mr_free(raidlist); 2752 >>>>>>> .fusion-droit.r1080 2753 }
Note:
See TracChangeset
for help on using the changeset viewer.