Ignore:
Timestamp:
Sep 29, 2013, 9:31:34 AM (11 years ago)
Author:
Bruno Cornec
Message:
  • Finish with backports from 3.1 for now. Still some work to do, but we will now make that version compile and work again and serve as a base

so the gettext patch can be added

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3.2/mondo/src/mondorestore/mondo-rstr-newt.c

    r3185 r3193  
    1212#include "mondo-rstr-newt.h"
    1313#include "mr_mem.h"
     14#include "mr_str.h"
    1415
    1516//static char cvsid[] = "$Id$";
     
    5253{
    5354    /** buffers ***********************************************************/
    54     char tmp[MAX_STR_LEN];
     55    char *tmp = NULL;
    5556
    5657    /** newt **************************************************************/
     
    7879    newtPushHelpLine
    7980        ("   Add one of the following unallocated RAID partitions to this RAID device.");
    80     sprintf(tmp, "%-26s %s", "Device", "Size");
     81    mr_asprintf(tmp, "%-26s %s", "Device", "Size");
    8182    headerMsg = newtLabel(1, 1, tmp);
    8283    partitionsListbox =
     
    104105
    105106            items = disklist->entries;
    106             strcpy(disklist->el[items].device,
    107                    unallocated_raid_partitions->el[currline].device);
     107            strcpy(disklist->el[items].device, unallocated_raid_partitions->el[currline].device);
    108108            disklist->el[items].index = index;
    109109            disklist->entries = ++items;
     
    112112    }
    113113    newtFormDestroy(myForm);
     114    mr_free(tmp);
    114115    newtPopWindow();
    115116    newtPopHelpLine();
     
    152153
    153154    /** buffers **********************************************************/
    154     char drive_to_add[MAX_STR_LEN];
    155     char mountpoint_str[MAX_STR_LEN];
    156     char size_str[MAX_STR_LEN];
    157     char device_str[MAX_STR_LEN];
    158     char format_str[MAX_STR_LEN];
     155    char *drive_to_add = NULL;
     156    char *mountpoint_str = NULL;
     157    char *size_str = NULL;
     158    char *device_str = NULL;
     159    char *format_str = NULL;
    159160
    160161    /** pointers *********************************************************/
     
    169170    assert(keylist != NULL);
    170171
    171     strcpy(device_str, "/dev/");
    172     strcpy(mountpoint_str, "/");
     172    mr_asprintf(device_str, "/dev/");
     173    mr_asprintf(mountpoint_str, "/");
     174    mr_asprintf(size_str, "");
    173175#ifdef __FreeBSD__
    174     strcpy(format_str, "ufs");
     176    mr_asprintf(format_str, "ufs");
    175177#else
    176     strcpy(format_str, "ext3");
     178    mr_asprintf(format_str, "ext3");
    177179#endif
    178     size_str[0] = '\0';
    179     /* sprintf(size_str,""); */
    180180    newtOpenWindow(20, 5, 48, 10, "Add entry");
    181181    label0 = newtLabel(2, 1, "Device:    ");
     
    183183    label2 = newtLabel(2, 3, "Size (MB): ");
    184184    label3 = newtLabel(2, 4, "Format:    ");
    185     deviceComp =
    186         newtEntry(14, 1, device_str, 30, (void *) &device_here, 0);
    187     mountpointComp =
    188         newtEntry(14, 2, mountpoint_str, 30, (void *) &mountpoint_here, 0);
    189     formatComp =
    190         newtEntry(14, 4, format_str, 15, (void *) &format_here, 0);
     185    deviceComp = newtEntry(14, 1, device_str, 30, (void *) &device_here, 0);
     186    mountpointComp = newtEntry(14, 2, mountpoint_str, 30, (void *) &mountpoint_here, 0);
     187    formatComp = newtEntry(14, 4, format_str, 15, (void *) &format_here, 0);
    191188    sizeComp = newtEntry(14, 3, size_str, 10, (void *) &size_here, 0);
    192189    bOK = newtButton(5, 6, "  OK  ");
     
    200197    for (b_res = NULL; b_res != bOK && b_res != bCancel;) {
    201198        b_res = newtRunForm(myForm);
    202         strcpy(device_str, device_here);
    203         strcpy(mountpoint_str, mountpoint_here);
    204         strcpy(format_str, format_here);
    205         strcpy(size_str, size_here);
    206 //      log_it ("Originals = %s,%s,%s,%s", device_str, mountpoint_str, format_str, size_str);
    207         strip_spaces(device_str);
    208         strip_spaces(mountpoint_str);
    209         strip_spaces(format_str);
    210         strip_spaces(size_str);
    211 //      log_it ("Modified = %s,%s,%s,%s", device_str, mountpoint_str, format_str, size_str);
     199        mr_free(device_str);
     200        mr_asprintf(device_str, "%s", device_here);
     201
     202        mr_free(mountpoint_str);
     203        mr_asprintf(mountpoint_str, "%s", mountpoint_here);
     204        mr_strip_spaces(mountpoint_str);
     205
     206        mr_free(format_str);
     207        mr_asprintf(format_str, "%s", format_here);
     208        mr_strip_spaces(format_str);
     209
     210        mr_free(size_str);
     211        mr_asprintf(size_str, "%s", size_here);
     212        mr_strip_spaces(size_str);
     213
     214        mr_strip_spaces(device_str);
    212215        if (b_res == bOK) {
    213216            if (device_str[strlen(device_str) - 1] == '/') {
     
    215218                b_res = NULL;
    216219            }
    217             if (size_of_specific_device_in_mountlist(mountlist, device_str)
    218                 >= 0) {
     220            if (size_of_specific_device_in_mountlist(mountlist, device_str) >= 0) {
    219221                popup_and_OK("Can't add this - you've got one already!");
    220222                b_res = NULL;
     
    228230        return;
    229231    }
    230     strcpy(drive_to_add, device_str);
     232    mr_asprintf(drive_to_add, "%s", device_str);
    231233    for (i = strlen(drive_to_add); isdigit(drive_to_add[i - 1]); i--);
    232     drive_to_add[i] = '\0';
     234    mr_free(drive_to_add);
     235
    233236    currline = mountlist->entries;
    234237    strcpy(mountlist->el[currline].device, device_str);
    235238    strcpy(mountlist->el[currline].mountpoint, mountpoint_str);
     239    mr_free(mountpoint_str);
     240
    236241    strcpy(mountlist->el[currline].format, format_str);
     242    mr_free(format_str);
     243
    237244    mountlist->el[currline].size = atol(size_str) * 1024L;
     245    mr_free(size_str);
     246
    238247    mountlist->entries++;
    239248    if (strstr(mountlist->el[currline].device, RAID_DEVICE_STUB)) {
    240         initiate_new_raidlist_entry(raidlist, mountlist, currline,
    241                                     device_str);
    242     }
     249        initiate_new_raidlist_entry(raidlist, mountlist, currline, device_str);
     250    }
     251    mr_free(device_str);
     252
    243253    redraw_mountlist(mountlist, keylist, listbox);
    244254}
     
    315325
    316326    /** buffers ***********************************************************/
    317     char tmp[MAX_STR_LEN];
    318 
    319 
    320 
     327    char tmp = NULL;
     328    char *devname = NULL;
    321329
    322330    for (i = 0;
     
    324332         && strcmp(raidlist->el[i].volname, basename(raid_device)); i++);
    325333    if (i == raidlist->entries) {
    326         sprintf(tmp,
    327                 "Cannot calc size of raid device %s - cannot find it in raidlist",
    328                 raid_device);
    329         log_it(tmp);
     334        log_it("Cannot calc size of raid device %s - cannot find it in raidlist", raid_device);
    330335        return (0);             // Isn't this more sensible than 999999999? If the raid dev !exists,
    331336        // then it has no size, right?
     
    339344        int k = 0, l = 0;
    340345        for (k = 0; k < raidrec->plex[j].subdisks; ++k) {
    341             char devname[64];
    342             strcpy(devname, raidrec->plex[j].sd[k].which_device);
     346            mr_asprintf(devname, "%s", raidrec->plex[j].sd[k].which_device);
    343347            for (l = 0; l < raidlist->disks.entries; ++l) {
    344348                if (!strcmp(devname, raidlist->disks.el[l].name)) {
     
    368372                }
    369373            }
     374            mr_free(devname);
    370375        }
    371376
     
    388393    }
    389394
    390     sprintf(tmp, "I have calculated %s's real size to be %ld", raid_device,
    391             (long) smallest_plex);
    392     log_it(tmp);
     395    log_it("I have calculated %s's real size to be %ld", raid_device, (long) smallest_plex);
    393396    return (smallest_plex);
    394397#else
     
    407410    long sp = 0;
    408411
    409     /** buffers ***********************************************************/
    410     char tmp[MAX_STR_LEN];
    411 
    412412    assert(mountlist != NULL);
    413413    assert(raidlist != NULL);
     
    418418         && strcmp(raidlist->el[i].raid_device, raid_device); i++);
    419419    if (i == raidlist->entries) {
    420         sprintf(tmp,
    421                 "Cannot calc size of raid device %s - cannot find it in raidlist",
    422                 raid_device);
    423         log_it(tmp);
     420        log_it("Cannot calc size of raid device %s - cannot find it in raidlist", raid_device);
    424421        return (999999999);
    425422    }
     
    444441        total_size = smallest_partition * (noof_partitions - 1);
    445442    }
    446     sprintf(tmp, "I have calculated %s's real size to be %ld", raid_device,
    447             (long) total_size);
    448     log_it(tmp);
     443    log_it("I have calculated %s's real size to be %ld", raid_device, (long) total_size);
    449444    return (total_size);
    450445#endif
     
    470465    /** buffers ***********************************************************/
    471466    char tmp[MAX_STR_LEN];
    472     char prompt[MAX_STR_LEN];
     467    char *prompt = NULL;
    473468    char sz[MAX_STR_LEN];
    474469
    475     sprintf(prompt,
    476             "Please enter the RAID level you want. (concat, striped, raid5)");
     470    mr_asprintf(prompt, "Please enter the RAID level you want. (concat, striped, raid5)");
    477471    if (raidrec->raidlevel == -1) {
    478472        strcpy(tmp, "concat");
     
    485479        res = popup_and_get_string("Specify RAID level", prompt, tmp, 10);
    486480        if (!res) {
     481            mr_free(prompt);
    487482            return;
    488483        }
     
    502497        log_it(tmp);
    503498        if (is_this_raid_personality_registered(out)) {
    504             log_it
    505                 ("Groovy. You've picked a RAID personality which is registered.");
     499            log_it("Groovy. You've picked a RAID personality which is registered.");
    506500        } 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?"))
     501            if (ask_me_yes_or_no("You have chosen a RAID personality which is not registered with the kernel. Make another selection?"))
    509502            {
    510503                out = 999;
     
    512505        }
    513506    }
     507    mr_free(prompt);
     508
    514509    raidrec->raidlevel = out;
    515510#else
    516511    /** buffers ***********************************************************/
    517512    char tmp[MAX_STR_LEN];
    518     char personalities[MAX_STR_LEN];
    519     char prompt[MAX_STR_LEN];
     513    char *personalities = NULL;
     514    char *prompt = NULL;
    520515    char sz[MAX_STR_LEN];
    521     int out = 0, res = 0;
     516    int out = 0;
     517    int res = 0;
    522518
    523519
    524520    assert(raidrec != NULL);
    525521    paranoid_system("grep Pers /proc/mdstat > /tmp/raid-personalities.txt 2> /dev/null");
    526     strcpy(personalities,
    527            last_line_of_file("/tmp/raid-personalities.txt"));
    528     sprintf(prompt, "Please enter the RAID level you want. %s",
    529             personalities);
     522    mr_asprintf(personalities, "%s", last_line_of_file("/tmp/raid-personalities.txt"));
     523    mr_asprintf(prompt, "Please enter the RAID level you want. %s", personalities);
     524    mr_free(personalities);
     525
    530526    if (raidrec->raid_level == -1) {
    531527        strcpy(tmp, "linear");
     
    555551        log_it(tmp);
    556552        if (is_this_raid_personality_registered(out)) {
    557             log_it
    558                 ("Groovy. You've picked a RAID personality which is registered.");
     553            log_it("Groovy. You've picked a RAID personality which is registered.");
    559554        } else {
    560             if (ask_me_yes_or_no
    561                 ("You have chosen a RAID personality which is not registered with the kernel. Make another selection?"))
    562             {
     555            if (ask_me_yes_or_no("You have chosen a RAID personality which is not registered with the kernel. Make another selection?")) {
    563556                out = 999;
    564557            }
    565558        }
    566559    }
     560    mr_free(prompt);
     561
    567562    raidrec->raid_level = out;
    568563#endif
     
    589584    int pos = 0;
    590585
    591     /** buffers ***********************************************************/
    592     char tmp[MAX_STR_LEN];
    593 
    594586    assert(mountlist != NULL);
    595587    assert(raidlist != NULL);
     
    602594             pos++);
    603595        if (pos < mountlist->entries) {
    604             sprintf(tmp,
    605                     "Deleting partition %s cos it was part of a now-defunct RAID",
    606                     mountlist->el[pos].device);
    607             log_it(tmp);
     596            log_it("Deleting partition %s cos it was part of a now-defunct RAID", mountlist->el[pos].device);
     597
    608598            memcpy((void *) &mountlist->el[pos],
    609599                   (void *) &mountlist->el[mountlist->entries - 1],
     
    631621    /** int ***************************************************************/
    632622    int pos = 0;
     623    int res = 0;
    633624
    634625    /** buffers ***********************************************************/
    635     char tmp[MAX_STR_LEN];
     626    char *tmp = NULL;
    636627
    637628    assert(disklist != NULL);
    638629    assert_string_is_neither_NULL_nor_zerolength(raid_device);
    639630
    640     sprintf(tmp, "Delete %s from RAID device %s - are you sure?",
    641             disklist->el[currline].device, raid_device);
    642     if (!ask_me_yes_or_no(tmp)) {
     631    mr_asprintf(tmp, "Delete %s from RAID device %s - are you sure?", disklist->el[currline].device, raid_device);
     632    res = ask_me_yes_or_no(tmp);
     633    mr_free(tmp);
     634
     635    if (!res) {
    643636        return;
    644637    }
    645638    for (pos = currline; pos < disklist->entries - 1; pos++) {
    646         /* memcpy((void*)&disklist->el[pos], (void*)&disklist->el[pos+1], sizeof(struct s_disk)); */
    647639        strcpy(disklist->el[pos].device, disklist->el[pos + 1].device);
    648640    }
     
    670662    /** int ***************************************************************/
    671663    int pos = 0;
     664    int res = 0;
    672665
    673666    /** buffers ***********************************************************/
    674     char tmp[MAX_STR_LEN];
    675     char device[MAX_STR_LEN];
     667    char *tmp = NULL;
     668    char *device = NULL;
    676669
    677670
     
    681674    assert(keylist != NULL);
    682675
    683     pos =
    684         which_raid_device_is_using_this_partition(raidlist,
    685                                                   mountlist->el[currline].
    686                                                   device);
     676    pos = which_raid_device_is_using_this_partition(raidlist, mountlist->el[currline].device);
    687677    if (pos >= 0) {
    688         sprintf(tmp, "Cannot delete %s: it is in use by RAID device %s",
    689                 mountlist->el[currline].device,
    690                 raidlist->el[pos].OSSWAP(raid_device, volname));
     678        mr_asprintf(tmp, "Cannot delete %s: it is in use by RAID device %s", mountlist->el[currline].device, raidlist->el[pos].OSSWAP(raid_device, volname));
    691679        popup_and_OK(tmp);
     680        mr_free(tmp);
    692681        return;
    693682    }
    694     sprintf(tmp, "Delete %s - are you sure?",
    695             mountlist->el[currline].device);
    696     if (!ask_me_yes_or_no(tmp)) {
     683    mr_asprintf(tmp, "Delete %s - are you sure?", mountlist->el[currline].device);
     684    res = ask_me_yes_or_no(tmp);
     685    mr_free(tmp);
     686
     687    if (!res) {
    697688        return;
    698689    }
    699690    if (strstr(mountlist->el[currline].device, RAID_DEVICE_STUB)) {
    700         strcpy(device, mountlist->el[currline].device);
     691        mr_asprintf(device, "%s", mountlist->el[currline].device);
    701692        delete_raidlist_entry(mountlist, raidlist, device);
    702693        for (currline = 0;
     
    704695             && strcmp(mountlist->el[currline].device, device);
    705696             currline++);
     697        mr_free(device);
     698
    706699        if (currline == mountlist->entries) {
    707700            log_it("Dev is gone. I can't delete it. Ho-hum");
     
    737730
    738731    /** buffers ***********************************************************/
    739     char tmp[MAX_STR_LEN];
     732    char *tmp = NULL;
    740733
    741734    assert(mountlist != NULL);
     
    747740        return;
    748741    }
    749     sprintf(tmp, "Do you want me to delete %s's partitions, too?", device);
     742    mr_asprintf(tmp, "Do you want me to delete %s's partitions, too?", device);
    750743    delete_partitions_too = ask_me_yes_or_no(tmp);
    751744    if (delete_partitions_too) {
     
    760753                    if (!strcmp(raidlist->el[i].plex[x].sd[y].which_device,
    761754                                raidlist->disks.el[z].name)) {
    762                         strcpy(d.el[d.entries].name,
    763                                raidlist->disks.el[z].name);
    764                         strcpy(d.el[d.entries++].device,
    765                                raidlist->disks.el[z].device);
     755                        strcpy(d.el[d.entries].name, raidlist->disks.el[z].name);
     756                        strcpy(d.el[d.entries++].device, raidlist->disks.el[z].device);
    766757                    }
    767758                }
     
    791782        items--;
    792783    }
     784    mr_free(tmp);
    793785    raidlist->entries = items;
    794786}
     
    806798
    807799    /** buffers ************************************************************/
    808     char tmp[MAX_STR_LEN];
     800    char *tmp = NULL;
     801    int res = 0;
    809802
    810803    /** structures *********************************************************/
     
    814807
    815808    av = &raidrec->additional_vars;
    816     sprintf(tmp, "Delete %s - are you sure?", av->el[lino].label);
    817     if (ask_me_yes_or_no(tmp)) {
     809    mr_asprintf(tmp, "Delete %s - are you sure?", av->el[lino].label);
     810    res = ask_me_yes_or_no(tmp);
     811    mr_free(tmp);
     812
     813    if (res) {
    818814        if (!strcmp(av->el[lino].label, "persistent-superblock")
    819815            || !strcmp(av->el[lino].label, "chunk-size")) {
    820             sprintf(tmp, "%s must not be deleted. It would be bad.",
    821                     av->el[lino].label);
     816            mr_asprintf(tmp, "%s must not be deleted. It would be bad.", av->el[lino].label);
    822817            popup_and_OK(tmp);
     818            mr_free(tmp);
    823819        } else {
    824820            memcpy((void *) &av->el[lino], (void *) &av->el[av->entries--],
     
    856852    static char current_filename[MAX_STR_LEN];
    857853    char tmp[MAX_STR_LEN + 2];
     854    char *tmp1 = NULL;
    858855
    859856    /** bool *************************************************************/
     
    886883                if (!warned_already) {
    887884                    warned_already = TRUE;
    888                     sprintf(tmp,
    889                             "Too many lines. Displaying first %d entries only. Close a directory to see more.",
    890                             ARBITRARY_MAXIMUM);
    891                     popup_and_OK(tmp);
     885                    mr_asprintf(tmp1, "Too many lines. Displaying first %d entries only. Close a directory to see more.", ARBITRARY_MAXIMUM);
     886                    popup_and_OK(tmp1);
     887                    mr_free(tmp1);
    892888                }
    893889            } else {
    894                 strcpy(g_strings_of_flist_window[lines_in_flist_window],
    895                        current_filename);
     890                strcpy(g_strings_of_flist_window[lines_in_flist_window], current_filename);
    896891                g_is_path_selected[lines_in_flist_window] = node->selected;
    897892                lines_in_flist_window++;
     
    908903                (g_strings_of_flist_window[i],
    909904                 g_strings_of_flist_window[i - 1]) < 0) {
    910                 strcpy(tmp, g_strings_of_flist_window[i]);
    911                 strcpy(g_strings_of_flist_window[i],
    912                        g_strings_of_flist_window[i - 1]);
    913                 strcpy(g_strings_of_flist_window[i - 1], tmp);
     905                mr_asprintf(tmp1, "%s", g_strings_of_flist_window[i]);
     906                strcpy(g_strings_of_flist_window[i], g_strings_of_flist_window[i - 1]);
     907                strcpy(g_strings_of_flist_window[i - 1], tmp1);
     908                mr_free(tmp1);
     909
    914910                dummybool = g_is_path_selected[i];
    915911                g_is_path_selected[i] = g_is_path_selected[i - 1];
     
    10141010    void *curr_choice;
    10151011    void *keylist[ARBITRARY_MAXIMUM];
    1016 
    1017     /** buffers ***********************************************************/
    1018     char tmp[MAX_STR_LEN];
    10191012
    10201013    /** bool **************************************************************/
     
    10641057                indexno = 0;
    10651058            }
    1066             sprintf(tmp, "You selected '%s'",
    1067                     g_strings_of_flist_window[indexno]);
    1068             log_it(tmp);
     1059            log_it("You selected '%s'", g_strings_of_flist_window[indexno]);
     1060
    10691061            if (b_res == bMore) {
    10701062                g_is_path_expanded[indexno] = TRUE;
     
    11581150
    11591151  /** buffers ***********************************************************/
    1160     char device_str[MAX_STR_LEN];
    1161     char mountpoint_str[MAX_STR_LEN];
    1162     char size_str[MAX_STR_LEN];
    1163     char format_str[MAX_STR_LEN];
    1164     char tmp[MAX_STR_LEN];
    1165     char device_used_to_be[MAX_STR_LEN];
    1166     char mountpt_used_to_be[MAX_STR_LEN];
     1152    char *device_str = NULL;
     1153    char *mountpoint_str = NULL;
     1154    char *size_str = NULL;
     1155    char *format_str = NULL;
     1156    char *tmp = NULL;
     1157    char *device_used_to_be = NULL;
     1158    char *mountpt_used_to_be = NULL;
    11671159
    11681160    /** pointers **********************************************************/
     
    11821174    memcpy((void *) &bkp_raidlist, (void *) raidlist,
    11831175           sizeof(struct raidlist_itself));
    1184     strcpy(device_str, mountlist->el[currline].device);
    1185     strcpy(device_used_to_be, mountlist->el[currline].device);
    1186     strcpy(mountpoint_str, mountlist->el[currline].mountpoint);
    1187     strcpy(mountpt_used_to_be, mountlist->el[currline].mountpoint);
    1188     strcpy(format_str, mountlist->el[currline].format);
    1189     sprintf(size_str, "%lld", mountlist->el[currline].size / 1024L);
     1176    mr_asprintf(device_str, "%s", mountlist->el[currline].device);
     1177    mr_asprintf(device_used_to_be, "%s", mountlist->el[currline].device);
     1178    mr_asprintf(mountpoint_str, "%s", mountlist->el[currline].mountpoint);
     1179    mr_asprintf(mountpt_used_to_be, "%s", mountlist->el[currline].mountpoint);
     1180    mr_asprintf(format_str, "%s", mountlist->el[currline].format);
     1181    mr_asprintf(size_str, "%lld", mountlist->el[currline].size / 1024L);
    11901182    newtOpenWindow(20, 5, 48, 10, "Edit entry");
    11911183    label0 = newtLabel(2, 1, "Device:");
     
    11931185    label2 = newtLabel(2, 3, "Size (MB): ");
    11941186    label3 = newtLabel(2, 4, "Format:    ");
    1195     deviceComp =
    1196         newtEntry(14, 1, device_str, 30, (void *) &device_here, 0);
    1197     mountpointComp =
    1198         newtEntry(14, 2, mountpoint_str, 30, (void *) &mountpoint_here, 0);
    1199     formatComp =
    1200         newtEntry(14, 4, format_str, 15, (void *) &format_here, 0);
     1187    deviceComp = newtEntry(14, 1, device_str, 30, (void *) &device_here, 0);
     1188    mountpointComp = newtEntry(14, 2, mountpoint_str, 30, (void *) &mountpoint_here, 0);
     1189    formatComp = newtEntry(14, 4, format_str, 15, (void *) &format_here, 0);
    12011190    if (strstr(mountlist->el[currline].device, RAID_DEVICE_STUB)
    12021191        || !strcmp(mountlist->el[currline].mountpoint, "image")) {
     
    12181207    for (b_res = NULL; b_res != bOK && b_res != bCancel;) {
    12191208        b_res = newtRunForm(myForm);
    1220         strcpy(device_str, device_here);
    1221         strip_spaces(device_str);
    1222         strcpy(mountpoint_str, mountpoint_here);
    1223         strip_spaces(mountpoint_str);
    1224         strcpy(format_str, format_here);
    1225         strip_spaces(format_str);
     1209        mr_free(device_str);
     1210        mr_asprintf(device_str, "%s", device_here);
     1211        mr_strip_spaces(device_str);
     1212
     1213        mr_free(mountpoint_str);
     1214        mr_asprintf(mountpoint_str, "%s", mountpoint_here);
     1215        mr_strip_spaces(mountpoint_str);
     1216
     1217        mr_free(format_str);
     1218        mr_asprintf(format_str, "%s", format_here);
     1219        mr_strip_spaces(format_str);
     1220
    12261221        if (b_res == bOK && strstr(device_str, RAID_DEVICE_STUB)
    12271222            && strstr(device_used_to_be, RAID_DEVICE_STUB)
     
    12381233        if (!strstr(mountlist->el[currline].device, RAID_DEVICE_STUB)
    12391234            && strcmp(mountlist->el[currline].mountpoint, "image")) {
    1240             strcpy(size_str, size_here);
    1241             strip_spaces(size_str);
     1235            mr_free(size_str);
     1236            mr_asprintf(size_str, "%s", size_here);
     1237            mr_strip_spaces(size_str);
    12421238        } else {
    1243             sprintf(size_str, "%ld",
    1244                     calculate_raid_device_size(mountlist, raidlist,
    1245                                                mountlist->el[currline].
    1246                                                device) / 1024);
     1239            mr_asprintf(size_str, "%ld", calculate_raid_device_size(mountlist, raidlist, mountlist->el[currline].device) / 1024);
    12471240            newtLabelSetText(sizeComp, size_str);
    12481241        }
     
    12611254                                                 device);
    12621255                if (j < 0) {
    1263                     sprintf(tmp,
    1264                             "/etc/raidtab does not have an entry for %s; please delete it and add it again",
    1265                             mountlist->el[currline].device);
     1256                    mr_asprintf(tmp, "/etc/raidtab does not have an entry for %s; please delete it and add it again", mountlist->el[currline].device);
    12661257                    popup_and_OK(tmp);
     1258                    mr_free(tmp);
    12671259                } else {
    12681260                    log_it("edit_raidlist_entry - calling");
     
    12761268    newtPopHelpLine();
    12771269    newtPopWindow();
     1270    mr_free(mountpt_used_to_be);
     1271
    12781272    if (b_res == bCancel) {
    12791273        memcpy((void *) raidlist, (void *) &bkp_raidlist,
    12801274               sizeof(struct raidlist_itself));
     1275        mr_free(device_str);
     1276        mr_free(device_used_to_be);
     1277        mr_free(format_str);
     1278        mr_free(size_str);
    12811279        return;
    12821280    }
    12831281    strcpy(mountlist->el[currline].device, device_str);
    12841282    strcpy(mountlist->el[currline].mountpoint, mountpoint_str);
     1283    mr_free(mountpoint_str);
     1284
    12851285    strcpy(mountlist->el[currline].format, format_str);
     1286    mr_free(format_str);
     1287
    12861288    if (strcmp(mountlist->el[currline].mountpoint, "image")) {
    12871289        if (strstr(mountlist->el[currline].device, RAID_DEVICE_STUB)) {
     
    12931295        }
    12941296    }
     1297    mr_free(size_str);
    12951298    newtListboxSetEntry(listbox, (long) keylist[currline],
    12961299                        mountlist_entry_to_string(mountlist, currline));
     
    12981301    if (strstr(mountlist->el[currline].device, RAID_DEVICE_STUB)
    12991302        && !strstr(device_used_to_be, RAID_DEVICE_STUB)) {
    1300         initiate_new_raidlist_entry(raidlist, mountlist, currline,
    1301                                     device_str);
     1303        initiate_new_raidlist_entry(raidlist, mountlist, currline, device_str);
    13021304    }
    13031305    /* if moving from RAID to non-RAID then do funky stuff */
     
    13161318#ifndef __FreeBSD__             /* It works fine under FBSD. */
    13171319    else if (strcmp(device_used_to_be, device_str)) {
    1318         popup_and_OK
    1319             ("You are renaming a RAID device as another RAID device. I don't like it but I'll allow it.");
     1320        popup_and_OK("You are renaming a RAID device as another RAID device. I don't like it but I'll allow it.");
    13201321    }
    13211322#endif
     1323    mr_free(device_str);
     1324    mr_free(device_used_to_be);
     1325
    13221326    redraw_mountlist(mountlist, keylist, listbox);
    13231327}
     
    13421346    for (i = 0; i < raidlist->disks.entries; ++i) {
    13431347        if (!strcmp(raidlist->disks.el[i].device, temp)) {
    1344             strcpy(raidrec->sd[raidrec->subdisks].which_device,
    1345                    raidlist->disks.el[i].name);
     1348            strcpy(raidrec->sd[raidrec->subdisks].which_device, raidlist->disks.el[i].name);
    13461349            found = TRUE;
    13471350        }
    13481351    }
    13491352    if (!found) {
    1350         sprintf(raidlist->disks.el[raidlist->disks.entries].name,
    1351                 "drive%i", raidlist->disks.entries);
    1352         sprintf(raidrec->sd[raidrec->subdisks].which_device, "drive%i",
    1353                 raidlist->disks.entries);
     1353        sprintf(raidlist->disks.el[raidlist->disks.entries].name, "drive%i", raidlist->disks.entries);
     1354        sprintf(raidrec->sd[raidrec->subdisks].which_device, "drive%i", raidlist->disks.entries);
    13541355        strcpy(raidlist->disks.el[raidlist->disks.entries++].device, temp);
    13551356    }
     
    14241425    void *keylist[10];
    14251426    void *curr_choice;
     1427    char *raidlevel = NULL;
     1428    char *chunksize = NULL;
     1429    char *msg = NULL;
    14261430
    14271431    int currline2 = 0;
     1432    int res = 0;
    14281433
    14291434    log_it("Started edit_raidlist_entry");
     
    14551460            keylist[i] = (void *) i;
    14561461            if (i < raidrec->plexes) {
    1457                 char pname[64], entry[MAX_STR_LEN], raidlevel[64],
    1458                     chunksize[64];
     1462                char pname[64], entry[MAX_STR_LEN];
    14591463                switch (raidrec->plex[i].raidlevel) {
    14601464                case -1:
    1461                     strcpy(raidlevel, "concat");
     1465                    mr_asprintf(raidlevel, "concat");
    14621466                    break;
    14631467                case 0:
    1464                     strcpy(raidlevel, "striped");
     1468                    mr_asprintf(raidlevel, "striped");
    14651469                    break;
    14661470                case 5:
    1467                     strcpy(raidlevel, "raid5");
     1471                    mr_asprintf(raidlevel, "raid5");
    14681472                    break;
    14691473                default:
    1470                     sprintf(raidlevel, "raid%i",
    1471                             raidrec->plex[i].raidlevel);
     1474                    mr_asprintf(raidlevel, "raid%i", raidrec->plex[i].raidlevel);
    14721475                    break;
    14731476                }
    14741477
    14751478                if (raidrec->plex[i].raidlevel == -1) {
    1476                     strcpy(chunksize, "N/A");
     1479                    mr_asprintf(chunksize, "N/A");
    14771480                } else {
    1478                     sprintf(chunksize, "%dk", raidrec->plex[i].stripesize);
     1481                    mr_asprintf(chunksize, "%dk", raidrec->plex[i].stripesize);
    14791482                }
    14801483                snprintf(pname, 64, "%s.p%i", raidrec->volname, i);
     
    14821485                         pname, raidlevel, chunksize,
    14831486                         raidrec->plex[i].subdisks);
     1487                mr_free(raidlevel);
     1488                mr_free(chunksize);
     1489
    14841490                newtListboxAppendEntry(plexesListbox, entry, keylist[i]);
    14851491            }
     
    15031509
    15041510        if (b_res == bDelete) {
    1505             char msg[MAX_STR_LEN];
    1506             sprintf(msg, "Are you sure you want to delete %s.p%i?",
    1507                     raidrec->volname, currline2);
    1508             if (ask_me_yes_or_no(msg)) {
     1511            mr_asprintf(msg, "Are you sure you want to delete %s.p%i?", raidrec->volname, currline2);
     1512            res = ask_me_yes_or_no(msg);
     1513            mr_free(msg);
     1514
     1515            if (res) {
    15091516                log_it("Deleting RAID plex");
    15101517                memcpy((void *) &raidrec->plex[currline2],
     
    15401547    /** buffers ***********************************************************/
    15411548    char *title_of_editraidForm_window;
    1542     char *sz_raid_level;
    1543     char *sz_data_disks;
    1544     char *sz_spare_disks;
    1545     char *sz_parity_disks;
    1546     char *sz_failed_disks;
     1549    char *sz_raid_level = NULL;
     1550    char *sz_data_disks = NULL;
     1551    char *sz_spare_disks = NULL;
     1552    char *sz_parity_disks = NULL;
     1553    char *sz_failed_disks = NULL;
    15471554
    15481555    /** newt **************************************************************/
     
    15621569    assert(raidrec != NULL);
    15631570
    1564     malloc_string(title_of_editraidForm_window);
    1565     malloc_string(sz_raid_level);
    1566     malloc_string(sz_data_disks);
    1567     malloc_string(sz_spare_disks);
    1568     malloc_string(sz_parity_disks);
    1569     malloc_string(sz_failed_disks);
    1570     if (!(bkp_raidrec = malloc(sizeof(struct raid_device_record)))) {
    1571         fatal_error("Cannot malloc space for raidrec");
    1572     }
    1573 
     1571    bkp_raidrec = mr_malloc(sizeof(struct raid_device_record));
    15741572    log_it("Started edit_raidlist_entry");
    15751573
    1576     memcpy((void *) bkp_raidrec, (void *) raidrec,
    1577            sizeof(struct raid_device_record));
    1578     sprintf(title_of_editraidForm_window, "%s", raidrec->raid_device);
     1574    memcpy((void *) bkp_raidrec, (void *) raidrec, sizeof(struct raid_device_record));
     1575    mr_asprintf(title_of_editraidForm_window, "%s", raidrec->raid_device);
    15791576    log_msg(2, "Opening newt window");
    15801577    newtOpenWindow(20, 5, 40, 14, title_of_editraidForm_window);
    15811578    for (;;) {
    15821579        log_msg(2, "Main loop");
    1583         sprintf(title_of_editraidForm_window, "Edit %s",
    1584                 raidrec->raid_device);
    1585         strcpy(sz_raid_level,
    1586                turn_raid_level_number_to_string(raidrec->raid_level));
    1587         strcpy(sz_data_disks,
    1588                number_of_disks_as_string(raidrec->data_disks.entries,
    1589                                          "data"));
    1590         strcpy(sz_spare_disks,
    1591                number_of_disks_as_string(raidrec->spare_disks.entries,
    1592                                          "spare"));
    1593         strcpy(sz_parity_disks,
    1594                number_of_disks_as_string(raidrec->parity_disks.entries,
    1595                                          "parity"));
    1596         strcpy(sz_failed_disks,
    1597                number_of_disks_as_string(raidrec->failed_disks.entries,
    1598                                          "failed"));
     1580        mr_free(title_of_editraidForm_window);
     1581        mr_asprintf(title_of_editraidForm_window, "Edit %s", raidrec->raid_device);
     1582        mr_asprintf(sz_raid_level, "%s", turn_raid_level_number_to_string(raidrec->raid_level));
     1583        mr_asprintf(sz_data_disks, "%s", number_of_disks_as_string(raidrec->data_disks.entries, "data"));
     1584        mr_asprintf(sz_spare_disks, "%s", number_of_disks_as_string(raidrec->spare_disks.entries, "spare"));
     1585        mr_asprintf(sz_parity_disks, "%s", number_of_disks_as_string(raidrec->parity_disks.entries, "parity"));
     1586        mr_asprintf(sz_failed_disks, "%s", number_of_disks_as_string(raidrec->failed_disks.entries, "failed"));
    15991587        bSelectData = newtButton(1, 1, sz_data_disks);
    16001588        bSelectSpare = newtButton(20, 1, sz_spare_disks);
     
    16171605            choose_raid_level(raidrec);
    16181606        } else if (b_res == bSelectData) {
    1619             select_raid_disks(mountlist, raidlist, raidrec, "data",
    1620                               &raidrec->data_disks);
     1607            select_raid_disks(mountlist, raidlist, raidrec, "data", &raidrec->data_disks);
    16211608        } else if (b_res == bSelectSpare) {
    1622             select_raid_disks(mountlist, raidlist, raidrec, "spare",
    1623                               &raidrec->spare_disks);
     1609            select_raid_disks(mountlist, raidlist, raidrec, "spare", &raidrec->spare_disks);
    16241610        } else if (b_res == bSelectParity) {
    1625             select_raid_disks(mountlist, raidlist, raidrec, "parity",
    1626                               &raidrec->parity_disks);
     1611            select_raid_disks(mountlist, raidlist, raidrec, "parity", &raidrec->parity_disks);
    16271612        } else if (b_res == bSelectFailed) {
    1628             select_raid_disks(mountlist, raidlist, raidrec, "failed",
    1629                               &raidrec->failed_disks);
     1613            select_raid_disks(mountlist, raidlist, raidrec, "failed", &raidrec->failed_disks);
    16301614        } else if (b_res == bAdditional) {
    16311615            edit_raidrec_additional_vars(raidrec);
     
    16351619            break;
    16361620        }
     1621        mr_free(sz_data_disks);
     1622        mr_free(sz_spare_disks);
     1623        mr_free(sz_parity_disks);
     1624        mr_free(sz_failed_disks);
    16371625    }
    16381626    if (b_res == bCancel) {
    1639         memcpy((void *) raidrec, (void *) bkp_raidrec,
    1640                sizeof(struct raid_device_record));
     1627        memcpy((void *) raidrec, (void *) bkp_raidrec, sizeof(struct raid_device_record));
    16411628    }
    16421629    newtPopHelpLine();
    16431630    newtPopWindow();
    1644     mountlist->el[currline].size =
    1645         calculate_raid_device_size(mountlist, raidlist,
    1646                                    raidrec->raid_device);
    1647     paranoid_free(title_of_editraidForm_window);
    1648     paranoid_free(sz_raid_level);
    1649     paranoid_free(sz_data_disks);
    1650     paranoid_free(sz_spare_disks);
    1651     paranoid_free(sz_parity_disks);
    1652     paranoid_free(sz_failed_disks);
     1631    mountlist->el[currline].size = calculate_raid_device_size(mountlist, raidlist, raidrec->raid_device);
     1632    mr_free(title_of_editraidForm_window);
     1633    mr_free(sz_raid_level);
    16531634    paranoid_free(bkp_raidrec);
    16541635#endif
     
    16781659
    16791660    /** buffers ***********************************************************/
    1680     char title_of_editraidForm_window[MAX_STR_LEN];
     1661    char *title_of_editraidForm_window = NULL;
    16811662
    16821663    /** newt **************************************************************/
     
    16971678    int currline_a, currline_u;
    16981679
     1680    char *p = NULL;
     1681    char *tmp = NULL;
     1682    char *entry = NULL;
     1683
    16991684    struct mountlist_itself *unallocparts;
    17001685
     
    17041689    memcpy((void *) &bkp_raidrec, (void *) raidrec,
    17051690           sizeof(struct vinum_plex));
    1706     sprintf(title_of_editraidForm_window, "%s.p%i",
    1707             raidlist->el[currline].volname, currline2);
     1691    mr_asprintf(title_of_editraidForm_window, "%s.p%i", raidlist->el[currline].volname, currline2);
    17081692    newtPushHelpLine
    17091693        ("   Please select a subdisk to edit, or edit this plex's parameters");
    17101694    newtOpenWindow(13, 3, 54, 18, title_of_editraidForm_window);
     1695    mr_free(title_of_editraidForm_window);
     1696
    17111697    for (;;) {
    17121698        int i;
    1713         char headerstr[MAX_STR_LEN];
    1714         char tmp[64];
    1715         snprintf(headerstr, MAX_STR_LEN, "%-24s %s", "Subdisk", "Device");
    1716 
    17171699
    17181700        switch (raidrec->raidlevel) {
    17191701        case -1:
    1720             strcpy(tmp, "concat");
     1702            mr_asprintf(tmp, "concat");
    17211703            break;
    17221704        case 0:
    1723             strcpy(tmp, "striped");
     1705            mr_asprintf(tmp, "striped");
    17241706            break;
    17251707        case 5:
    1726             strcpy(tmp, "raid5");
     1708            mr_asprintf(tmp, "raid5");
    17271709            break;
    17281710        default:
    1729             sprintf(tmp, "unknown (%i)", raidrec->raidlevel);
     1711            mr_asprintf(tmp, "unknown (%i)", raidrec->raidlevel);
    17301712            break;
    17311713        }
    17321714        bLevel = newtCompactButton(2, 2, " RAID level ");
    17331715        sLevel = newtLabel(19, 2, tmp);
     1716        mr_free(tmp);
    17341717
    17351718        if (raidrec->raidlevel >= 0) {
    1736             sprintf(tmp, "%ik", raidrec->stripesize);
     1719            mr_asprintf(tmp, "%ik", raidrec->stripesize);
    17371720            bStripeSize = newtCompactButton(2, 4, " Stripe size ");
    17381721        } else {
    1739             strcpy(tmp, "N/A");
     1722            mr_asprintf(tmp, "N/A");
    17401723            bStripeSize = newtLabel(2, 4, "Stripe size:");
    17411724        }
    17421725        sStripeSize = newtLabel(19, 4, tmp);
     1726        mr_free(tmp);
    17431727
    17441728        bOK = newtCompactButton(2, 16, "  OK  ");
     
    17491733
    17501734
    1751         //  plexesListbox = newtListbox (2, 7, 9, NEWT_FLAG_SCROLL | NEWT_FLAG_RETURNEXIT);
    1752         //  plexesHeader  = newtLabel (2, 6, headerstr);
    17531735        unallocListbox =
    17541736            newtListbox(2, 7, 7, NEWT_FLAG_SCROLL | NEWT_FLAG_RETURNEXIT);
     
    17661748                                                 raidlist);
    17671749        for (i = 0; i < ARBITRARY_MAXIMUM; ++i) {
    1768             char entry[MAX_STR_LEN];
    17691750            keylist[i] = (void *) i;
    17701751            if (i < raidrec->subdisks) {
    1771                 snprintf(entry, MAX_STR_LEN, "%-17s",
    1772                          find_dev_entry_for_raid_device_name(raidlist,
    1773                                                              raidrec->
    1774                                                              sd[i].
    1775                                                              which_device));
     1752                mr_asprintf(entry, "%-17s", find_dev_entry_for_raid_device_name(raidlist, raidrec->sd[i].which_device));
    17761753                newtListboxAppendEntry(allocListbox, entry, keylist[i]);
     1754                mr_free(entry);
    17771755            }
    17781756            if (i < unallocparts->entries) {
    1779                 snprintf(entry, MAX_STR_LEN, "%-17s",
    1780                          unallocparts->el[i].device);
     1757                mr_asprintf(entry, "%-17s", unallocparts->el[i].device);
    17811758                newtListboxAppendEntry(unallocListbox, entry, keylist[i]);
     1759                mr_free(entry);
    17821760            }
    17831761        }
     
    18301808            choose_raid_level(raidrec);
    18311809        } else if (b_res == bStripeSize) {
    1832             char tmp[64];
    1833             sprintf(tmp, "%i", raidrec->stripesize);
     1810            char tmp1[64];
     1811            sprintf(tmp1, "%i", raidrec->stripesize);
    18341812            if (popup_and_get_string
    18351813                ("Stripe size",
    1836                  "Please enter the stripe size in kilobytes.", tmp, 20)) {
    1837                 raidrec->stripesize = atoi(tmp);
     1814                 "Please enter the stripe size in kilobytes.", tmp1, 20)) {
     1815                raidrec->stripesize = atoi(tmp1);
    18381816            }
    18391817        } else if ((b_res == bAlloc) || (b_res == unallocListbox)) {
     
    18491827            }
    18501828        }
    1851 #if 0
    1852     } else {
    1853         edit_raid_subdisk(raidlist, raidrec, &raidrec->sd[currline3],
    1854                           currline3);
    1855     }
    1856 #endif
    18571829    newtFormDestroy(editraidForm);
    18581830    newtRefresh();
     
    18601832
    18611833if (b_res == bCancel) {
    1862     memcpy((void *) raidrec, (void *) &bkp_raidrec,
    1863            sizeof(struct vinum_plex));
     1834    memcpy((void *) raidrec, (void *) &bkp_raidrec, sizeof(struct vinum_plex));
    18641835}
    18651836newtPopWindow();
     
    18771848
    18781849    /** buffers ***********************************************************/
    1879     char header[MAX_STR_LEN];
    1880     char comment[MAX_STR_LEN];
     1850    char *header = NULL;
     1851    char *comment = NULL;
    18811852    char sz_out[MAX_STR_LEN];
    18821853
     
    18851856
    18861857    strcpy(sz_out, raidrec->additional_vars.el[lino].value);
    1887     sprintf(header, "Edit %s", raidrec->additional_vars.el[lino].label);
    1888     sprintf(comment, "Please set %s's value (currently '%s')",
    1889             raidrec->additional_vars.el[lino].label, sz_out);
     1858    mr_asprintf(header, "Edit %s", raidrec->additional_vars.el[lino].label);
     1859    mr_asprintf(comment, "Please set %s's value (currently '%s')", raidrec->additional_vars.el[lino].label, sz_out);
    18901860    if (popup_and_get_string(header, comment, sz_out, MAX_STR_LEN)) {
    18911861        strip_spaces(sz_out);
    18921862        strcpy(raidrec->additional_vars.el[lino].value, sz_out);
    18931863    }
    1894 }
    1895 
    1896 
    1897 /* I'm not racist against white people. I just don't like people who think Liberia is near Spain.       - Hugo, 09/01/2001 */
     1864    mr_free(header);
     1865    mr_free(comment);
     1866}
    18981867
    18991868#endif
     
    19361905
    19371906    /** buffers **********************************************************/
    1938     char tmp[MAX_STR_LEN];
     1907    char *tmp = NULL;
    19391908    char *flaws_str = NULL;
    19401909    char *flaws_str_A = NULL;
     
    19571926    bCancel = newtCompactButton(i += 12, 17, "Cancel");
    19581927    bOK = newtCompactButton(i += 12, 17, "  OK  ");
    1959     sprintf(tmp, "%-24s %-24s %-8s  %s", "Device", "Mountpoint", "Format", "Size (MB)");
     1928    mr_asprintf(tmp, "%-24s %-24s %-8s  %s", "Device", "Mountpoint", "Format", "Size (MB)");
    19601929    headerMsg = newtLabel(2, 1, tmp);
     1930    mr_free(tmp);
     1931
    19611932    flawsLabelA = newtLabel(2, 13, "         ");
    19621933    flawsLabelB = newtLabel(2, 14, "         ");
     
    20151986        } else if (b_res == bReload) {
    20161987            if (ask_me_yes_or_no("Reload original mountlist?")) {
    2017 /*
    2018 This would be really dumb. RAIDTAB_FNAME is #define'd.   --- Hugo, 2003/04/24
    2019           if (!RAIDTAB_FNAME[0])
    2020         {
    2021                   strcpy(RAIDTAB_FNAME, "/etc/raidtab");
    2022           log_it("Warning - raidtab_fname is blank. Assuming %s", g_raidtab_fname);
    2023         }
    2024 */
    20251988                load_mountlist(mountlist, mountlist_fname);
    20261989                load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
     
    22372200    int i = 0;
    22382201#ifdef __FreeBSD__
    2239     char vdev[64];
     2202    char *vdev = NULL;
     2203    int res = 0;
    22402204#else
    22412205// Linux
     
    22472211#ifdef __FreeBSD__
    22482212    for (i = 0; i < raidlist->entries; i++) {
    2249         sprintf(vdev, "/dev/vinum/%s", raidlist->el[i].volname);
    2250         if (!strcmp(device, vdev))
     2213        mr_asprintf(vdev, "/dev/vinum/%s", raidlist->el[i].volname);
     2214        res = strcmp(device, vdev);
     2215        mr_free(vdev);
     2216
     2217        if (!res)
    22512218            break;
    22522219    }
     
    22982265    raidrec = &raidlist->el[pos_in_raidlist];
    22992266    initialize_raidrec(raidrec);
    2300     strcpy(raidrec->OSSWAP(raid_device, volname),
    2301            OSSWAP(device, basename(device)));
     2267    strcpy(raidrec->OSSWAP(raid_device, volname), OSSWAP(device, basename(device)));
    23022268#ifndef __FreeBSD__
    23032269    choose_raid_level(raidrec);
     
    25492515                                                   char *new_dev)
    25502516{
    2551     /** buffers ********************************************************/
    2552     char tmp[MAX_STR_LEN];
    2553 
    25542517    /** int ************************************************************/
    25552518    int pos = 0;
     
    25622525    pos = which_raid_device_is_using_this_partition(raidlist, old_dev);
    25632526    if (pos < 0) {
    2564         sprintf(tmp, "No need to rejig %s in raidlist: it's not listed.",
    2565                 old_dev);
    2566         log_it(tmp);
     2527        log_it("No need to rejig %s in raidlist: it's not listed.", old_dev);
    25672528    } else {
    25682529        if ((j =
     
    25702531                                         OSSWAP(el[pos].data_disks, disks),
    25712532                                         old_dev)) >= 0) {
    2572             strcpy(raidlist->OSSWAP(el[pos].data_disks, disks).el[j].
    2573                    device, new_dev);
     2533            strcpy(raidlist->OSSWAP(el[pos].data_disks, disks).el[j].device, new_dev);
    25742534        } else
    25752535            if ((j =
     
    25782538                                                    spares),
    25792539                                             old_dev)) >= 0) {
    2580             strcpy(raidlist->OSSWAP(el[pos].spare_disks, spares).el[j].
    2581                    device, new_dev);
     2540            strcpy(raidlist->OSSWAP(el[pos].spare_disks, spares).el[j].device, new_dev);
    25822541        }
    25832542#ifndef __FreeBSD__
     
    25962555#endif
    25972556        else {
    2598             sprintf(tmp,
    2599                     "%s is supposed to be listed in this raid dev but it's not...",
    2600                     old_dev);
    2601             log_it(tmp);
     2557            log_it("%s is supposed to be listed in this raid dev but it's not...", old_dev);
    26022558        }
    26032559    }
     
    26712627    /** buffers **********************************************************/
    26722628    void *keylist[ARBITRARY_MAXIMUM];
    2673     char *tmp;
    2674     char *help_text;
    2675     char *title_of_window;
    2676     char *sz_res;
    2677     char *header_text;
     2629    char *tmp = NULL;
     2630    char *help_text = NULL;
     2631    char *title_of_window = NULL;
     2632    char sz_res[MAX_STR_LEN];
     2633    char *header_text = NULL;
     2634    char *p = NULL;
    26782635
    26792636  /** int **************************************************************/
     
    26882645
    26892646    log_it("malloc'ing");
    2690     malloc_string(tmp);
    2691     malloc_string(help_text);
    2692     malloc_string(title_of_window);
    2693     malloc_string(sz_res);
    2694     malloc_string(header_text);
    2695     if (!(bkp_raidrec = malloc(sizeof(struct raid_device_record)))) {
    2696         fatal_error("Cannot malloc space for raidrec");
    2697     }
    2698     if (!(bkp_disklist = malloc(sizeof(struct list_of_disks)))) {
    2699         fatal_error("Cannot malloc space for disklist");
    2700     }
    2701     if (!(bkp_raidlist = malloc(sizeof(struct raidlist_itself)))) {
    2702         fatal_error("Cannot malloc space for raidlist");
    2703     }
    2704     if (!
    2705         (unallocated_raid_partitions =
    2706          malloc(sizeof(struct mountlist_itself)))) {
    2707         fatal_error("Cannot malloc space for unallocated_raid_partitions");
    2708     }
    2709 
    2710     memcpy((void *) bkp_raidlist, (void *) raidlist,
    2711            sizeof(struct raidlist_itself));
    2712     memcpy((void *) bkp_raidrec, (void *) raidrec,
    2713            sizeof(struct raid_device_record));
    2714     memcpy((void *) bkp_disklist, (void *) disklist,
    2715            sizeof(struct list_of_disks));
     2647    bkp_raidrec = mr_malloc(sizeof(struct raid_device_record));
     2648    bkp_disklist = mr_malloc(sizeof(struct list_of_disks));
     2649    bkp_raidlist = mr_malloc(sizeof(struct raidlist_itself));
     2650    unallocated_raid_partitions = mr_malloc(sizeof(struct mountlist_itself));
     2651
     2652    memcpy((void *) bkp_raidlist, (void *) raidlist, sizeof(struct raidlist_itself));
     2653    memcpy((void *) bkp_raidrec, (void *) raidrec, sizeof(struct raid_device_record));
     2654    memcpy((void *) bkp_disklist, (void *) disklist, sizeof(struct list_of_disks));
    27162655
    27172656    log_it("Post-malloc");
    2718     strcpy(help_text,
    2719            "   Edit this RAID device's list of partitions. Choose OK or Cancel when done.");
    2720     sprintf(header_text, "%-24s    %s", "Device", "Index");
    2721     sprintf(title_of_window, "%s contains...", raidrec->raid_device);
     2657    mr_asprintf(help_text, "   Edit this RAID device's list of partitions. Choose OK or Cancel when done.");
     2658    mr_asprintf(header_text, "%-24s    %s", "Device", "Index");
     2659    mr_asprintf(title_of_window, "%s contains...", raidrec->raid_device);
    27222660    newtPushHelpLine(help_text);
    27232661    for (b_res = (newtComponent) 12345; b_res != bOK && b_res != bCancel;) {
     
    27742712                    redraw_disklist(disklist, keylist, partitionsListbox);
    27752713                } else {
    2776                     sprintf(tmp, "%s's index is %d. What should it be?",
    2777                             raidrec->raid_device,
    2778                             disklist->el[currline].index);
     2714                    mr_asprintf(tmp, "%s's index is %d. What should it be?", raidrec->raid_device, disklist->el[currline].index);
    27792715                    sprintf(sz_res, "%d", disklist->el[currline].index);
    27802716                    if (popup_and_get_string("Set index", tmp, sz_res, 10)) {
    27812717                        disklist->el[currline].index = atoi(sz_res);
    27822718                    }
     2719                    mr_free(tmp);
     2720
    27832721                    redraw_disklist(disklist, keylist, partitionsListbox);
    27842722                }
     
    27892727    }
    27902728    newtPopHelpLine();
     2729    mr_free(help_text);
     2730    mr_free(header_text);
     2731    mr_free(title_of_window);
     2732
    27912733    if (b_res == bCancel) {
    2792         memcpy((void *) raidlist, (void *) bkp_raidlist,
    2793                sizeof(struct raidlist_itself));
    2794         memcpy((void *) raidrec, (void *) bkp_raidrec,
    2795                sizeof(struct raid_device_record));
    2796         memcpy((void *) disklist, (void *) bkp_disklist,
    2797                sizeof(struct list_of_disks));
    2798     }
    2799     paranoid_free(tmp);
    2800     paranoid_free(help_text);
    2801     paranoid_free(title_of_window);
     2734        memcpy((void *) raidlist, (void *) bkp_raidlist, sizeof(struct raidlist_itself));
     2735        memcpy((void *) raidrec, (void *) bkp_raidrec, sizeof(struct raid_device_record));
     2736        memcpy((void *) disklist, (void *) bkp_disklist, sizeof(struct list_of_disks));
     2737    }
    28022738    paranoid_free(sz_res);
    2803     paranoid_free(header_text);
    2804     paranoid_free(bkp_raidrec);
    2805     paranoid_free(bkp_disklist);
    2806     paranoid_free(bkp_raidlist);
    2807     paranoid_free(unallocated_raid_partitions);
     2739    mr_free(bkp_raidrec);
     2740    mr_free(bkp_disklist);
     2741    mr_free(bkp_raidlist);
     2742    mr_free(unallocated_raid_partitions);
    28082743}
    28092744#endif
     
    28212756  /** char *************************************************************/
    28222757    char output = '\0';
    2823     char tmp[MAX_STR_LEN];
     2758    char *tmp = NULL;
    28242759
    28252760  /** newt *************************************************************/
     
    28332768
    28342769    if (g_text_mode) {
    2835         for (output = 'z'; !strchr("AICE", output); output = tmp[0]) {
    2836             printf
    2837                 ("Which mode - (A)utomatic, (I)nteractive, \n(C)ompare only, or (E)xit to shell?\n--> ");
    2838             if (fgets(tmp, MAX_STR_LEN - 1, stdin)) {
    2839                 // FIXME
    2840             }
     2770        while (!strchr("AICE", output)) {
     2771            printf("Which mode - (A)utomatic, (I)nteractive, \n(C)ompare only, or (E)xit to shell?\n--> ");
     2772            mr_getline(tmp, stdin);
     2773            output = tmp[0];
     2774            mr_free(tmp);
    28412775        }
    28422776        return (output);
    28432777    }
    28442778
    2845     newtPushHelpLine
    2846         ("   Do you want to 'nuke' your system, restore interactively, or just compare?");
     2779    newtPushHelpLine("   Do you want to 'nuke' your system, restore interactively, or just compare?");
    28472780    newtOpenWindow(24, 3, 32, 17, "How should I restore?");
    28482781    b1 = newtButton(7, 1, "Automatically");
Note: See TracChangeset for help on using the changeset viewer.