Changeset 2316 in MondoRescue for branches/2.2.10/mondo/src/mondorestore
- Timestamp:
- Aug 18, 2009, 2:34:29 PM (16 years ago)
- Location:
- branches/2.2.10/mondo/src/mondorestore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
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();
Note:
See TracChangeset
for help on using the changeset viewer.