Changeset 2316 in MondoRescue for branches/2.2.10/mondo/src/common/libmondo-devices.c
- Timestamp:
- Aug 18, 2009, 2:34:29 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.10/mondo/src/common/libmondo-devices.c
r2306 r2316 323 323 char *incoming; 324 324 char *searchstr = NULL; 325 char *tmp ;325 char *tmp = NULL; 326 326 327 327 /*@ ints ******************************************************* */ … … 337 337 338 338 malloc_string(incoming); 339 malloc_string(searchstr);340 malloc_string(tmp);341 339 342 340 #ifdef __FreeBSD__ 343 341 // We assume here that this is running from mondorestore. (It is.) 344 mr_asprintf(&program, "ls %s %s >/dev/null 2>&1", drive, build_partition_name(tmp, drive, partno)); 342 tmp = build_partition_name(drive, partno); 343 mr_asprintf(&program, "ls %s %s >/dev/null 2>&1", drive, tmp); 344 mr_free(tmp); 345 345 346 res = system(program); 346 347 mr_free(program); 347 348 return (res); 348 349 #else 349 tmp[0] = '\0'; 350 /* To avoid compiler warnings */ 351 tmp = NULL; 350 352 #endif 351 353 … … 360 362 mr_free(program); 361 363 362 (void) build_partition_name(searchstr,drive, partno);363 strcat(searchstr, " ");364 searchstr = build_partition_name(drive, partno); 365 mr_strcat(searchstr, " "); 364 366 for (res = 0; !res && fgets(incoming, MAX_STR_LEN - 1, fin);) { 365 367 if (strstr(incoming, searchstr)) { … … 367 369 } 368 370 } 371 mr_free(searchstr); 372 369 373 if (pclose(fin)) { 370 374 log_OS_error("Cannot pclose fin"); 371 375 } 372 376 paranoid_free(incoming); 373 paranoid_free(searchstr);374 paranoid_free(tmp);375 377 return (res); 376 378 } … … 448 450 int res; 449 451 char *dev; 452 char *p = NULL; 450 453 451 454 /*@ end vars **************************************************** */ … … 472 475 473 476 if (!dev[0] || (res = mount_CDROM_here(dev, mountpoint))) { 474 if (!popup_and_get_string 475 ("CD-ROM device", "Please enter your CD-ROM's /dev device", 476 dev, MAX_STR_LEN / 4)) { 477 p = popup_and_get_string ("CD-ROM device", "Please enter your CD-ROM's /dev device",dev); 478 if (p == NULL) { 477 479 res = 1; 478 480 } else { 479 res = mount_CDROM_here(dev, mountpoint); 480 } 481 res = mount_CDROM_here(p, mountpoint); 482 } 483 mr_free(p); 481 484 } 482 485 if (res) { … … 1025 1028 FILE *pin; 1026 1029 int retval; 1027 malloc_string(good_formats);1028 1030 1029 1031 assert_string_is_neither_NULL_nor_zerolength(format); … … 1044 1046 retval = 0; 1045 1047 } else { 1046 strcpy(good_formats, " "); 1047 (void) fgets(good_formats + 1, MAX_STR_LEN - 1, pin); 1048 mr_getline(&good_formats, pin); 1048 1049 if (pclose(pin)) { 1049 1050 log_OS_error("Cannot pclose good formats"); 1050 1051 } 1051 strip_spaces(good_formats);1052 strcat(good_formats, " swap lvm raid ntfs-3g ntfs 7 "); // " ntfs 7 " -- um, cheating much? :)1052 mr_strip_spaces(good_formats); 1053 mr_strcat(good_formats, " swap lvm raid ntfs-3g ntfs 7 "); // " ntfs 7 " -- um, cheating much? :) 1053 1054 if (strstr(good_formats, format_sz)) { 1054 1055 retval = 1; … … 1056 1057 retval = 0; 1057 1058 } 1059 mr_free(good_formats); 1058 1060 } 1059 1061 mr_free(format_sz); 1060 1062 1061 paranoid_free(good_formats);1062 1063 return (retval); 1063 1064 } … … 1445 1446 { 1446 1447 char *tmp = NULL; 1447 char * tmp1= NULL;1448 char *p = NULL; 1448 1449 char *mds = NULL; 1449 1450 char *sz_size = NULL; … … 1455 1456 1456 1457 malloc_string(prompt); 1457 malloc_string(sz_size);1458 1458 malloc_string(tmp1); 1459 1459 assert(bkpinfo != NULL); … … 1514 1514 find_dvd_device(bkpinfo->media_device, FALSE); 1515 1515 strcpy(tmp1, "1"); 1516 sprintf(sz_size, "%d", DEFAULT_DVD_DISK_SIZE); // 4.7 salesman's GB = 4.482 real GB = 4482 MB1516 mr_asprintf(&sz_size, "%d", DEFAULT_DVD_DISK_SIZE); // 4.7 salesman's GB = 4.482 real GB = 4482 MB 1517 1517 log_msg(1, "Setting to DVD defaults"); 1518 1518 } else { 1519 1519 strcpy(bkpinfo->media_device, VANILLA_SCSI_CDROM); 1520 1520 strcpy(tmp1, "4"); 1521 sprintf(sz_size, "%d", 650);1521 mr_asprintf(&sz_size, "%d", 650); 1522 1522 log_msg(1, "Setting to CD defaults"); 1523 1523 } 1524 1524 if ((bkpinfo->backup_media_type != dvd) && (bkpinfo->backup_media_type != usb)) { 1525 if (!popup_and_get_string("Speed", comment, tmp1, 4)) { 1525 p = popup_and_get_string("Speed", comment, tmp); 1526 mr_free(tmp); 1527 1528 if (p == NULL) { 1526 1529 log_to_screen("User has chosen not to backup the PC"); 1527 1530 mr_free(comment); 1528 1531 finish(1); 1529 1532 } 1533 /* tmp now has the new value given by the user */ 1534 tmp = p; 1530 1535 } 1531 1536 mr_free(comment); … … 1535 1540 mr_asprintf(&comment, "How much data (in Megabytes) will each %s store?", mds); 1536 1541 mr_free(mds); 1537 if (!popup_and_get_string("Size", comment, sz_size, 5)) { 1538 mr_free(comment); 1542 p = popup_and_get_string("Size", comment, sz_size); 1543 mr_free(sz_size); 1544 mr_free(comment); 1545 1546 if (p == NULL) { 1539 1547 log_to_screen("User has chosen not to backup the PC"); 1540 1548 finish(1); 1541 1549 } 1542 mr_free(comment);1550 sz_size = p; 1543 1551 1544 1552 for (i = 0; i <= MAX_NOOF_MEDIA; i++) { … … 1571 1579 bkpinfo->media_device); 1572 1580 mr_asprintf(&comment, "Please specify your %s drive's /dev entry", mds); 1573 if (!popup_and_get_string1574 ("Device?", comment, bkpinfo->media_device,1575 MAX_STR_LEN / 4)) { 1576 mr_free(comment);1581 p = popup_and_get_string("Device?", comment, bkpinfo->media_device); 1582 mr_free(comment); 1583 1584 if (p == NULL) { 1577 1585 log_to_screen("User has chosen not to backup the PC"); 1578 1586 finish(1); 1579 1587 } 1580 mr_free(comment); 1588 strcpy(bkpinfo->media_device, p); 1589 mr_free(p); 1581 1590 } 1582 1591 log_msg(2, "%s device found at %s", mds, bkpinfo->media_device); … … 1598 1607 if (!bkpinfo->media_device[0]) { 1599 1608 if (bkpinfo->backup_media_type == usb) { 1600 i = popup_and_get_string("/dev entry?", 1601 "What is the /dev entry of your USB Disk/Key, please?", 1602 bkpinfo->media_device, 1603 MAX_STR_LEN / 4); 1609 p = popup_and_get_string("/dev entry?", "What is the /dev entry of your USB Disk/Key, please?", bkpinfo->media_device); 1604 1610 } else { 1605 1611 if (g_kernel_version < 2.6) { 1606 i = popup_and_get_string("Device node?", 1607 "What is the SCSI node of your CD (re)writer, please?", 1608 bkpinfo->media_device, 1609 MAX_STR_LEN / 4); 1612 p = popup_and_get_string("Device node?", "What is the SCSI node of your CD (re)writer, please?", bkpinfo->media_device); 1610 1613 } else { 1611 i = popup_and_get_string("/dev entry?", 1612 "What is the /dev entry of your CD (re)writer, please?", 1613 bkpinfo->media_device, 1614 MAX_STR_LEN / 4); 1614 p = popup_and_get_string("/dev entry?", "What is the /dev entry of your CD (re)writer, please?", bkpinfo->media_device); 1615 1615 } 1616 1616 } 1617 if ( !i) {1617 if (p == NULL) { 1618 1618 log_to_screen("User has chosen not to backup the PC"); 1619 1619 finish(1); 1620 1620 } 1621 strcpy(bkpinfo->media_device, p); 1622 mr_free(p); 1621 1623 } 1622 1624 } … … 1664 1666 } 1665 1667 if (!bkpinfo->media_device[0]) { 1666 if (!popup_and_get_string 1667 ("Device name?", 1668 "What is the /dev entry of your tape streamer?", 1669 bkpinfo->media_device, MAX_STR_LEN / 4)) { 1668 p = popup_and_get_string("Device name?", "What is the /dev entry of your tape streamer?", bkpinfo->media_device); 1669 if (p == NULL) { 1670 1670 log_to_screen("User has chosen not to backup the PC"); 1671 1671 finish(1); 1672 1672 } 1673 strcpy(bkpinfo->media_device, p); 1674 mr_free(p); 1673 1675 } 1674 1676 mr_asprintf(&tmp, "ls -l %s", bkpinfo->media_device); … … 1716 1718 #endif 1717 1719 { 1718 if (!popup_and_get_string 1719 ("NFS dir.", 1720 "Please enter path and directory where archives are stored remotely. (Mondo has taken a guess at the correct value. If it is incorrect, delete it and type the correct one.)", 1721 bkpinfo->nfs_mount, MAX_STR_LEN / 4)) { 1720 p = popup_and_get_string("NFS dir.", "Please enter path and directory where archives are stored remotely. (Mondo has taken a guess at the correct value. If it is incorrect, delete it and type the correct one.)", bkpinfo->nfs_mount); 1721 if (p == NULL) { 1722 1722 log_to_screen("User has chosen not to backup the PC"); 1723 1723 finish(1); 1724 1724 } 1725 strcpy(bkpinfo->nfs_mount, p); 1726 mr_free(p); 1725 1727 if (!bkpinfo->restore_data) { 1726 1728 if ((bkpinfo->compression_level = … … 1743 1745 if (!bkpinfo->restore_data) { 1744 1746 mr_asprintf(&comment, "How much data (in Megabytes) will each media store?"); 1745 if (!popup_and_get_string("Size", comment, sz_size, 5)) { 1746 mr_free(comment); 1747 // BERLIOS: 4480 shouldn't be hardcoded here 1748 sz_size = popup_and_get_string("Size", comment, "4480"); 1749 mr_free(comment); 1750 if (sz_size == NULL) { 1747 1751 log_to_screen("User has chosen not to backup the PC"); 1748 1752 finish(1); 1749 1753 } 1750 mr_free(comment);1751 1754 } else { 1752 strcpy(sz_size, "0");1755 mr_asprintf(&sz_size, "0"); 1753 1756 } 1754 1757 for (i = 0; i <= MAX_NOOF_MEDIA; i++) { 1755 1758 bkpinfo->media_size[i] = atoi(sz_size); 1756 1759 } 1760 mr_free(sz_size); 1757 1761 if (bkpinfo->media_size[0] < 0) { 1758 1762 log_to_screen("User has chosen not to backup the PC"); … … 1765 1769 mr_free(command); 1766 1770 1767 if (!popup_and_get_string 1768 ("NFS share", "Which remote NFS share should I mount?", 1769 bkpinfo->nfs_mount, MAX_STR_LEN)) { 1771 p = popup_and_get_string("NFS share", "Which remote NFS share should I mount?", bkpinfo->nfs_mount); 1772 if (p == NULL) { 1770 1773 log_to_screen("User has chosen not to backup the PC"); 1771 1774 finish(1); 1772 1775 } 1776 strcpy(bkpinfo->nfs_mount, p); 1777 mr_free(p); 1773 1778 } 1774 1779 /* Initiate bkpinfo isodir path from running environment if mount already done */ … … 1795 1800 finish(1); 1796 1801 } 1797 strcpy(tmp1, bkpinfo->nfs_remote_dir); 1798 if (!popup_and_get_string 1799 ("Directory", "Which directory within that mountpoint?", tmp1, 1800 MAX_STR_LEN)) { 1802 p = popup_and_get_string("Directory", "Which directory within that mountpoint?", bkpinfo->nfs_remote_dir); 1803 if (p == NULL) { 1801 1804 log_to_screen("User has chosen not to backup the PC"); 1802 1805 finish(1); 1803 1806 } 1804 strcpy(bkpinfo->nfs_remote_dir, tmp1); 1807 strcpy(bkpinfo->nfs_remote_dir, p); 1808 mr_free(p); 1805 1809 1806 1810 // check whether writable - we better remove surrounding spaces for this 1807 1811 strip_spaces(bkpinfo->nfs_remote_dir); 1808 1812 1809 if (!popup_and_get_string 1810 ("Prefix.", 1811 "Please enter the prefix that will be prepended to your ISO filename. Example: machine1 to obtain machine1-[1-9]*.iso files", 1812 bkpinfo->prefix, MAX_STR_LEN / 4)) { 1813 p = popup_and_get_string("Prefix.", "Please enter the prefix that will be prepended to your ISO filename. Example: machine1 to obtain machine1-[1-9]*.iso files", bkpinfo->prefix); 1814 if (p == NULL) { 1813 1815 log_to_screen("User has chosen not to backup the PC"); 1814 1816 finish(1); 1815 1817 } 1816 1818 log_msg(3, "prefix set to %s", bkpinfo->prefix); 1817 1818 for (i = 0; i <= MAX_NOOF_MEDIA; i++) { 1819 bkpinfo->media_size[i] = 650; 1820 } 1821 log_msg(3, "Just set nfs_remote_dir to %s", 1822 bkpinfo->nfs_remote_dir); 1819 strcpy(bkpinfo->prefix, p); 1820 mr_free(p); 1821 1822 log_msg(3, "Just set nfs_remote_dir to %s", bkpinfo->nfs_remote_dir); 1823 1823 log_msg(3, "isodir is still %s", bkpinfo->isodir); 1824 1824 break; … … 1826 1826 case iso: 1827 1827 if (!bkpinfo->disaster_recovery) { 1828 if (!popup_and_get_string 1829 ("Storage dir.", 1830 "Please enter the full path name to the directory for your ISO images. Example: /mnt/raid0_0", 1831 bkpinfo->isodir, MAX_STR_LEN / 4)) { 1828 p = popup_and_get_string("Storage dir.", "Please enter the full path name to the directory for your ISO images. Example: /mnt/raid0_0", bkpinfo->isodir); 1829 if (p == NULL) { 1832 1830 log_to_screen("User has chosen not to backup the PC"); 1833 1831 finish(1); 1834 1832 } 1833 strcpy(bkpinfo->isodir,p); 1834 mr_free(p); 1835 1835 1836 if (archiving_to_media) { 1836 1837 if ((bkpinfo->compression_level = … … 1839 1840 finish(1); 1840 1841 } 1841 if (!popup_and_get_string 1842 ("ISO size.", 1843 "Please enter how big you want each ISO image to be (in megabytes). This should be less than or equal to the size of the CD-R[W]'s or DVD's you plan to backup to.", 1844 sz_size, 16)) { 1842 p = popup_and_get_string("ISO size.", "Please enter how big you want each ISO image to be (in megabytes). This should be less than or equal to the size of the CD-R[W]'s or DVD's you plan to backup to.", sz_size); 1843 if (p == NULL) { 1845 1844 log_to_screen("User has chosen not to backup the PC"); 1846 1845 finish(1); 1847 1846 } 1848 1847 for (i = 0; i <= MAX_NOOF_MEDIA; i++) { 1849 bkpinfo->media_size[i] = atoi( sz_size);1848 bkpinfo->media_size[i] = atoi(p); 1850 1849 } 1850 mr_free(p); 1851 1851 } else { 1852 1852 for (i = 0; i <= MAX_NOOF_MEDIA; i++) { … … 1855 1855 } 1856 1856 } 1857 if (!popup_and_get_string 1858 ("Prefix.", 1859 "Please enter the prefix that will be prepended to your ISO filename. Example: machine1 to obtain machine1-[1-9]*.iso files", 1860 bkpinfo->prefix, MAX_STR_LEN / 4)) { 1857 p = popup_and_get_string("Prefix.", "Please enter the prefix that will be prepended to your ISO filename. Example: machine1 to obtain machine1-[1-9]*.iso files", bkpinfo->prefix); 1858 if (p == NULL) { 1861 1859 log_to_screen("User has chosen not to backup the PC"); 1862 1860 finish(1); 1863 1861 } 1862 strcpy(bkpinfo->prefix, p); 1863 mr_free(p); 1864 1864 log_msg(3, "prefix set to %s", bkpinfo->prefix); 1865 1865 break; … … 1885 1885 1886 1886 #ifdef __FreeBSD__ 1887 if (!popup_and_get_string 1888 ("Boot device", 1889 "What is your boot device? (e.g. /dev/ad0)", 1890 bkpinfo->boot_device, MAX_STR_LEN / 4)) { 1887 p = popup_and_get_string("Boot device", "What is your boot device? (e.g. /dev/ad0)", bkpinfo->boot_device); 1888 if (!p == NULL) { 1891 1889 log_to_screen("User has chosen not to backup the PC"); 1892 1890 finish(1); 1893 1891 } 1892 strcpy(bkpinfo->boot_device, p); 1893 mr_free(p); 1894 1894 i = which_boot_loader(bkpinfo->boot_device); 1895 1895 #else 1896 if (!popup_and_get_string 1897 ("Boot device", 1898 "What is your boot device? (e.g. /dev/hda)", 1899 bkpinfo->boot_device, MAX_STR_LEN / 4)) { 1896 p = popup_and_get_string("Boot device", "What is your boot device? (e.g. /dev/hda)", bkpinfo->boot_device); 1897 if (p == NULL) { 1900 1898 log_to_screen("User has chosen not to backup the PC"); 1901 1899 finish(1); 1902 1900 } 1903 if (does_string_exist_in_boot_block 1904 (bkpinfo->boot_device, "LILO")) { 1901 strcpy(bkpinfo->boot_device, p); 1902 mr_free(p); 1903 1904 if (does_string_exist_in_boot_block(bkpinfo->boot_device, "LILO")) { 1905 1905 i = 'L'; 1906 1906 } else 1907 if (does_string_exist_in_boot_block 1908 (bkpinfo->boot_device, "ELILO")) { 1907 if (does_string_exist_in_boot_block(bkpinfo->boot_device, "ELILO")) { 1909 1908 i = 'E'; 1910 1909 } else 1911 if (does_string_exist_in_boot_block 1912 (bkpinfo->boot_device, "GRUB")) { 1910 if (does_string_exist_in_boot_block(bkpinfo->boot_device, "GRUB")) { 1913 1911 i = 'G'; 1914 1912 } else { … … 1930 1928 bkpinfo->boot_loader = i; 1931 1929 strcpy(bkpinfo->include_paths, "/"); 1932 if (!popup_and_get_string 1933 ("Backup paths", 1934 "Please enter paths which you want me to backup. The default is '/' (i.e. everything).", 1935 bkpinfo->include_paths, MAX_STR_LEN)) { 1930 p = popup_and_get_string("Backup paths", "Please enter paths which you want me to backup. The default is '/' (i.e. everything).", bkpinfo->include_paths); 1931 if (p == NULL) { 1936 1932 log_to_screen("User has chosen not to backup the PC"); 1937 1933 finish(1); 1938 1934 } 1935 strcpy(bkpinfo->include_paths, p); 1936 mr_free(p); 1937 1939 1938 mr_asprintf(&tmp, "%s", list_of_NFS_mounts_only()); 1940 1939 if (strlen(tmp) > 2) { … … 1948 1947 strcpy(tmp1, call_program_and_get_last_line_of_output("parted2fdisk -l | grep -i ntfs | awk '{ print $1};' | tr -s '\\n' ' ' | awk '{ print $0};'")); 1949 1948 if (strlen(tmp1) > 2) { 1950 if (!popup_and_get_string 1951 ("NTFS partitions", 1952 "Please enter/confirm the NTFS partitions you wish to backup as well.", 1953 tmp1, MAX_STR_LEN / 4)) { 1949 p = popup_and_get_string("NTFS partitions", "Please enter/confirm the NTFS partitions you wish to backup as well.", tmp); 1950 1951 if (p == NULL) { 1954 1952 log_to_screen("User has chosen not to backup the PC"); 1955 1953 finish(1); 1956 1954 } 1957 strncpy(bkpinfo->image_devs, tmp1, MAX_STR_LEN / 4); 1958 } 1959 1960 1961 if (!popup_and_get_string 1962 ("Exclude paths", 1963 "Please enter paths which you do NOT want to backup. Separate them with spaces. NB: /tmp and /proc are always excluded. :-) Just hit 'Enter' if you want to do a full system backup.", 1964 bkpinfo->exclude_paths, (4*MAX_STR_LEN)-1)) { 1955 strncpy(bkpinfo->image_devs, p, MAX_STR_LEN / 4); 1956 mr_free(p); 1957 } 1958 1959 1960 p = popup_and_get_string("Exclude paths", "Please enter paths which you do NOT want to backup. Separate them with spaces. NB: /tmp and /proc are always excluded. :-) Just hit 'Enter' if you want to do a full system backup.", bkpinfo->exclude_paths); 1961 if (p == NULL) { 1965 1962 log_to_screen("User has chosen not to backup the PC"); 1966 1963 finish(1); 1967 1964 } 1968 if (!popup_and_get_string 1969 ("Temporary directory", 1970 "Please enter your temporary directory.", 1971 bkpinfo->tmpdir, (4*MAX_STR_LEN)-1)) { 1965 strcpy(bkpinfo->exclude_paths, p); 1966 mr_free(p); 1967 1968 p = popup_and_get_string("Temporary directory", "Please enter your temporary directory.", bkpinfo->tmpdir); 1969 if (p == NULL) { 1972 1970 log_to_screen("User has chosen not to backup the PC"); 1973 1971 finish(1); 1974 1972 } 1975 if (!popup_and_get_string 1976 ("Scratch directory", 1977 "Please enter your scratch directory.", 1978 bkpinfo->scratchdir, (4*MAX_STR_LEN)-1)) { 1973 strcpy(bkpinfo->tmpdir, p); 1974 mr_free(p); 1975 1976 p = popup_and_get_string("Scratch directory", "Please enter your scratch directory.", bkpinfo->scratchdir); 1977 if (p == NULL) { 1979 1978 log_to_screen("User has chosen not to backup the PC"); 1980 1979 finish(1); 1981 1980 } 1981 strcpy(bkpinfo->scratchdir, p); 1982 mr_free(p); 1983 1982 1984 // Interactive mode: 1983 1985 #ifdef __IA64__
Note:
See TracChangeset
for help on using the changeset viewer.