Changeset 2316 in MondoRescue
- Timestamp:
- Aug 18, 2009, 2:34:29 PM (16 years ago)
- Location:
- branches/2.2.10
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.10/mondo/src/common/libmondo-cli.c
r2303 r2316 1281 1281 && (flag_set['c'] || flag_set['w'] || flag_set['C'])) { 1282 1282 if (g_kernel_version >= 2.6) { 1283 if (popup_and_get_string 1284 ("Device", "Please specify the device", 1285 bkpinfo->media_device, MAX_STR_LEN / 4)) { 1283 tmp2 = popup_and_get_string("Device", "Please specify the device", bkpinfo->media_device); 1284 if (tmp2 == NULL) { 1286 1285 retval++; 1287 1286 log_to_screen("User opted to cancel."); 1288 1287 } 1288 mr_free(tmp2); 1289 1289 } else if (find_cdrw_device(bkpinfo->media_device)) { 1290 1290 retval++; -
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__ -
branches/2.2.10/mondo/src/common/libmondo-files.c
r2296 r2316 306 306 return (1); 307 307 } 308 if (!popup_and_get_string 309 ("Kernel path", 310 "What is the full path and filename of your kernel, please?", 311 kernel, MAX_STR_LEN / 4)) { 312 fatal_error 313 ("Kernel not found. Please specify with the '-k' flag."); 314 } 315 mr_asprintf(&tmp, "User says kernel is at %s", kernel); 316 log_it(tmp); 308 tmp = popup_and_get_string("Kernel path", "What is the full path and filename of your kernel, please?", kernel); 309 if (tmp == NULL) { 310 fatal_error("Kernel not found. Please specify with the '-k' flag."); 311 } 312 strcpy(kernel, tmp); 317 313 mr_free(tmp); 314 315 log_it("User says kernel is at %s", kernel); 318 316 } 319 317 return (0); … … 1184 1182 } 1185 1183 1186 mr_asprintf( tmp, "%s/NFS-DEV", bkpinfo->tmpdir);1184 mr_asprintf(&tmp, "%s/NFS-DEV", bkpinfo->tmpdir); 1187 1185 write_one_liner_data_file(tmp, nfs_dev); 1188 1186 mr_free(nfs_dev); 1189 1187 mr_free(tmp); 1190 1188 1191 mr_asprintf( tmp, "%s/NFS-CLIENT-IPADDR", bkpinfo->tmpdir);1189 mr_asprintf(&tmp, "%s/NFS-CLIENT-IPADDR", bkpinfo->tmpdir); 1192 1190 write_one_liner_data_file(tmp, nfs_client_ipaddr); 1193 1191 mr_free(nfs_client_ipaddr); 1194 1192 mr_free(tmp); 1195 1193 1196 mr_asprintf( tmp, "%s/NFS-CLIENT-NETMASK", bkpinfo->tmpdir);1194 mr_asprintf(&tmp, "%s/NFS-CLIENT-NETMASK", bkpinfo->tmpdir); 1197 1195 write_one_liner_data_file(tmp, nfs_client_netmask); 1198 1196 mr_free(nfs_client_netmask); 1199 1197 mr_free(tmp); 1200 1198 1201 mr_asprintf( tmp, "%s/NFS-CLIENT-BROADCAST", bkpinfo->tmpdir);1199 mr_asprintf(&tmp, "%s/NFS-CLIENT-BROADCAST", bkpinfo->tmpdir); 1202 1200 write_one_liner_data_file(tmp, nfs_client_broadcast); 1203 1201 mr_free(nfs_client_broadcast); 1204 1202 mr_free(tmp); 1205 1203 1206 mr_asprintf( tmp, "%s/NFS-CLIENT-DEFGW", bkpinfo->tmpdir);1204 mr_asprintf(&tmp, "%s/NFS-CLIENT-DEFGW", bkpinfo->tmpdir); 1207 1205 write_one_liner_data_file(tmp, nfs_client_defgw); 1208 1206 mr_free(nfs_client_defgw); 1209 1207 mr_free(tmp); 1210 1208 1211 mr_asprintf( tmp, "%s/NFS-SERVER-IPADDR", bkpinfo->tmpdir);1209 mr_asprintf(&tmp, "%s/NFS-SERVER-IPADDR", bkpinfo->tmpdir); 1212 1210 write_one_liner_data_file(tmp, nfs_server_ipaddr); 1213 1211 mr_free(tmp); 1214 1212 mr_free(nfs_server_ipaddr); 1215 1213 1216 mr_asprintf( tmp, "%s/NFS-SERVER-MOUNT", bkpinfo->tmpdir);1214 mr_asprintf(&tmp, "%s/NFS-SERVER-MOUNT", bkpinfo->tmpdir); 1217 1215 write_one_liner_data_file(tmp, bkpinfo->nfs_mount); 1218 1216 mr_free(tmp); 1219 1217 mr_free(nfs_mount); 1220 1218 1221 mr_asprintf( tmp, "%s/NFS-SERVER-PATH", bkpinfo->tmpdir);1219 mr_asprintf(&tmp, "%s/NFS-SERVER-PATH", bkpinfo->tmpdir); 1222 1220 write_one_liner_data_file(tmp, bkpinfo->nfs_remote_dir); 1223 1221 mr_free(tmp); 1224 1222 1225 mr_asprintf( tmp, "%s/ISO-PREFIX", bkpinfo->tmpdir);1223 mr_asprintf(&tmp, "%s/ISO-PREFIX", bkpinfo->tmpdir); 1226 1224 write_one_liner_data_file(tmp, bkpinfo->prefix); 1227 1225 mr_free(tmp); -
branches/2.2.10/mondo/src/common/libmondo-fork.c
r2315 r2316 248 248 char *callstr = NULL; 249 249 char incoming[MAX_STR_LEN * 2]; 250 char tmp[MAX_STR_LEN * 2];251 250 char *tmp1 = NULL; 252 char initial_label[MAX_STR_LEN * 2];253 251 254 252 /*@ int ********************************************************* */ 255 253 int res; 256 254 int i; 257 int len;258 255 bool log_if_failure = FALSE; 259 256 bool log_if_success = FALSE; … … 284 281 285 282 286 len = (int) strlen(program);287 for (i = 0; i < 35 - len / 2; i++) {288 tmp[i] = '-';289 }290 tmp[i] = '\0';291 strcat(tmp, " ");292 strcat(tmp, program);293 strcat(tmp, " ");294 for (i = 0; i < 35 - len / 2; i++) {295 strcat(tmp, "-");296 }297 strcpy(initial_label, tmp);298 283 res = system(callstr); 299 284 if (((res == 0) && log_if_success) || ((res != 0) && log_if_failure)) { 300 285 log_msg(0, "running: %s", callstr); 301 log_msg(0, 302 "--------------------------------start of output-----------------------------"); 286 log_msg(0, "--------------------------------start of output-----------------------------"); 303 287 } 304 288 mr_free(callstr); -
branches/2.2.10/mondo/src/common/libmondo-mountlist.c
r2306 r2316 59 59 /*@ buffers ******************************************************** */ 60 60 char tmp = NULL; 61 char device[MAX_STR_LEN];61 char *device = NULL; 62 62 char mountpoint[MAX_STR_LEN]; 63 63 … … 90 90 /* check DD */ 91 91 for (cur_sp_no = 'a'; cur_sp_no < 'z'; ++cur_sp_no) { 92 sprintf(device, "%s%c", drive, cur_sp_no);93 if (find_device_in_mountlist(mountlist, device) >= 0) 92 mr_asprintf(&device, "%s%c", drive, cur_sp_no); 93 if (find_device_in_mountlist(mountlist, device) >= 0) { 94 94 foundsome = TRUE; 95 } 96 mr_free(device); 95 97 } 96 98 if (foundsome) { 97 99 for (cur_sp_no = 'a'; cur_sp_no < 'z'; ++cur_sp_no) { 98 sprintf(device, "%s%c", drive, cur_sp_no);100 mr_asprintf(&device, "%s%c", drive, cur_sp_no); 99 101 pos = find_device_in_mountlist(mountlist, device); 100 102 if (pos < 0) { 103 mr_free(device); 101 104 continue; 102 105 } … … 156 159 res++; 157 160 } 161 mr_free(device); 162 158 163 amount_allocated += mountlist->el[pos].size / 1024L; 159 164 prev_sp_no = cur_sp_no; … … 163 168 npos = pos = 0; 164 169 for (curr_part_no = 1; curr_part_no < 99; curr_part_no++) { 165 build_partition_name(device,drive, curr_part_no);170 device = build_partition_name(drive, curr_part_no); 166 171 pos = find_device_in_mountlist(mountlist, device); 167 172 npos = 0; 168 173 for (cur_sp_no = 'a'; cur_sp_no <= 'h'; cur_sp_no++) { 169 sprintf(device, "%ss%i%c", device, curr_part_no, cur_sp_no);170 if (find_device_in_mountlist(mountlist, device) >= 0)174 mr_asprintf(&tmp, "%ss%i%c", device, curr_part_no, cur_sp_no); 175 if (find_device_in_mountlist(mountlist, tmp) >= 0) { 171 176 npos++; 172 } 177 } 178 mr_free(tmp); 179 } 180 mr_free(device); 181 173 182 if (((pos >= 0) || npos) && foundsome) { 174 183 mr_strcat(flaws_str, " %s has both DD and PC-style partitions.", drive); … … 176 185 } 177 186 178 build_partition_name(device,drive, curr_part_no);187 device = build_partition_name(drive, curr_part_no); 179 188 strcpy(mountpoint, mountlist->el[pos].mountpoint); 180 189 if (pos > 0 && !npos) { … … 256 265 /* Check subpartitions */ 257 266 for (cur_sp_no = 'a'; cur_sp_no < 'z'; ++cur_sp_no) { 258 sprintf(device, "%ss%d%c", drive, curr_part_no, cur_sp_no); 267 mr_free(device); 268 mr_asprintf(device, "%ss%d%c", drive, curr_part_no, cur_sp_no); 259 269 pos = find_device_in_mountlist(mountlist, device); 260 270 if (pos < 0) { … … 321 331 } 322 332 } 333 mr_free(device); 323 334 324 335 /* OK, continue with main loop */ … … 380 391 mr_asprintf(&flaws_str, "%s", ""); 381 392 382 malloc_string(device);383 393 prev_part_no = 0; 384 394 … … 391 401 log_msg(1, tmp); 392 402 mr_free(tmp); 393 goto endoffunc;403 return(flaws_str); 394 404 } else { 395 405 mr_asprintf(&tmp, "%s is %ld MB", drive, physical_drive_size); … … 399 409 400 410 for (curr_part_no = 1; curr_part_no < 99; curr_part_no++) { 401 build_partition_name(device,drive, curr_part_no);411 device = build_partition_name(drive, curr_part_no); 402 412 pos = find_device_in_mountlist(mountlist, device); 403 413 if (pos < 0) { … … 441 451 } 442 452 if (device_copies > 1) { 443 mr_asprintf(&tmp, " %s %s's.", number_to_text(device_copies), 444 device); 453 mr_asprintf(&tmp, " %s %s's.", number_to_text(device_copies), device); 445 454 if (!strstr(flaws_str, tmp)) { 446 455 log_it(tmp); … … 482 491 amount_allocated += mountlist->el[pos].size / 1024L; 483 492 prev_part_no = curr_part_no; 493 mr_free(device); 484 494 } 485 495 … … 499 509 mr_free(tmp); 500 510 } 501 502 endoffunc:503 paranoid_free(device);504 511 505 512 if (res) { -
branches/2.2.10/mondo/src/common/libmondo-string-EXT.h
r2315 r2316 3 3 */ 4 4 5 extern char *build_partition_name(char *partition, const char *drive, 6 int partno); 5 extern char *build_partition_name(const char *drive, int partno); 7 6 extern void center_string(char *in_out, int width); 8 7 extern char *commarize(char *); -
branches/2.2.10/mondo/src/common/libmondo-string.c
r2315 r2316 34 34 * @param drive The drive basename of the partition name (e.g. /dev/hda) 35 35 * @param partno The partition number (e.g. 1) 36 * @param partition Where to put the partition name (e.g. /dev/hda1)37 36 * @return @p partition. 38 37 * @note If @p drive ends in a digit, then 'p' (on Linux) or 's' (on *BSD) is added before @p partno. 39 38 */ 40 char *build_partition_name(c har *partition, const char *drive, int partno)41 { 42 char * p, *c;43 44 assert(partition != NULL); 39 char *build_partition_name(const char *drive, int partno) 40 { 41 char *c = NULL; 42 char *partition = NULL; 43 45 44 assert_string_is_neither_NULL_nor_zerolength(drive); 46 45 assert(partno >= 0); 47 46 48 p = strcpy(partition, drive);47 mr_asprintf(&partition, drive); 49 48 /* is this a devfs device path? */ 50 49 c = strrchr(partition, '/'); 51 50 if (c && strncmp(c, "/disc", 5) == 0) { 52 51 /* yup it's devfs, return the "part" path */ 52 /* This strcpy is safe */ 53 53 strcpy(c + 1, "part"); 54 p = c + 5;55 54 } else { 56 p += strlen(p); 57 if (isdigit(p[-1])) { 58 *p++ = 55 if (isdigit(partition[-1])) { 56 mr_strcat(partition, 59 57 #ifdef BSD 60 's' ;58 's'); 61 59 #else 62 'p' ;60 'p'); 63 61 #endif 64 62 } 65 63 } 66 sprintf(p, "%d", partno); 67 return (partition); 68 } 69 70 71 72 73 74 75 76 77 78 79 64 mr_strcat(partition, "%d", partno); 65 return(partition); 66 } 80 67 81 68 -
branches/2.2.10/mondo/src/common/libmondo-string.h
r2315 r2316 3 3 */ 4 4 5 char *build_partition_name(c har *partition, const char *drive, int partno);5 char *build_partition_name(const char *drive, int partno); 6 6 void center_string(char *in_out, int width); 7 7 char *commarize(char *); -
branches/2.2.10/mondo/src/common/libmondo-verify.h
r1713 r2316 42 42 extern int openin_tape(); 43 43 extern void popup_and_OK(char *); 44 extern bool popup_and_get_string(char *, char *, char *, int);44 extern char *popup_and_get_string(char *, char *, char *); 45 45 extern int read_file_from_tape_to_file(char *, 46 46 long long); -
branches/2.2.10/mondo/src/common/newt-specific-EXT.h
r128 r2316 15 15 extern void log_to_screen(const char *fmt, ...); 16 16 extern void popup_and_OK(char *prompt); 17 extern bool popup_and_get_string(char *title, char *b, char *output, 18 int maxsize); 17 extern char *popup_and_get_string(char *title, char *b, char *input); 19 18 extern bool popup_with_buttons(char *p, char *button1, char *button2); 20 19 extern void refresh_log_screen(); -
branches/2.2.10/mondo/src/common/newt-specific.c
r2296 r2316 358 358 log_msg(0, fatalstr); 359 359 log_msg(0, error_string); 360 // popup_and_OK (error_string);361 360 newtFinished(); 362 361 } … … 400 399 finish(int signal) { 401 400 char *command = NULL; 402 403 /* if (signal==0) { popup_and_OK("Please press <enter> to quit."); } */404 405 /* newtPopHelpLine(); */406 401 407 402 chdir("/"); … … 750 745 * @param title The title of the dialog box. 751 746 * @param b The blurb (e.g. what you want the user to enter). 752 * @param output The string to put the user's answer in. 753 * @param maxsize The size in bytes allocated to @p output. 754 * @return TRUE if the user pressed OK, FALSE if they pressed Cancel. 755 */ 756 bool popup_and_get_string(char *title, char *b, char *output, 757 int maxsize) { 747 * @param input The string given originaly as default 748 * @return output string if the user pressed OK, NULL if they pressed Cancel. 749 */ 750 char *popup_and_get_string(char *title, char *b, char *input) { 758 751 759 752 /*@ newt ************************************************************ */ … … 769 762 770 763 /*@ buffers ********************************************************** */ 771 char *blurb; 772 char *original_contents; 773 774 blurb = malloc(MAX_NEWT_COMMENT_LEN); 775 original_contents = malloc(MAX_NEWT_COMMENT_LEN); 764 char *blurb = NULL; 765 char *output = NULL; 766 776 767 assert_string_is_neither_NULL_nor_zerolength(title); 777 768 assert(b != NULL); 778 assert(output != NULL);779 769 780 770 if (g_text_mode) { 781 printf 782 ("---promptstring---1--- %s\n---promptstring---2--- %s\n---promptstring---Q---\n--> ", 783 title, b); 784 (void) fgets(output, maxsize, stdin); 771 printf("---promptstring---1--- %s\n---promptstring---2--- %s\n---promptstring---Q--- [%s]\n--> ", title, b, input); 772 mr_getline(&output, stdin); 773 if (! strcmp(output,"\n")) { 774 /* take default if ENTER was typed */ 775 mr_free(output); 776 mr_asprintf(&output, "%s", input); 777 } 785 778 if (output[strlen(output) - 1] == '\n') 786 779 output[strlen(output) - 1] = '\0'; 787 paranoid_free(blurb); 788 paranoid_free(original_contents); 789 return (TRUE); 790 } 791 strcpy(blurb, b); 780 return (output); 781 } 782 783 mr_asprintf(&blurb, "%s", b); 792 784 text = newtTextboxReflowed(2, 1, blurb, 48, 5, 5, 0); 793 strcpy(original_contents, output);794 output[0] = '\0';795 785 type_here = 796 786 newtEntry(2, newtTextboxGetNumLines(text) + 2, 797 original_contents, 50,787 input, 50, 798 788 #ifdef __cplusplus 799 789 0, NEWT_FLAG_RETURNEXIT … … 804 794 b_1 = newtButton(6, newtTextboxGetNumLines(text) + 4, " OK "); 805 795 b_2 = newtButton(18, newtTextboxGetNumLines(text) + 4, "Cancel"); 806 // newtOpenWindow (8, 5, 54, newtTextboxGetNumLines (text) + 9, title);807 796 newtCenteredWindow(54, newtTextboxGetNumLines(text) + 9, title); 808 797 myForm = newtForm(NULL, NULL, 0); … … 811 800 newtPushHelpLine(blurb); 812 801 b_res = newtRunForm(myForm); 813 strcpy(output, entry_value); 802 803 if (b_res == b_1) { 804 mr_asprintf(&output, "%s", newtEntryGetValue(type_here)); 805 } 814 806 newtPopHelpLine(); 815 807 newtFormDestroy(myForm); 816 808 newtPopWindow(); 817 if (b_res == b_2) { 818 strcpy(output, original_contents); 819 paranoid_free(blurb); 820 paranoid_free(original_contents); 821 return (FALSE); 822 } else { 823 paranoid_free(blurb); 824 paranoid_free(original_contents); 825 return (TRUE); 826 } 809 mr_free(blurb); 810 811 return (output); 827 812 } 828 813 … … 1179 1164 } else { 1180 1165 mr_asprintf(&timeline_str, "%2ld:%02ld taken %2ld:%02ld remaining ", (long) time_taken / 60, (long) time_taken % 60, (long) time_remaining / 60, (long) time_remaining % 60); 1181 mr_asprintf( percentline_str, " %3d%% done %3d%% to go", percentage, 100 - percentage);1166 mr_asprintf(&percentline_str, " %3d%% done %3d%% to go", percentage, 100 - percentage); 1182 1167 1183 1168 center_string(blurb1, 54); -
branches/2.2.10/mondo/src/common/newt-specific.h
r128 r2316 21 21 long max_val); 22 22 void popup_and_OK(char *prompt); 23 bool popup_and_get_string(char *title, char *b, char *output, int maxsize);23 char *popup_and_get_string(char *title, char *b, char *input); 24 24 bool popup_with_buttons(char *p, char *button1, char *button2); 25 25 void refresh_log_screen(); -
branches/2.2.10/mondo/src/include/mr_mem.h
r2208 r2316 20 20 #define mr_allocstr(x,y) mr_allocstr_int(x,y,__LINE__,__FILE__) 21 21 #define mr_asprintf(x,y,args...) mr_asprintf_int(x,__LINE__,__FILE__,y,## args) 22 #define mr_getline(x, y,z) mr_getline_int(x,y,z,__LINE__,__FILE__)22 #define mr_getline(x,z) mr_getline_int(x,z,__LINE__,__FILE__) 23 23 #define mr_malloc(x) mr_malloc_int((size_t)x,__LINE__,__FILE__) 24 24 #define mr_setenv(x,y) mr_setenv_int(x,y,__LINE__,__FILE__) … … 30 30 extern inline void mr_allocstr_int(char *alloc, const char *orig, int line, char *file); 31 31 extern inline void mr_asprintf_int(char **alloc, int line, char *file, const char *fmt, ...); 32 extern inline void mr_getline_int(char **lineptr, size_t *n,FILE *stream, int line, char *file);32 extern inline void mr_getline_int(char **lineptr, FILE *stream, int line, char *file); 33 33 extern inline void *mr_malloc_int(size_t size, int line, char *file); 34 34 extern inline void mr_setenv_int(const char *name, const char *value, int line, char *file); -
branches/2.2.10/mondo/src/lib/mr_mem.c
r2307 r2316 54 54 55 55 /* encapsulation function for getline */ 56 void mr_getline_int(char **lineptr, size_t *n,FILE *fd, int line, const char *file) {56 void mr_getline_int(char **lineptr, FILE *fd, int line, const char *file) { 57 57 58 58 ssize_t ret; 59 ssize_t *n; 59 60 60 61 ret = getline(lineptr,n,fd); -
branches/2.2.10/mondo/src/mondorestore/mondo-prep.c
r2299 r2316 1457 1457 1458 1458 /** buffers *********************************************************/ 1459 char *device_str ;1459 char *device_str = NULL; 1460 1460 char *format; 1461 1461 char *tmp = NULL; … … 1466 1466 assert_string_is_neither_NULL_nor_zerolength(drivename); 1467 1467 1468 malloc_string(device_str);1469 1468 malloc_string(format); 1470 1469 … … 1483 1482 if (!pout_to_fdisk) { 1484 1483 log_to_screen("Cannot call parted2fdisk to configure %s", drivename); 1485 paranoid_free(device_str);1486 1484 paranoid_free(format); 1487 1485 return (1); … … 1489 1487 #endif 1490 1488 for (current_devno = 1; current_devno < 99; current_devno++) { 1491 build_partition_name(device_str,drivename, current_devno);1489 device_str = build_partition_name(drivename, current_devno); 1492 1490 lino = find_device_in_mountlist(mountlist, device_str); 1493 1491 … … 1518 1516 } 1519 1517 mr_free(command); 1520 paranoid_free(device_str);1518 mr_free(device_str); 1521 1519 paranoid_free(format); 1522 1520 return r; … … 1547 1545 } 1548 1546 } else { 1547 mr_free(device_str); 1549 1548 continue; 1550 1549 } 1551 1550 #else 1551 mr_free(device_str); 1552 1552 continue; 1553 1553 #endif … … 1606 1606 log_to_screen 1607 1607 ("You must leave at least one partition spare as the Extended partition."); 1608 paranoid_free(device_str);1608 mr_free(device_str); 1609 1609 paranoid_free(format); 1610 1610 return (1); … … 1627 1627 } 1628 1628 #endif 1629 mr_free(device_str); 1629 1630 1630 1631 previous_devno = current_devno; … … 1666 1667 } 1667 1668 } 1668 paranoid_free(device_str);1669 1669 paranoid_free(format); 1670 1670 return (retval); … … 1690 1690 /** buffers **********************************************************/ 1691 1691 char *program = NULL; 1692 char *partition_name ;1692 char *partition_name = NULL; 1693 1693 char *tmp = NULL; 1694 1694 char *output = NULL; … … 1701 1701 /** end ***************************************************************/ 1702 1702 1703 malloc_string(partition_name);1704 1705 1703 assert_string_is_neither_NULL_nor_zerolength(drive); 1706 1704 assert(format != NULL); … … 1714 1712 mr_free(tmp); 1715 1713 1716 paranoid_free(partition_name);1717 1714 return (0); 1718 1715 } 1719 build_partition_name(partition_name,drive, partno);1716 partition_name = build_partition_name(drive, partno); 1720 1717 if (partsize <= 0) { 1721 1718 mr_asprintf(&tmp, "Partitioning device %s (max size)", partition_name); … … 1731 1728 log_to_screen(tmp); 1732 1729 mr_free(tmp); 1733 paranoid_free(partition_name);1730 mr_free(partition_name); 1734 1731 return (1); 1735 1732 } … … 1749 1746 if (partno == 5) { 1750 1747 if (prev_partno >= 4) { 1751 log_to_screen 1752 ("You need to leave at least one partition free, for 'extended/logical'"); 1753 paranoid_free(partition_name); 1748 log_to_screen("You need to leave at least one partition free, for 'extended/logical'"); 1749 mr_free(partition_name); 1754 1750 paranoid_free(output); 1755 1751 return (1); … … 1776 1772 log_it(tmp); 1777 1773 mr_free(tmp); 1774 1778 1775 log_it("---fdisk command---"); 1779 1776 log_it(output); … … 1867 1864 } 1868 1865 mr_free(program); 1866 mr_free(partition_name); 1869 1867 paranoid_free(output); 1870 1868 1871 1869 g_current_progress++; 1872 1870 log_it("partition_device() --- leaving"); 1873 paranoid_free(partition_name);1874 1871 return (retval); 1875 1872 } … … 1979 1976 { 1980 1977 /** buffers *********************************************************/ 1981 char *partition ;1978 char *partition = NULL; 1982 1979 char *command = NULL; 1983 1980 char *output = NULL; 1984 1981 char *tmp = NULL; 1985 char *partcode ;1982 char *partcode = NULL; 1986 1983 1987 1984 /** pointers *********************************************************/ … … 1997 1994 assert(format != NULL); 1998 1995 1999 malloc_string(partition); 2000 malloc_string(partcode); 2001 2002 build_partition_name(partition, drive, partno); 1996 partition = build_partition_name(drive, partno); 2003 1997 p = (char *) strrchr(partition, '/'); 2004 1998 if (strcmp(format, "swap") == 0) { 2005 strcpy(partcode, "82");1999 mr_asprintf(&partcode, "82"); 2006 2000 } else if (strcmp(format, "vfat") == 0) { 2007 2001 if (partsize / 1024 > 8192) { 2008 strcpy(partcode, "c");2002 mr_asprintf(&partcode, "c"); 2009 2003 } else { 2010 strcpy(partcode, "b");2004 mr_asprintf(&partcode, "b"); 2011 2005 } 2012 2006 } else if (strcmp(format, "ext2") == 0 … … 2016 2010 || strcmp(format, "xfs") == 0 2017 2011 || strcmp(format, "jfs") == 0) { 2018 strcpy(partcode, "83");2012 mr_asprintf(&partcode, "83"); 2019 2013 } else if (strcmp(format, "minix") == 0) { 2020 strcpy(partcode, "81");2014 mr_asprintf(&partcode, "81"); 2021 2015 } else if (strcmp(format, "vmfs3") == 0) { 2022 strcpy(partcode, "fb");2016 mr_asprintf(&partcode, "fb"); 2023 2017 } else if (strcmp(format, "vmkcore") == 0) { 2024 strcpy(partcode, "fc");2018 mr_asprintf(&partcode, "fc"); 2025 2019 } else if (strcmp(format, "raid") == 0) { 2026 strcpy(partcode, "fd");2020 mr_asprintf(&partcode, "fd"); 2027 2021 } else if (strcmp(format, "ntfs") == 0) { 2028 strcpy(partcode, "7");2022 mr_asprintf(&partcode, "7"); 2029 2023 } else if ((strcmp(format, "ufs") == 0) 2030 2024 || (strcmp(format, "ffs") == 0)) { /* raid autodetect */ 2031 strcpy(partcode, "a5");2025 mr_asprintf(&partcode, "a5"); 2032 2026 } else if (strcmp(format, "lvm") == 0) { 2033 strcpy(partcode, "8e");2027 mr_asprintf(&partcode, "8e"); 2034 2028 } else if (format[0] == '\0') { /* LVM physical partition */ 2035 partcode[0] = '\0';2029 mr_asprintf(&partcode, ""); 2036 2030 } else if (strlen(format) >= 1 && strlen(format) <= 2) { 2037 strcpy(partcode, format);2031 mr_asprintf(&partcode, format); 2038 2032 } else { 2039 2033 /* probably an image */ … … 2042 2036 mr_free(tmp); 2043 2037 #ifdef __FreeBSD__ 2044 strcpy(partcode, format); // was a52038 mr_asprintf(&partcode, format); // was a5 2045 2039 #else 2046 strcpy(partcode, format); // was 832040 mr_asprintf(&partcode, format); // was 83 2047 2041 #endif 2048 2042 } 2049 2043 log_msg(1, tmp, "Setting %s's type to %s (%s)", partition, format, partcode); 2050 if (partcode[0] != '\0' && strcmp(partcode, "83")) { /* no need to set type if 83: 83 is default */ 2044 mr_free(partition); 2045 2046 if (partcode != NULL && strcmp(partcode, "83")) { /* no need to set type if 83: 83 is default */ 2051 2047 2052 2048 if (pout_to_fdisk) { … … 2104 2100 } 2105 2101 2106 paranoid_free(partition); 2107 paranoid_free(partcode); 2108 2102 mr_free(partcode); 2109 2103 return (res); 2110 2104 } -
branches/2.2.10/mondo/src/mondorestore/mondo-rstr-newt.c
r2314 r2316 12 12 #include "mondo-rstr-newt.h" 13 13 #include "mr_mem.h" 14 #include "mr_str.h" 14 15 15 16 //static char cvsid[] = "$Id$"; … … 255 256 { 256 257 257 /** buffers ***********************************************************/258 char sz_out[MAX_STR_LEN];259 260 258 /** int ****************************************************************/ 261 259 int items = 0; 262 260 int i = 0; 263 261 262 char *p = NULL; 263 264 264 assert(raidrec != NULL); 265 265 266 sz_out[0] = '\0'; 267 if (popup_and_get_string 268 ("Add variable", "Enter the name of the variable to add", sz_out, 269 MAX_STR_LEN)) { 270 strip_spaces(sz_out); 266 p = popup_and_get_string("Add variable", "Enter the name of the variable to add", ""); 267 if (p != NULL) { 268 mr_strip_spaces(p); 271 269 items = raidrec->additional_vars.entries; 272 270 for (i = 0; 273 271 i < items 274 && strcmp(raidrec->additional_vars.el[i].label, sz_out); i++);272 && strcmp(raidrec->additional_vars.el[i].label, p); i++); 275 273 if (i < items) { 276 274 popup_and_OK 277 275 ("No need to add that variable. It is already listed here."); 278 276 } else { 279 strcpy(raidrec->additional_vars.el[items].label, sz_out);277 strcpy(raidrec->additional_vars.el[items].label, p); 280 278 edit_varslist_entry(raidrec, items); 281 279 raidrec->additional_vars.entries = ++items; 282 280 } 283 281 } 282 mr_free(p); 284 283 } 285 284 #endif … … 464 463 465 464 /** int ***************************************************************/ 466 int res = 0;467 465 int out = 0; 466 int i = 0; 468 467 469 468 /** buffers ***********************************************************/ 470 char tmp[MAX_STR_LEN]; 469 char *tmp = NULL; 470 char *p = NULL; 471 char *q = NULL; 471 472 char *prompt = NULL; 472 char *sz = NULL;473 473 474 474 mr_asprintf(&prompt, "Please enter the RAID level you want. (concat, striped, raid5)"); 475 475 if (raidrec->raidlevel == -1) { 476 strcpy(tmp, "concat");476 mr_asprintf(&tmp, "concat"); 477 477 } else if (raidrec->raidlevel == 0) { 478 strcpy(tmp, "striped");478 mr_asprintf(&tmp, "striped"); 479 479 } else { 480 sprintf(tmp, "raid%i", raidrec->raidlevel);480 mr_asprintf(&tmp, "raid%i", raidrec->raidlevel); 481 481 } 482 482 for (out = 999; out == 999;) { 483 res = popup_and_get_string("Specify RAID level", prompt, tmp, 10); 484 if (!res) { 483 p = popup_and_get_string("Specify RAID level", prompt, tmp); 484 if (p == NULL) { 485 mr_free(tmp); 486 mr_free(prompt); 485 487 mr_free(prompt); 486 488 return; 487 489 } 488 strip_spaces(tmp); 489 if (tmp[0] == '[' && tmp[strlen(tmp) - 1] == ']') { 490 mr_asprintf(&sz, "%s", tmp); 491 strncpy(tmp, sz + 1, strlen(sz) - 2); 492 tmp[strlen(sz) - 2] = '\0'; 490 mr_strip_spaces(p); 491 /* Suppress brakets at each hend */ 492 if (p[0] == '[' && p[strlen(p) - 1] == ']') { 493 q = p+1; 494 i = 0; 495 while (*q != ']') { 496 p[i] = *q; 497 i++; 498 q++; 499 } 500 p[i] = '\0'; 493 501 mr_free(sz); 494 502 } 495 if (!strcmp( tmp, "concat")) {503 if (!strcmp(p, "concat")) { 496 504 out = -1; 497 } else if (!strcmp( tmp, "striped")) {505 } else if (!strcmp(p, "striped")) { 498 506 out = 0; 499 } else if (!strcmp( tmp, "raid5")) {507 } else if (!strcmp(p, "raid5")) { 500 508 out = 5; 501 509 } 502 log_it(tmp); 510 log_it("Raid level : %s",p); 511 mr_free(p); 512 503 513 if (is_this_raid_personality_registered(out)) { 504 log_it 505 ("Groovy. You've picked a RAID personality which is registered."); 514 log_it("Groovy. You've picked a RAID personality which is registered."); 506 515 } else { 507 if (ask_me_yes_or_no 508 ("You have chosen a RAID personality which is not registered with the kernel. Make another selection?")) 516 if (ask_me_yes_or_no("You have chosen a RAID personality which is not registered with the kernel. Make another selection?")) 509 517 { 510 518 out = 999; … … 512 520 } 513 521 } 522 mr_free(tmp); 514 523 mr_free(prompt); 524 515 525 raidrec->raidlevel = out; 516 526 #else 517 527 /** buffers ***********************************************************/ 518 char tmp[MAX_STR_LEN];528 char *tmp = NULL; 519 529 char *personalities = NULL; 520 530 char *prompt = NULL; 521 char *sz = NULL; 522 int out = 0, res = 0; 531 char *p = NULL; 532 char *q = NULL; 533 int out = 0; 534 int i = 0; 523 535 524 536 525 537 assert(raidrec != NULL); 526 system 527 538 539 system("grep Pers /proc/mdstat > /tmp/raid-personalities.txt 2> /dev/null"); 528 540 mr_asprintf(&personalities, "%s", last_line_of_file("/tmp/raid-personalities.txt")); 529 541 mr_asprintf(&prompt, "Please enter the RAID level you want. %s", personalities); … … 531 543 532 544 if (raidrec->raid_level == -1) { 533 strcpy(tmp, "linear");545 mr_asprintf(&tmp, "linear"); 534 546 } else { 535 sprintf(tmp, "%d", raidrec->raid_level);547 mr_asprintf(&tmp, "%d", raidrec->raid_level); 536 548 } 537 549 for (out = 999; 538 550 out != -1 && out != 0 && out != 1 && out != 4 && out != 5 539 551 && out != 10;) { 540 res = popup_and_get_string("Specify RAID level", prompt, tmp, 10); 541 if (!res) { 552 p = popup_and_get_string("Specify RAID level", prompt, tmp); 553 554 if (p == NULL) { 555 mr_free(tmp); 556 mr_free(prompt); 542 557 mr_free(prompt); 543 558 return; 544 559 } 545 strip_spaces(tmp); 546 if (tmp[0] == '[' && tmp[strlen(tmp) - 1] == ']') { 547 mr_asprintf(&sz, "%s", tmp); 548 strncpy(tmp, sz + 1, strlen(sz) - 2); 549 tmp[strlen(sz) - 2] = '\0'; 560 mr_strip_spaces(p); 561 if (p[0] == '[' && p[strlen(p) - 1] == ']') { 562 q = p+1; 563 i = 0; 564 while (*q != ']') { 565 p[i] = *q; 566 i++; 567 q++; 568 } 569 p[i] = '\0'; 550 570 mr_free(sz); 551 571 } 552 if (!strcmp( tmp, "linear")) {572 if (!strcmp(p, "linear")) { 553 573 out = -1; 554 } else if (!strncmp( tmp, "raid", 4)) {555 out = atoi( tmp + 4);574 } else if (!strncmp(p, "raid", 4)) { 575 out = atoi(p + 4); 556 576 } else { 557 out = atoi( tmp);558 } 559 log_it( tmp);577 out = atoi(p); 578 } 579 log_it("Raid level : %s",p); 560 580 if (is_this_raid_personality_registered(out)) { 561 log_it 562 ("Groovy. You've picked a RAID personality which is registered."); 581 log_it("Groovy. You've picked a RAID personality which is registered."); 563 582 } else { 564 if (ask_me_yes_or_no 565 ("You have chosen a RAID personality which is not registered with the kernel. Make another selection?")) 566 { 583 if (ask_me_yes_or_no("You have chosen a RAID personality which is not registered with the kernel. Make another selection?")) { 567 584 out = 999; 568 585 } 569 586 } 570 587 } 588 mr_free(tmp); 571 589 mr_free(prompt); 572 590 raidrec->raid_level = out; … … 1696 1714 int currline_a, currline_u; 1697 1715 1716 char *p = NULL; 1717 1698 1718 struct mountlist_itself *unallocparts; 1699 1719 … … 1828 1848 choose_raid_level(raidrec); 1829 1849 } else if (b_res == bStripeSize) { 1830 char tmp[64]; 1831 sprintf(tmp, "%i", raidrec->stripesize); 1832 if (popup_and_get_string 1833 ("Stripe size", 1834 "Please enter the stripe size in kilobytes.", tmp, 20)) { 1835 raidrec->stripesize = atoi(tmp); 1850 char *tmp = NULL; 1851 1852 mr_asprintf(&tmp, "%i", raidrec->stripesize); 1853 p = popup_and_get_string("Stripe size", "Please enter the stripe size in kilobytes.", tmp); 1854 mr_free(tmp); 1855 1856 if (p != NULL) { 1857 raidrec->stripesize = atoi(p); 1836 1858 } 1859 mr_free(p); 1837 1860 } else if ((b_res == bAlloc) || (b_res == unallocListbox)) { 1838 1861 if (currline_u <= unallocparts->entries) … … 1868 1891 1869 1892 /** buffers ***********************************************************/ 1870 char header[MAX_STR_LEN]; 1871 char comment[MAX_STR_LEN]; 1872 char sz_out[MAX_STR_LEN]; 1893 char *header = NULL; 1894 char *comment = NULL; 1895 char *sz_out = NULL; 1896 char *p = NULL; 1873 1897 1874 1898 assert(raidrec != 0); 1875 1899 assert(lino >= 0); 1876 1900 1877 strcpy(sz_out, raidrec->additional_vars.el[lino].value); 1878 sprintf(header, "Edit %s", raidrec->additional_vars.el[lino].label); 1879 sprintf(comment, "Please set %s's value (currently '%s')", 1880 raidrec->additional_vars.el[lino].label, sz_out); 1881 if (popup_and_get_string(header, comment, sz_out, MAX_STR_LEN)) { 1882 strip_spaces(sz_out); 1883 strcpy(raidrec->additional_vars.el[lino].value, sz_out); 1884 } 1901 mr_asprintf(&sz_out, "%s", raidrec->additional_vars.el[lino].value); 1902 mr_asprintf(&header, "Edit %s", raidrec->additional_vars.el[lino].label); 1903 mr_asprintf(&comment, "Please set %s's value (currently '%s')", raidrec->additional_vars.el[lino].label, sz_out); 1904 p = popup_and_get_string(header, comment, sz_out); 1905 if (p != NULL) { 1906 mr_strip_spaces(p); 1907 strcpy(raidrec->additional_vars.el[lino].value, p); 1908 } 1909 mr_free(p); 1885 1910 } 1886 1911 … … 2242 2267 * @return TRUE if OK was pressed, FALSE otherwise. 2243 2268 */ 2244 bool 2245 get_isodir_info(char *isodir_device, char *isodir_format, 2246 char *isodir_path, bool nuke_me_please) 2247 { 2269 bool get_isodir_info(char *isodir_device, char *isodir_format, char *isodir_path, bool nuke_me_please) 2270 { 2271 2272 char *p = NULL; 2273 char *q = NULL; 2274 char *r = NULL; 2275 char *idev = NULL; 2276 bool ret = FALSE; /* Should be false by default, and modfiy if conditions respected */ 2248 2277 2249 2278 /** initialize ********************************************************/ 2250 2279 2251 2280 assert(isodir_device != NULL); 2252 assert(isodir_format != NULL);2253 2281 assert(isodir_path != NULL); 2254 2282 2255 2283 log_it("isodir_path = %s", isodir_path); 2256 isodir_format[0] = '\0';2257 2284 if (isodir_device[0] == '\0') { 2258 strcpy(isodir_device, "/dev/"); 2259 } 2285 mr_asprintf(&idev, "/dev/"); 2286 } else { 2287 mr_asprintf(&idev, "%s", isodir_device); 2288 } 2289 2260 2290 if (isodir_path[0] == '\0') { 2261 2291 strcpy(isodir_path, "/"); 2262 2292 } 2263 2293 if (does_file_exist("/tmp/NFS-SERVER-PATH")) { 2264 strcpy(isodir_device, last_line_of_file("/tmp/NFS-SERVER-MOUNT")); 2265 strcpy(isodir_format, "nfs"); 2294 mr_free(idev); 2295 mr_asprintf(&idev, "%s", last_line_of_file("/tmp/NFS-SERVER-MOUNT")); 2296 mr_asprintf(&isodir_format, "nfs"); 2266 2297 strcpy(isodir_path, last_line_of_file("/tmp/NFS-SERVER-PATH")); 2267 2298 } 2299 2300 /* modify for the caller */ 2301 strcpy(isodir_device, idev); 2268 2302 if (nuke_me_please) { 2269 return (TRUE); 2270 } 2271 2272 if (popup_and_get_string 2273 ("ISO Mode - device", "On what device do the ISO files live?", 2274 isodir_device, MAX_STR_LEN / 4)) { 2275 if (popup_and_get_string 2276 ("ISO Mode - format", 2277 "What is the disk format of the device? (Hit ENTER if you don't know.)", 2278 isodir_format, 16)) { 2279 if (popup_and_get_string 2280 ("ISO Mode - path", 2281 "At what path on this device can the ISO files be found?", 2282 isodir_path, MAX_STR_LEN / 4)) { 2283 strip_spaces(isodir_device); 2284 strip_spaces(isodir_format); 2285 strip_spaces(isodir_path); 2286 log_it("isodir_device = %s - isodir_format = %s - isodir_path = %s", isodir_device, isodir_format, isodir_path); 2287 return (TRUE); 2303 ret = TRUE; 2304 } else { 2305 p = popup_and_get_string("ISO Mode - device", "On what device do the ISO files live?", idev); 2306 if (p != NULL) { 2307 q = popup_and_get_string("ISO Mode - format", "What is the disk format of the device? (Hit ENTER if you don't know.)", isodir_format); 2308 mr_free(isodir_format); 2309 2310 if (q != NULL) { 2311 r = popup_and_get_string("ISO Mode - path", "At what path on this device can the ISO files be found?", isodir_path); 2312 if (r != NULL) { 2313 mr_strip_spaces(p); 2314 mr_strip_spaces(q); 2315 mr_strip_spaces(r); 2316 2317 isodir_format = q; 2318 2319 /* modify for the caller */ 2320 strcpy(isodir_device, p); 2321 strcpy(isodir_path, r); 2322 log_it("isodir_device = %s - isodir_format = %s - isodir_path = %s", isodir_device, isodir_format, isodir_path); 2323 mr_free(r); 2324 2325 ret = TRUE; 2326 } 2288 2327 } 2289 2328 } 2290 } 2291 return (FALSE); 2329 mr_free(p); 2330 } 2331 mr_free(idev); 2332 mr_free(isodir_format); 2333 return(ret); 2292 2334 } 2293 2335 … … 2700 2742 /** buffers **********************************************************/ 2701 2743 void *keylist[ARBITRARY_MAXIMUM]; 2702 char *tmp; 2703 char *help_text; 2704 char *title_of_window; 2705 char *sz_res; 2706 char *header_text; 2744 char *tmp = NULL; 2745 char *help_text = NULL; 2746 char *title_of_window = NULL; 2747 char *sz_res = NULL; 2748 char *header_text = NULL; 2749 char *p = NULL; 2707 2750 2708 2751 /** int **************************************************************/ … … 2717 2760 2718 2761 log_it("malloc'ing"); 2719 malloc_string(tmp); 2720 malloc_string(help_text); 2721 malloc_string(title_of_window); 2722 malloc_string(sz_res); 2723 malloc_string(header_text); 2724 if (!(bkp_raidrec = malloc(sizeof(struct raid_device_record)))) { 2725 fatal_error("Cannot malloc space for raidrec"); 2726 } 2727 if (!(bkp_disklist = malloc(sizeof(struct list_of_disks)))) { 2728 fatal_error("Cannot malloc space for disklist"); 2729 } 2730 if (!(bkp_raidlist = malloc(sizeof(struct raidlist_itself)))) { 2731 fatal_error("Cannot malloc space for raidlist"); 2732 } 2733 if (! 2734 (unallocated_raid_partitions = 2735 malloc(sizeof(struct mountlist_itself)))) { 2736 fatal_error("Cannot malloc space for unallocated_raid_partitions"); 2737 } 2738 2739 memcpy((void *) bkp_raidlist, (void *) raidlist, 2740 sizeof(struct raidlist_itself)); 2741 memcpy((void *) bkp_raidrec, (void *) raidrec, 2742 sizeof(struct raid_device_record)); 2743 memcpy((void *) bkp_disklist, (void *) disklist, 2744 sizeof(struct list_of_disks)); 2762 bkp_raidrec = mr_malloc(sizeof(struct raid_device_record)); 2763 bkp_disklist = mr_malloc(sizeof(struct list_of_disks)); 2764 bkp_raidlist = mr_malloc(sizeof(struct raidlist_itself)); 2765 unallocated_raid_partitions = mr_malloc(sizeof(struct mountlist_itself)); 2766 2767 memcpy((void *) bkp_raidlist, (void *) raidlist, sizeof(struct raidlist_itself)); 2768 memcpy((void *) bkp_raidrec, (void *) raidrec, sizeof(struct raid_device_record)); 2769 memcpy((void *) bkp_disklist, (void *) disklist, sizeof(struct list_of_disks)); 2745 2770 2746 2771 log_it("Post-malloc"); 2747 strcpy(help_text, 2748 " Edit this RAID device's list of partitions. Choose OK or Cancel when done."); 2749 sprintf(header_text, "%-24s %s", "Device", "Index"); 2750 sprintf(title_of_window, "%s contains...", raidrec->raid_device); 2772 mr_asprintf(&help_text, " Edit this RAID device's list of partitions. Choose OK or Cancel when done."); 2773 mr_asprintf(&header_text, "%-24s %s", "Device", "Index"); 2774 mr_asprintf(&title_of_window, "%s contains...", raidrec->raid_device); 2751 2775 newtPushHelpLine(help_text); 2752 2776 for (b_res = (newtComponent) 12345; b_res != bOK && b_res != bCancel;) { … … 2803 2827 redraw_disklist(disklist, keylist, partitionsListbox); 2804 2828 } else { 2805 sprintf(tmp, "%s's index is %d. What should it be?",2806 raidrec->raid_device,2807 disklist->el[currline].index);2808 sprintf(sz_res, "%d", disklist->el[currline].index);2809 if (p opup_and_get_string("Set index", tmp, sz_res, 10)) {2829 mr_asprintf(&tmp, "%s's index is %d. What should it be?", raidrec->raid_device, disklist->el[currline].index); 2830 mr_asprintf(&sz_res, "%d", disklist->el[currline].index); 2831 p = popup_and_get_string("Set index", tmp, sz_res); 2832 mr_free(tmp); 2833 if (p != NULL) { 2810 2834 disklist->el[currline].index = atoi(sz_res); 2811 2835 } 2812 2836 redraw_disklist(disklist, keylist, partitionsListbox); 2837 mr_free(sz_res); 2813 2838 } 2814 2839 } … … 2818 2843 } 2819 2844 newtPopHelpLine(); 2845 mr_free(help_text); 2846 mr_free(header_text); 2847 mr_free(title_of_window); 2848 2820 2849 if (b_res == bCancel) { 2821 memcpy((void *) raidlist, (void *) bkp_raidlist, 2822 sizeof(struct raidlist_itself)); 2823 memcpy((void *) raidrec, (void *) bkp_raidrec, 2824 sizeof(struct raid_device_record)); 2825 memcpy((void *) disklist, (void *) bkp_disklist, 2826 sizeof(struct list_of_disks)); 2827 } 2828 paranoid_free(tmp); 2829 paranoid_free(help_text); 2830 paranoid_free(title_of_window); 2831 paranoid_free(sz_res); 2832 paranoid_free(header_text); 2833 paranoid_free(bkp_raidrec); 2834 paranoid_free(bkp_disklist); 2835 paranoid_free(bkp_raidlist); 2836 paranoid_free(unallocated_raid_partitions); 2850 memcpy((void *) raidlist, (void *) bkp_raidlist, sizeof(struct raidlist_itself)); 2851 memcpy((void *) raidrec, (void *) bkp_raidrec, sizeof(struct raid_device_record)); 2852 memcpy((void *) disklist, (void *) bkp_disklist, sizeof(struct list_of_disks)); 2853 } 2854 mr_free(bkp_raidrec); 2855 mr_free(bkp_disklist); 2856 mr_free(bkp_raidlist); 2857 mr_free(unallocated_raid_partitions); 2837 2858 } 2838 2859 #endif -
branches/2.2.10/mondo/src/mondorestore/mondo-rstr-newt.h
r2202 r2316 159 159 void open_progress_form(char *, char *, char *, char *, long); 160 160 void popup_and_OK(char *); 161 bool popup_and_get_string(char *, char *, char *, int);161 char *popup_and_get_string(char *, char *, char *); 162 162 bool popup_with_buttons(char *, char *, char *); 163 163 void redraw_disklist(struct list_of_disks *, void *keylist[], -
branches/2.2.10/mondo/src/mondorestore/mondo-rstr-tools.c
r2296 r2316 42 42 */ 43 43 extern char *g_isodir_device; 44 extern char *g_isodir_format;45 44 extern long g_current_progress, g_maximum_progress; 46 45 extern char *g_biggielist_txt; // where 'biggielist.txt' is stored, on ramdisk / tempdir; … … 96 95 */ 97 96 paranoid_free(g_isodir_device); 98 paranoid_free(g_isodir_format);99 97 100 98 } … … 264 262 int retval = 0, i; 265 263 bool already_mounted = FALSE; 264 char *isodir_format = NULL; 266 265 267 266 assert(bkpinfo != NULL); … … 281 280 } 282 281 283 if (!get_isodir_info(g_isodir_device, g_isodir_format, bkpinfo->isodir, nuke_me_please)) { 282 if (!get_isodir_info(g_isodir_device, isodir_format, bkpinfo->isodir, nuke_me_please)) { 283 mr_free(isodir_format); 284 284 return (1); 285 285 } … … 291 291 } else { 292 292 mr_asprintf(&mount_isodir_command, "mount %s", g_isodir_device); 293 if (strlen(g_isodir_format) > 1) { 294 mr_strcat(mount_isodir_command, " -t %s", g_isodir_format); 295 } 293 if (isodir_format) { 294 mr_strcat(mount_isodir_command, " -t %s", isodir_format); 295 } 296 296 297 mr_strcat(mount_isodir_command, " -o ro %s", bkpinfo->isodir); 297 298 run_program_and_log_output("df -m", FALSE); … … 308 309 ("I have mounted the device where the ISO files are stored."); 309 310 } 311 mr_free(isodir_format); 312 310 313 if (!IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) { 311 314 mount_media(); … … 1426 1429 /** malloc **/ 1427 1430 char *command = NULL; 1428 char *boot_device ;1431 char *boot_device = NULL; 1429 1432 char *rootdev; 1430 1433 char *rootdrive; … … 1432 1435 char *tmp = NULL; 1433 1436 char *editor; 1434 1435 int res; 1436 int done;1437 1438 malloc_string(boot_device); 1437 char *p = NULL; 1438 1439 int res = 0; 1440 bool done; 1441 1439 1442 malloc_string(editor); 1440 1443 malloc_string(rootdev); … … 1443 1446 assert_string_is_neither_NULL_nor_zerolength(bd); 1444 1447 strcpy(editor, find_my_editor()); 1445 strcpy(boot_device, bd);1448 mr_asprintf(&boot_device, "%s", bd); 1446 1449 1447 1450 if (offer_to_run_stabgrub 1448 && ask_me_yes_or_no("Did you change the mountlist or cloned the system ?")) 1451 && ask_me_yes_or_no("Did you change the mountlist or cloned the system ?")) { 1449 1452 /* interactive mode */ 1450 {1451 1453 mvaddstr_and_log_it(g_currentY, 1452 1454 0, 1453 1455 "Modifying fstab, mtab, device.map and menu.lst, and running GRUB... "); 1454 1456 for (done = FALSE; !done;) { 1455 popup_and_get_string("Boot device", 1456 "Please confirm/enter the boot device. If in doubt, try /dev/hda", 1457 boot_device, MAX_STR_LEN / 4); 1458 mr_asprintf(&command, "stabgrub-me %s", boot_device); 1457 p = popup_and_get_string("Boot device", "Please confirm/enter the boot device. If in doubt, try /dev/hda", boot_device); 1458 if (p == NULL) { 1459 done = TRUE; 1460 mr_free(p); 1461 /* we want some warnings later on */ 1462 res = 1; 1463 continue; 1464 } 1465 mr_asprintf(&command, "stabgrub-me %s", p); 1466 mr_free(p); 1467 1459 1468 res = run_program_and_log_output(command, 1); 1460 1469 mr_free(command); … … 1494 1503 } 1495 1504 } 1496 } else 1505 } else { 1497 1506 /* nuke mode */ 1498 {1499 1507 if (!run_program_and_log_output("which grub-MR", FALSE)) { 1500 1508 log_msg(1, "Yay! grub-MR found..."); … … 1521 1529 } 1522 1530 } 1531 mr_free(boot_device); 1532 1523 1533 if (res) { 1524 1534 mvaddstr_and_log_it(g_currentY++, 74, "Failed."); … … 1540 1550 paranoid_free(rootdrive); 1541 1551 paranoid_free(conffile); 1542 paranoid_free(boot_device);1543 1552 paranoid_free(editor); 1544 1553 … … 1744 1753 /** malloc **/ 1745 1754 char *command = NULL; 1746 char *boot_device ;1755 char *boot_device = NULL; 1747 1756 char *tmp = NULL; 1748 1757 char *editor; 1758 char *p = NULL; 1749 1759 int res; 1750 1760 int done; 1751 1761 1752 malloc_string(boot_device);1753 1762 malloc_string(editor); 1754 1763 assert_string_is_neither_NULL_nor_zerolength(bd); 1755 1764 1756 1765 strcpy(editor, find_my_editor()); 1757 strcpy(boot_device, bd);1766 mr_asprintf(&boot_device, "%s", bd); 1758 1767 1759 1768 if (offer_to_hack_scripts 1760 && ask_me_yes_or_no("Did you change the mountlist or cloned the system ?")) 1769 && ask_me_yes_or_no("Did you change the mountlist or cloned the system ?")) { 1761 1770 /* interactive mode */ 1762 {1763 1771 mvaddstr_and_log_it(g_currentY, 0, 1764 1772 "Modifying fstab and restoring MBR... "); … … 1776 1784 } 1777 1785 } 1778 popup_and_get_string("Boot device", 1779 "Please confirm/enter the boot device. If in doubt, try /dev/hda", 1780 boot_device, MAX_STR_LEN / 4); 1781 mr_asprintf(&command, "stabraw-me %s", boot_device); 1786 p = popup_and_get_string("Boot device", "Please confirm/enter the boot device. If in doubt, try /dev/hda", boot_device); 1787 if (p == NULL) { 1788 done = TRUE; 1789 mr_free(p); 1790 /* we want some warnings later on */ 1791 res = 1; 1792 continue; 1793 } 1794 mr_asprintf(&command, "stabraw-me %s", p); 1795 mr_free(p); 1796 1782 1797 res = run_program_and_log_output(command, 3); 1783 1798 mr_free(command); … … 1789 1804 } 1790 1805 } 1791 } else 1806 } else { 1792 1807 /* nuke mode */ 1793 {1794 1808 mr_asprintf(&command, "raw-MR %s /tmp/mountlist.txt", boot_device); 1795 1809 log_msg(2, "run_raw_mbr() --- command='%s'", command); … … 1800 1814 mr_free(command); 1801 1815 } 1816 mr_free(boot_device); 1802 1817 1803 1818 if (res) { … … 1808 1823 mvaddstr_and_log_it(g_currentY++, 74, "Done."); 1809 1824 } 1810 paranoid_free(boot_device);1811 1825 paranoid_free(editor); 1812 1826 return (res); … … 1839 1853 malloc_string(g_mondo_home); 1840 1854 malloc_string(g_isodir_device); 1841 malloc_string(g_isodir_format);1842 1855 1843 1856 temppath = bkpinfo->tmpdir; -
branches/2.2.10/mondo/src/mondorestore/mondoprep.h
r2281 r2316 33 33 extern void close_progress_form(void); 34 34 extern void popup_and_OK(char *); 35 extern bool popup_and_get_string(char *, char *, char *, int);35 extern char *popup_and_get_string(char *, char *, char *); 36 36 extern long get_time(void); 37 37 extern bool is_this_device_mounted(char *); -
branches/2.2.10/mondo/src/mondorestore/mondorestore.c
r2296 r2316 439 439 /** needs malloc **********/ 440 440 char *tmp; 441 char *p = NULL; 441 442 char *tmp1 = NULL; 442 443 char *fstab_fname; … … 470 471 read_cfg_file_into_bkpinfo(g_mondo_cfg_file); 471 472 log_it("Done loading config file; resizing ML"); 472 if (bkpinfo->backup_media_type == nfs) {473 strcpy(tmp, bkpinfo->prefix);474 if (popup_and_get_string475 ("Prefix", "Prefix of your ISO images ?", tmp, MAX_STR_LEN / 4)) {476 strcpy(bkpinfo->prefix, tmp);477 log_msg(1, "Prefix set to %s",bkpinfo->prefix);478 }479 }480 473 481 474 #ifdef __FreeBSD__ … … 607 600 gotos_suck: 608 601 strcpy(tmp, old_restpath); 609 // (NB: %s is where your filesystem is mounted now, by default)", MNT_RESTORING);610 if (popup_and_get_string611 ("Restore path", "Restore files to where?", tmp,612 MAX_STR_LEN / 4)) {602 // (NB: %s is where your filesystem is mounted now, by default)", MNT_RESTORING); 603 p = popup_and_get_string("Restore path", "Restore files to where?", tmp); 604 if (p != NULL) { 605 strcpy(tmp, p); 613 606 if (!strcmp(tmp, "/")) { 614 607 if (!ask_me_yes_or_no("Are you sure?")) { … … 625 618 free_filelist(filelist); 626 619 } 620 mr_free(p); 621 627 622 if (!ask_me_yes_or_no 628 623 ("Restore another subset of your backup?")) { … … 952 947 /** malloc **/ 953 948 char *old_restpath; 949 char *p = NULL; 954 950 955 951 struct mountlist_itself *mountlist = NULL; … … 997 993 save_filelist(filelist, "/tmp/selected-files.txt"); 998 994 strcpy(old_restpath, bkpinfo->restore_path); 999 if (popup_and_get_string("Restore path", 1000 "Restore files to where? )", 1001 bkpinfo->restore_path, MAX_STR_LEN / 4)) { 995 p = popup_and_get_string("Restore path", "Restore files to where? )", bkpinfo->restore_path); 996 if (p != NULL) { 997 strcpy(bkpinfo->restore_path, p); 998 mr_free(p); 999 1002 1000 log_it("Restoring everything"); 1003 1001 retval += restore_everything(filelist); -
branches/2.2.10/mondo/src/mondorestore/mr-externs.h
r2281 r2316 59 59 extern int partition_everything(struct mountlist_itself *); 60 60 extern void popup_and_OK(char *); 61 extern bool popup_and_get_string(char *, char *, char *, int);61 extern char *popup_and_get_string(char *, char *, char *); 62 62 extern void setup_newt_stuff(void); 63 63 extern void reset_bkpinfo(); -
branches/2.2.10/tools/quality
r2312 r2316 49 49 cat /tmp/mondo.quality 50 50 echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` mr_asprintf without \"" 51 find . -name '*.c' -o -name '*.h' | egrep -v '\.svn|/\*|monitas|/\*|mindi-busybox' | xargs grep -rw mr_getline | egrep -v '/\*' | egrep -v 'mr_getline\(&' > /tmp/mondo.quality 52 cat /tmp/mondo.quality 53 echo "monodrescue uses : `cat /tmp/mondo.quality | wc -l` mr_getline without &" 54 51 55 echo " " 52 56 echo "Splint: "
Note:
See TracChangeset
for help on using the changeset viewer.