Changeset 3892 in MondoRescue for branches/3.3/mondo/src/mondorestore/mondo-rstr-newt.c
- Timestamp:
- Mar 12, 2024, 3:10:24 AM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.3/mondo/src/mondorestore/mondo-rstr-newt.c
r3879 r3892 615 615 * @ingroup restoreGuiMountlist 616 616 */ 617 void 618 choose_raid_level(struct OSSWAP (raid_device_record, vinum_plex) * raidrec) 619 { 617 void choose_raid_level(struct OSSWAP (raid_device_record, vinum_plex) * raidrec) { 620 618 621 619 #ifdef __FreeBSD__ 622 620 623 621 /** int ***************************************************************/ 624 int res = 0;625 622 int out = 0; 626 623 627 624 /** buffers ***********************************************************/ 628 char tmp[MAX_STR_LEN]; 625 char *tmp = NULL; 626 char *tmp1 = NULL; 629 627 char *prompt = NULL; 630 char sz[MAX_STR_LEN];628 char *sz = NULL; 631 629 632 630 mr_asprintf(prompt, "Please enter the RAID level you want. (concat, striped, raid5)"); 633 631 if (raidrec->raidlevel == -1) { 634 strcpy(tmp, "concat");632 mr_asprintf(tmp, "%s", "concat"); 635 633 } else if (raidrec->raidlevel == 0) { 636 strcpy(tmp, "striped");634 mr_asprintf(tmp, "%s", "striped"); 637 635 } else { 638 sprintf(tmp, "raid%i", raidrec->raidlevel);636 mr_asprintf(tmp, "raid%i", raidrec->raidlevel); 639 637 } 640 638 for (out = 999; out == 999;) { 641 res = popup_and_get_string("Specify RAID level", prompt, tmp, 10);642 if ( !res) {639 tmp1 = mr_popup_and_get_string("Specify RAID level", prompt, tmp); 640 if (tmp1 == NULL) { 643 641 mr_free(prompt); 642 mr_free(tmp); 644 643 return; 645 644 } 646 strip_spaces(tmp); 645 mr_free(tmp); 646 tmp = mr_strip_spaces(tmp1); 647 log_it(tmp); 648 647 649 if (tmp[0] == '[' && tmp[strlen(tmp) - 1] == ']') { 648 strcpy(sz, tmp); 649 strncpy(tmp, sz + 1, strlen(sz) - 2); 650 sz = tmp; 651 // safe as shorter 652 mr_strncpy(tmp, sz + 1, strlen(sz) - 2); 650 653 tmp[strlen(sz) - 2] = '\0'; 651 654 } … … 657 660 out = 5; 658 661 } 659 log_it(tmp); 662 mr_free(tmp); 663 660 664 if (is_this_raid_personality_registered(out)) { 661 665 log_it("Groovy. You've picked a RAID personality which is registered."); … … 664 668 { 665 669 out = 999; 670 if (raidrec->raid_level == -1) { 671 mr_asprintf(tmp, "%s", "linear"); 672 } else { 673 mr_asprintf(tmp, "%d", raidrec->raid_level); 674 } 666 675 } 667 676 } 668 677 } 669 678 mr_free(prompt); 679 mr_free(tmp); 670 680 671 681 raidrec->raidlevel = out; 672 682 #else 673 683 /** buffers ***********************************************************/ 674 char tmp[MAX_STR_LEN]; 684 char *tmp = NULL; 685 char *tmp1 = NULL; 675 686 char *personalities = NULL; 676 687 char *prompt = NULL; 677 char sz[MAX_STR_LEN];688 char *sz; 678 689 int out = 0; 679 int res = 0;680 690 681 691 682 692 assert(raidrec != NULL); 683 paranoid_system("grep Pers /proc/mdstat> /tmp/raid-personalities.txt 2> /dev/null");693 paranoid_system("grep Pers " MDSTAT_FILE " > /tmp/raid-personalities.txt 2> /dev/null"); 684 694 mr_asprintf(personalities, "%s", last_line_of_file("/tmp/raid-personalities.txt")); 685 695 mr_asprintf(prompt, "Please enter the RAID level you want. %s", personalities); … … 687 697 688 698 if (raidrec->raid_level == -1) { 689 strcpy(tmp, "linear");699 mr_asprintf(tmp, "%s", "linear"); 690 700 } else { 691 sprintf(tmp, "%d", raidrec->raid_level);701 mr_asprintf(tmp, "%d", raidrec->raid_level); 692 702 } 693 703 for (out = 999; 694 704 out != -1 && out != 0 && out != 1 && out != 4 && out != 5 695 705 && out != 10;) { 696 res = popup_and_get_string("Specify RAID level", prompt, tmp, 10); 697 if (!res) { 706 tmp1 = mr_popup_and_get_string("Specify RAID level", prompt, tmp); 707 if (tmp1 == NULL) { 708 mr_free(tmp); 709 mr_free(prompt); 698 710 return; 699 711 } 700 strip_spaces(tmp); 712 mr_free(tmp); 713 tmp = mr_strip_spaces(tmp1); 714 log_it(tmp); 715 701 716 if (tmp[0] == '[' && tmp[strlen(tmp) - 1] == ']') { 702 strcpy(sz, tmp); 703 strncpy(tmp, sz + 1, strlen(sz) - 2); 717 sz = tmp; 718 // safe as shorter 719 mr_strncpy(tmp, sz + 1, strlen(sz) - 2); 704 720 tmp[strlen(sz) - 2] = '\0'; 705 721 } … … 711 727 out = atoi(tmp); 712 728 } 713 log_it(tmp); 729 mr_free(tmp); 730 714 731 if (is_this_raid_personality_registered(out)) { 715 732 log_it("Groovy. You've picked a RAID personality which is registered."); … … 717 734 if (ask_me_yes_or_no("You have chosen a RAID personality which is not registered with the kernel. Make another selection?")) { 718 735 out = 999; 736 mr_free(tmp); 737 if (raidrec->raid_level == -1) { 738 mr_asprintf(tmp, "%s", "linear"); 739 } else { 740 mr_asprintf(tmp, "%d", raidrec->raid_level); 741 } 719 742 } 720 743 } 721 744 } 722 745 mr_free(prompt); 746 mr_free(tmp); 723 747 724 748 raidrec->raid_level = out; … … 2483 2507 2484 2508 2485 #if __FreeBSD__2509 #ifdef __FreeBSD__ 2486 2510 /** 2487 2511 * Add a subdisk to @p raidrec.
Note:
See TracChangeset
for help on using the changeset viewer.