Changeset 2009 in MondoRescue for trunk/mondo/src/mondorestore/mondo-prep.c


Ignore:
Timestamp:
Aug 11, 2008, 3:05:15 AM (16 years ago)
Author:
Bruno Cornec
Message:

Commit ald modifs in trunk - just in case

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mondo/src/mondorestore/mondo-prep.c

    r1106 r2009  
    1010
    1111#include "my-stuff.h"
    12 #include "../common/mondostructures.h"
     12#include "mondostructures.h"
    1313#include "mondoprep.h"
    14 #include "../common/libmondo.h"
     14#include "libmondo.h"
    1515#include "mondo-rstr-tools-EXT.h"
    1616
     
    2020#include <unistd.h>
    2121#include "mr_mem.h"
     22#include "mr_msg.h"
    2223
    2324
     
    5253void wipe_MBRs_and_reboot_if_necessary(struct mountlist_itself *mountlist)
    5354{
    54     char *command;
    55     int lino;
    56     FILE *fout;
    57     char *buf;
     55    char *command = NULL;
     56    int lino = 0;
     57    int res = 0;
     58    FILE *fout = NULL;
     59    char *buf = NULL;
    5860    struct list_of_disks *drivelist = NULL;
    59 // If LVMs are present and a zero-and-reboot wasn't recently undertaken
    60 // then zero & insist on reboot.
     61
     62    // If LVMs are present and a zero-and-reboot wasn't recently undertaken
     63    // then zero & insist on reboot.
    6164    if (does_file_exist("/tmp/i-want-my-lvm"))  // FIXME - cheating :)
    6265    {
     
    6770                     "dd if=%s bs=512 count=1 2> /dev/null | grep \"%s\"",
    6871                     drivelist->el[lino].device, MONDO_WAS_HERE);
    69             if (!run_program_and_log_output(command, 1)) {
     72            res = run_program_and_log_output(command, 1);
     73            mr_free(command);
     74            if (!res) {
    7075                mr_msg(1, "Found MONDO_WAS_HERE marker on drive#%d (%s)",
    7176                        lino, drivelist->el[lino].device);
    72                 mr_free(command);
    7377                break;
    7478            }
    75             mr_free(command);
    7679        }
    7780
    7881        if (lino == drivelist->entries) {
    79 // zero & reboot
     82            // zero & reboot
    8083            log_to_screen
    8184                (_
     
    120123int fput_string_one_char_at_a_time(FILE * fout, char *str)
    121124{
    122     int i, j;
    123     FILE *fq;
     125    int i = 0, j = 0;
     126    FILE *fq = NULL;
    124127
    125128    if (ferror(fout)) {
     
    159162                          bool vacuum_pack)
    160163{
    161     /** char **************************************************/
    162164    char *tmp = NULL;
    163165    char *tmp1 = NULL;
     
    178180    int i = 0;
    179181    int lvmversion = 1;
    180     long extents;
     182    long extents = 0L;
    181183    fpos_t orig_pos;
    182184    size_t n = 0;
     
    184186
    185187    /** pointers **********************************************/
    186     FILE *fin;
     188    FILE *fin = NULL;
    187189
    188190    /** end *****************************************************/
     
    257259            continue;
    258260        }
    259         if (res && strstr(command, "create") && vacuum_pack) {
    260             sleep(2);
    261             sync();
    262             sync();
    263             sync();
    264         }
    265261        if ((p = strstr(incoming, "vgcreate"))) {
    266262            // include next line(s) if they end in /dev (cos we've got a broken i-want-my-lvm)
     
    271267                } else {
    272268                    fgetpos(fin, &orig_pos);
    273                     mr_asprintf(&tmp1, "%s%s", incoming, tmp);
    274                     mr_free(incoming);
    275                     incoming = tmp1;
     269                    mr_strcat(incoming, tmp);
    276270                }
    277271            }
     
    287281            *q = '\0';
    288282            mr_msg(1, "Deleting old entries at /dev/%s", tmp1);
    289             mr_asprintf(&tmp, "rm -Rf /dev/%s", tmp1);
     283            mr_asprintf(&command, "rm -Rf /dev/%s", tmp1);
    290284            mr_free(tmp1);
    291285
    292             run_program_and_log_output(tmp, 1);
    293             mr_free(tmp);
     286            run_program_and_log_output(command, 1);
     287            mr_free(command);
    294288
    295289            run_program_and_log_output(vgscan_sz, 1);
     
    300294        }
    301295        for (p = incoming + 1; *p == ' '; p++);
    302         mr_allocstr(command,p);
     296        mr_asprintf(&command,p);
    303297        for (p = command; *p != '\0'; p++);
    304         for (; *(p - 1) < 32; p--);
     298        for (; (*(p - 1) < 32) && (p > command) ; p--);
    305299        *p = '\0';
    306300
     
    319313            if (strstr(command, "lvm lvcreate"))
    320314                lvmversion = 2;
    321             /* BERLIOS : this tmp may be uninitialized ?
    322             log_it("%s... so I'll get creative.", tmp);
    323             */
    324315            if (lvmversion == 2) {
    325316                tmp = call_program_and_get_last_line_of_output
    326                         ("tail -n5 " MONDO_LOGFILE
    327                         " | grep Insufficient | tail -n1");
     317                        ("tail -n5 " MONDO_LOGFILE " | grep Insufficient | tail -n1");
    328318            } else {
    329319                tmp = call_program_and_get_last_line_of_output
    330                        ("tail -n5 " MONDO_LOGFILE
    331                         " | grep lvcreate | tail -n1");
     320                       ("tail -n5 " MONDO_LOGFILE " | grep lvcreate | tail -n1");
    332321            }
    333322            for (p = tmp; *p != '\0' && !isdigit(*p); p++);
     
    373362                mr_msg(0, "%s --> %d", command, res);
    374363                if (!res) {
    375                     mr_msg(5, "YAY! This time, it succeeded.");
     364                    mr_msg(5, "Yep! This time, it succeeded.");
    376365                }
    377366            }
     
    429418    int j = 0;
    430419    char *incoming = NULL;
    431     char *tmp = NULL;
    432420    char *p = NULL;
    433421    size_t n = 0;
     
    465453                 mr_getline(&incoming, &n, fin));
    466454            if (!feof(fin)) {
    467                 mr_asprintf(&tmp, "Investigating %s",
     455                log_it("Investigating %s",
    468456                        old_mountlist->el[lino].device);
    469                 log_it(tmp);
    470                 mr_free(tmp);
    471 
    472457                for (mr_getline(&incoming, &n, fin); !feof(fin)
    473458                     && !strstr(incoming, "raiddev");
     
    476461                        && !strchr(incoming, '#')) {
    477462                        for (p = incoming + strlen(incoming);
    478                              *(p - 1) <= 32; p--);
     463                             (*(p - 1) <= 32) && (p >= incoming) ; p--);
    479464                        *p = '\0';
    480                         for (p--; p > incoming && *(p - 1) > 32; p--);
    481                         mr_asprintf(&tmp, "Extrapolating %s", p);
    482                         log_it(tmp);
    483                         mr_free(tmp);
    484 
     465                        for (p--; (p >= incoming) && (*(p - 1) > 32); p--);
     466                        log_it("Extrapolating %s", p);
    485467                        for (j = 0;
    486468                             j < new_mountlist->entries
     
    500482                            new_mountlist->entries++;
    501483                        } else {
    502                             mr_asprintf(&tmp,
    503                                     "Not adding %s to mountlist: it's already there", p);
    504                             log_it(tmp);
    505                             mr_free(tmp);
     484                            log_it("Not adding %s to mountlist: it's already there", p);
    506485                        }
    507486                    }
     
    509488            }
    510489            mr_free(incoming);
     490
    511491            paranoid_fclose(fin);
    512492        } else {
     
    534514 * @return 0 for success, nonzero for failure.
    535515 */
    536 int create_raid_device_via_mdadm(struct raidlist_itself *raidlist,
    537                                  char *device)
     516int create_raid_device_via_mdadm(struct raidlist_itself *raidlist, char *device)
    538517{
    539518  /** int **************************************************************/
     
    567546  mr_asprintf(&devices, raidlist->el[i].data_disks.el[0].device);
    568547  for (j = 1; j < raidlist->el[i].data_disks.entries; j++) {
    569     mr_asprintf(&strtmp, "%s", devices);
    570     mr_free(devices);
    571     mr_asprintf(&devices, "%s %s", strtmp,
    572          raidlist->el[i].data_disks.el[j].device);
    573     mr_free(strtmp);
     548    mr_strcat(devices, " %s", raidlist->el[i].data_disks.el[j].device);
    574549  }
    575550  for (j = 0; j < raidlist->el[i].spare_disks.entries; j++) {
    576     mr_asprintf(&strtmp, "%s", devices);
    577     mr_free(devices);
    578     mr_asprintf(&devices, "%s %s", strtmp,
    579          raidlist->el[i].spare_disks.el[j].device);
    580     mr_free(strtmp);
     551    mr_strcat(devices, " %s", raidlist->el[i].spare_disks.el[j].device);
    581552  }
    582553  // translate RAID level
     
    597568       raidlist->el[i].raid_device, level,
    598569       raidlist->el[i].data_disks.entries);
     570  mr_free(level);
    599571  if (raidlist->el[i].parity != -1) {
    600     asprintf(&strtmp, "%s", program);
    601     mr_free(program);
    602572    switch(raidlist->el[i].parity) {
    603573    case 0:
    604       mr_asprintf(&program, "%s --parity=%s", strtmp, "la");
     574      mr_strcat(program, " --parity=%s", "la");
    605575      break;
    606576    case 1:
    607       mr_asprintf(&program, "%s --parity=%s", strtmp, "ra");
     577      mr_strcat(program, " --parity=%s", "ra");
    608578      break;
    609579    case 2:
    610       mr_asprintf(&program, "%s --parity=%s", strtmp, "ls");
     580      mr_strcat(program, " --parity=%s", "ls");
    611581      break;
    612582    case 3:
    613       mr_asprintf(&program, "%s --parity=%s", strtmp, "rs");
     583      mr_strcat(program, " --parity=%s", "rs");
    614584      break;
    615585    default:
     
    617587      break;
    618588    }
    619     mr_free(strtmp);
    620589  }
    621590  if (raidlist->el[i].chunk_size != -1) {
    622     mr_asprintf(&strtmp, "%s", program);
    623     mr_free(program);
    624     mr_asprintf(&program, "%s --chunk=%d", strtmp, raidlist->el[i].chunk_size);
    625     mr_free(strtmp);
     591        mr_strcat(program, " --chunk=%d", raidlist->el[i].chunk_size);
    626592  }
    627593  if (raidlist->el[i].spare_disks.entries > 0) {
    628     mr_asprintf(&strtmp, "%s", program);
    629     mr_free(program);
    630     mr_asprintf(&program, "%s --spare-devices=%d", strtmp,
    631          raidlist->el[i].spare_disks.entries);
    632     mr_free(strtmp);
     594        mr_strcat(program, " --spare-devices=%d", raidlist->el[i].spare_disks.entries);
    633595  }
    634   mr_asprintf(&strtmp, "%s", program);
    635   mr_free(program);
    636   mr_asprintf(&program, "%s %s", strtmp, devices);
    637   mr_free(strtmp);
     596    mr_strcat(program, " %s", devices);
    638597  res = run_program_and_log_output(program, 1);
    639598  // free memory
    640599  mr_free(devices);
    641   mr_free(level);
    642600  mr_free(program);
    643601  // return to calling instance
    644   return res;
     602  return(res);
    645603}
    646604
     
    656614 * @return 0 for success, nonzero for failure.
    657615 */
    658 int format_device(char *device, char *format,
    659                   struct raidlist_itself *raidlist)
     616int format_device(char *device, char *format, struct raidlist_itself *raidlist)
    660617{
    661618    /** int **************************************************************/
     
    673630    char *line = NULL;
    674631    char *status = NULL;
    675     FILE *pin;
    676     FILE *fin;
     632    FILE *pin = NULL;
     633    FILE *fin = NULL;
    677634    size_t n = 0;
    678635    size_t n1 = 0;
     
    685642
    686643    if (strstr(format, "raid")) {   // do not form RAID disks; do it to /dev/md* instead
    687         mr_asprintf(&tmp, "Not formatting %s (it is a RAID disk)", device);
    688         log_it(tmp);
    689         mr_free(tmp);
     644        log_it("Not formatting %s (it is a RAID disk)", device);
    690645        return (0);
    691646    }
     
    700655                "%s has a really small format type ('%s') - this is probably a hexadecimal string, which would suggest the partition is an image --- I shouldn't format it",
    701656                device, format);
    702         log_it(tmp);
    703         mr_free(tmp);
    704657        return (0);
    705658    }
    706659    if (is_this_device_mounted(device)) {
    707         mr_asprintf(&tmp, _("%s is mounted - cannot format it       "), device);
    708         log_to_screen(tmp);
    709         mr_free(tmp);
     660        log_to_screen(_("%s is mounted - cannot format it       "), device);
    710661        return (1);
    711662    }
     
    734685
    735686        if (vinum_started_yet) {
    736             mr_asprintf(&tmp,
    737                     _
    738                     ("Initializing Vinum device %s (this may take a *long* time)"),
     687            log_to_screen(_("Initializing Vinum device %s (this may take a *long* time)"),
    739688                    device);
    740             log_to_screen(tmp);
    741             mr_free(tmp);
    742689
    743690            /* format raid partition */
     
    785732            }
    786733            mr_free(line);
     734
    787735            fclose(fin);
    788736            unlink("/tmp/plexes");
     
    790738        }
    791739#else
    792         mr_asprintf(&tmp, _("Initializing RAID device %s"), device);
    793         log_to_screen(tmp);
    794         mr_free(tmp);
    795 
    796 // Shouldn't be necessary.
     740        log_to_screen(_("Initializing RAID device %s"), device);
     741
     742        // Shouldn't be necessary.
    797743        log_to_screen(_("Stopping %s"), device);
    798744        stop_raid_device(device);
    799745        sync();
    800746        sleep(1);
    801         /* BERLIOS: This code is wrong as program has not been initialized
    802         if (g_fprep) {
    803             fprintf(g_fprep, "%s\n", program);
    804         }
    805         */
    806747
    807748        mr_msg(1, "Making %s", device);
    808749        // use mkraid if it exists, otherwise use mdadm
    809         if (run_program_and_log_output("which mkraid", FALSE)) {
    810             res = create_raid_device_via_mdadm(raidlist, device);
    811             mr_msg(1, "Creating RAID device %s via mdadm returned %d",
    812                     device, res);
     750        if (run_program_and_log_output("which mkraid", FALSE)) {
     751            res = create_raid_device_via_mdadm(raidlist, device);
     752            mr_msg(1, "Creating RAID device %s via mdadm returned %d", device, res);
    813753        } else {
    814754            mr_asprintf(&program, "mkraid --really-force %s", device);
     
    830770        newtResume();
    831771    }
    832 //#ifndef __FreeBSD__
    833 //#endif
    834772
    835773    if (!strcmp(format, "lvm")) {
     
    849787    mr_free(tmp);
    850788
    851     mr_asprintf(&tmp, "Formatting %s as %s", device, format);
     789    mr_asprintf(&tmp, _("Formatting %s as %s"), device, format);
    852790    update_progress_form(tmp);
    853791
    854792    res = run_program_and_log_output(program, FALSE);
    855793    if (res && strstr(program, "kludge")) {
     794        mr_free(tmp);
     795        mr_asprintf(&tmp, _("Kludge failed; using regular mkfs.%s to format %s"), format, device);
     796        mr_free(program);
    856797#ifdef __FreeBSD__
    857         mr_free(program);
    858798        mr_asprintf(&program, "newfs_msdos -F 32 %s", device);
    859799#else
     
    861801        /* For EFI partitions take fat16
    862802         * as we want to make small ones */
    863         mr_free(program);
    864803        mr_asprintf(&program, "mkfs -t %s -F 16 %s", format, device);
    865804#else
    866         mr_free(program);
    867805        mr_asprintf(&program, "mkfs -t %s -F 32 %s", format, device);
    868806#endif
     
    877815    retval += res;
    878816    if (retval) {
    879         mr_asprintf(&tmp1, "%s%s",tmp, _("...failed"));
     817        mr_strcat(tmp, _("...failed"));
    880818    } else {
    881         mr_asprintf(&tmp1, "%s%s",tmp, _("...OK"));
    882     }
     819        mr_strcat(tmp, _("...OK"));
     820    }
     821    log_to_screen(tmp);
    883822    mr_free(tmp);
    884823
    885     log_to_screen(tmp1);
    886     mr_free(tmp1);
    887824    sync();
    888825    sleep(1);
     
    902839    /** int **************************************************************/
    903840    int retval = 0;
    904     int lino;
    905     int res;
    906 //  int i;
    907 //  struct list_of_disks *drivelist;
     841    int lino = 0;
     842    int res = 0;
    908843
    909844    /** long *************************************************************/
    910     long progress_step;
     845    long progress_step = 0L;
    911846
    912847    /** bools ************************************************************/
    913     bool do_it;
     848    bool do_it = FALSE;
    914849
    915850    /** buffers **********************************************************/
    916     char *tmp;
     851    char *tmp = NULL;
    917852
    918853    /** pointers *********************************************************/
    919     struct mountlist_line *me;  // mountlist entry
     854    struct mountlist_line *me = NULL;   // mountlist entry
    920855    /** end **************************************************************/
    921856
    922857    assert(mountlist != NULL);
    923     mr_asprintf(&tmp, "format_everything (mountlist, interactively = %s",
     858    log_it("format_everything (mountlist, interactively = %s",
    924859            (interactively) ? "true" : "false");
    925     log_it(tmp);
    926     mr_free(tmp);
    927 
    928860    mvaddstr_and_log_it(g_currentY, 0, _("Formatting partitions     "));
    929861    open_progress_form(_("Formatting partitions"),
     
    935867        (mountlist->entries >
    936868         0) ? g_maximum_progress / mountlist->entries : 1;
    937 // start soft-raids now (because LVM might depend on them)
    938 // ...and for simplicity's sake, let's format them at the same time :)
     869    // start soft-raids now (because LVM might depend on them)
     870    // ...and for simplicity's sake, let's format them at the same time :)
    939871    mr_msg(1, "Stopping all RAID devices");
    940872    stop_all_raid_devices(mountlist);
     
    968900    sync();
    969901    sleep(2);
    970 // This last step is probably necessary
    971 //  log_to_screen("Re-starting software RAIDs...");
    972 //  start_all_raid_devices(mountlist);
    973 //  system("sync"); system("sync"); system("sync");
    974 //  sleep(5);
    975 // do LVMs now
     902    // This last step is probably necessary
     903    //  log_to_screen("Re-starting software RAIDs...");
     904    //  start_all_raid_devices(mountlist);
     905    //  system("sync"); system("sync"); system("sync");
     906    //  sleep(5);
     907    // do LVMs now
    976908    mr_msg(1, "Creating LVMs");
    977909    if (does_file_exist("/tmp/i-want-my-lvm")) {
     
    995927        sleep(3);
    996928    }
    997 // do regulars at last
     929    // do regulars at last
    998930    sleep(2);                   // woo!
    999931    mr_msg(1, "Formatting regulars");
     
    1001933        me = &mountlist->el[lino];  // the current mountlist entry
    1002934        if (!strcmp(me->mountpoint, "image")) {
    1003             mr_asprintf(&tmp, "Not formatting %s - it's an image", me->device);
    1004             log_it(tmp);
    1005             mr_free(tmp);
     935            log_it("Not formatting %s - it's an image", me->device);
    1006936        } else if (!strcmp(me->format, "raid")) {
    1007             mr_asprintf(&tmp, "Not formatting %s - it's a raid-let",
    1008                     me->device);
    1009             log_it(tmp);
    1010             mr_free(tmp);
     937            log_it("Not formatting %s - it's a raid-let", me->device);
    1011938            continue;
    1012939        } else if (!strcmp(me->format, "lvm")) {
    1013             mr_asprintf(&tmp, "Not formatting %s - it's an LVM", me->device);
    1014             log_it(tmp);
    1015             mr_free(tmp);
     940            log_it("Not formatting %s - it's an LVM", me->device);
    1016941            continue;
    1017942        } else if (!strncmp(me->device, "/dev/md", 7)) {
    1018             mr_asprintf(&tmp, "Already formatted %s - it's a soft-RAID dev",
    1019                     me->device);
    1020             log_it(tmp);
    1021             mr_free(tmp);
     943            log_it("Already formatted %s - it's a soft-RAID dev", me->device);
    1022944            continue;
    1023945        } else if (!does_file_exist(me->device)
    1024946                   && strncmp(me->device, "/dev/hd", 7)
    1025947                   && strncmp(me->device, "/dev/sd", 7)) {
    1026             mr_asprintf(&tmp,
    1027                     "Not formatting %s yet - doesn't exist - probably an LVM",
    1028                     me->device);
    1029             log_it(tmp);
    1030             mr_free(tmp);
     948            log_it("Not formatting %s yet - doesn't exist - probably an LVM", me->device);
    1031949            continue;
    1032950        } else {
     
    1066984    }
    1067985
    1068     mr_asprintf(&tmp, "format_everything () - %s",
     986    log_it("format_everything () - %s",
    1069987            (retval) ? "failed!" : "finished successfully");
    1070     log_it(tmp);
    1071     mr_free(tmp);
    1072988
    1073989    if (g_partition_table_locked_up > 0) {
     
    11201036{
    11211037    /** int **************************************************************/
    1122     int current_devno;
    1123     int previous_devno;
     1038    int current_devno = 0;
     1039    int previous_devno = 0;
    11241040    int retval = 0;
    1125     int res;
    1126 
    1127     /** buffers **********************************************************/
    1128     char *tmp;
     1041    int res = 0;
    11291042
    11301043    /** end **************************************************************/
     
    11331046
    11341047    if (devno_we_must_allow_for >= 5) {
    1135         mr_asprintf(&tmp, "Making dummy primary %s%d", drivename, 1);
    1136         log_it(tmp);
    1137         mr_free(tmp);
    1138 
     1048        log_it("Making dummy primary %s%d", drivename, 1);
    11391049        g_maximum_progress++;
    11401050        res =
     
    11491059    }
    11501060    for (; current_devno < devno_we_must_allow_for; current_devno++) {
    1151         mr_asprintf(&tmp, "Creating dummy partition %s%d", drivename,
    1152                 current_devno);
    1153         log_it(tmp);
    1154         mr_free(tmp);
    1155 
     1061        log_it("Creating dummy partition %s%d", drivename, current_devno);
    11561062        g_maximum_progress++;
    11571063        res =
     
    12931199{
    12941200    static struct disklabel loclab;
    1295     struct partition *dp;
    1296     char *lnamebuf;
     1201    struct partition *dp = NULL;
     1202    char *lnamebuf = NULL;
    12971203    int f;
    12981204    u_int secsize, u;
     
    13761282                         char *drivename, struct disklabel *ret)
    13771283{
    1378     char *subdev_str;
    1379     char *command;
    1380     struct disklabel *lp;
     1284    char *subdev_str = NULL;
     1285    char *command = NULL;
     1286    struct disklabel *lp = NULL;
    13811287    int i, lo = 0;
    13821288    int retval = 0;
    1383     char c;
    1384     FILE *ftmp;
     1289    char c = ' ';
     1290    FILE *ftmp = NULL;
    13851291
    13861292    lp = get_virgin_disklabel(drivename);
     
    14931399    assert_string_is_neither_NULL_nor_zerolength(drivename);
    14941400
    1495     mr_asprintf(&tmp, "Partitioning drive %s", drivename);
    1496     log_it(tmp);
    1497     mr_free(tmp);
     1401    log_it("Partitioning drive %s", drivename);
    14981402
    14991403#if __FreeBSD__
     
    15231427            // then see if the user has picked 'dangerously-dedicated' mode.
    15241428            // If so, then we just call label_drive_or_slice() and return.
    1525             char c;
    1526             char *command;
     1429            char c = ' ';
     1430            char *command = NULL;
    15271431
    15281432            if (current_devno == 1) {
     
    15931497            file = open(drivename, O_WRONLY);
    15941498            if (!file) {
    1595                 mr_asprintf(&tmp,
    1596                         _("Warning - unable to open %s for wiping it's partition table"),
    1597                         drivename);
    1598                 log_to_screen(tmp);
    1599                 mr_free(tmp);
     1499                log_to_screen(_("Warning - unable to open %s for wiping it's partition table"), drivename);
    16001500            }
    16011501
    16021502            for (i = 0; i < 512; i++) {
    16031503                if (!write(file, "\0", 1)) {
    1604                     mr_asprintf(&tmp, _("Warning - unable to write to %s"),
    1605                             drivename);
    1606                     log_to_screen(tmp);
    1607                     mr_free(tmp);
     1504                    log_to_screen(_("Warning - unable to write to %s"), drivename);
    16081505                }
    16091506            }
     
    16251522        if (!fbsd_part) {
    16261523#endif
    1627 
     1524            mr_free(format);
    16281525            mr_asprintf(&format, mountlist->el[lino].format);
    16291526            partsize = mountlist->el[lino].size;
     
    16331530#endif
    16341531
     1532#ifndef __IA64__
    16351533        if (current_devno == 5 && previous_devno == 4) {
    16361534            log_to_screen
     
    16411539            return (1);
    16421540        }
     1541#endif
    16431542
    16441543        retval +=
     
    17161615
    17171616    /** buffers **********************************************************/
    1718     char *program;
    1719     char *partition_name;
    1720     char *tmp;
    1721     char *output;
     1617    char *program = NULL;
     1618    char *partition_name = NULL;
     1619    char *tmp = NULL;
     1620    char *output = NULL;
    17221621
    17231622    /** pointers **********************************************************/
    1724     char *p;
    1725     char *part_table_fmt;
    1726     FILE *fout;
     1623    char *p = NULL;
     1624    char *part_table_fmt = NULL;
     1625    FILE *fout = NULL;
    17271626
    17281627    /** end ***************************************************************/
     
    17351634
    17361635    if (!strncmp(drive, RAID_DEVICE_STUB, strlen(RAID_DEVICE_STUB))) {
    1737         mr_asprintf(&tmp, "Not partitioning %s - it is a virtual drive", drive);
    1738         log_it(tmp);
    1739         mr_free(tmp);
     1636        log_it("Not partitioning %s - it is a virtual drive", drive);
    17401637        return (0);
    17411638    }
     
    17521649
    17531650    if (is_this_device_mounted(partition_name)) {
    1754         mr_asprintf(&tmp, _("%s is mounted, and should not be partitioned"),
     1651        log_to_screen("%s is mounted, and should not be partitioned",
    17551652                partition_name);
    17561653        mr_free(partition_name);
    1757 
    1758         log_to_screen(tmp);
    1759         mr_free(tmp);
    17601654        return (1);
    17611655    }
    17621656
    17631657    p = (char *) strrchr(partition_name, '/');
    1764     mr_asprintf(&program, "parted2fdisk %s >> %s 2>> %s", drive, MONDO_LOGFILE,
    1765             MONDO_LOGFILE);
    17661658
    17671659    /* BERLIOS: should not be called each time */
     
    17791671                         ("You need to leave at least one partition free, for 'extended/logical'"));
    17801672                    mr_free(partition_name);
    1781                     mr_free(program);
    1782 
    1783                     mr_free(output);
    17841673                    return (1);
    17851674                } else {
     
    17871676                }
    17881677            }
    1789             mr_asprintf(&tmp,"%sn\nl\n",output);
    1790             mr_free(output);
    1791             output = tmp;
     1678            mr_strcat(output, "n\nl\n");
    17921679        } else {
    17931680            /* GPT allows more than 4 primary partitions */
     
    17971684    mr_free(part_table_fmt);
    17981685    /*start block (ENTER for next free blk */
    1799     mr_asprintf(&tmp,"%s\n",output);
    1800     mr_free(output);
    1801     output = tmp;
    1802 
     1686    mr_strcat(output, "\n");   
    18031687    if (partsize > 0) {
    18041688        if (!strcmp(format, "7")) {
     
    18061690            partsize += 512;
    18071691        }
    1808         mr_asprintf(&tmp,"%s+%lldK", output,  (long long) (partsize));
    1809         mr_free(output);
    1810         output = tmp;
    1811     }
    1812     mr_asprintf(&tmp,"%s\n",output);
    1813     mr_free(output);
    1814     output = tmp;
     1692        mr_strcat(output, "+%lldK", (long long) (partsize));
     1693    }
     1694    mr_strcat(output, "\n");
    18151695#if 0
    18161696/*
    18171697#endif
    1818     mr_asprintf(&tmp,"PARTSIZE = +%ld",(long)partsize);
    1819     log_it(tmp);
    1820     mr_free(tmp);
    1821 
     1698    log_it("PARTSIZE = +%ld",(long)partsize);
    18221699    log_it("---fdisk command---");
    18231700    log_it(output);
     
    18601737        }
    18611738    } else {
    1862         mr_asprintf(&tmp,"%sw\n\n",output);
    1863         mr_free(output);
    1864         output = tmp;
     1739        mr_strcat(output, "w\n\n");
     1740        mr_asprintf(&program, "parted2fdisk %s >> %s 2>> %s", drive, MONDO_LOGFILE,
     1741            MONDO_LOGFILE);
    18651742
    18661743        if (g_fprep) {
     
    18741751            paranoid_pclose(fout);
    18751752        }
     1753        mr_free(program);
     1754
    18761755        if (!does_partition_exist(drive, partno) && partsize > 0) {
    18771756            log_it("Vaccum-packing");
     
    18811760                                 format, -1);
    18821761            if (res) {
    1883                 mr_asprintf(&tmp, "Failed to vacuum-pack %s", partition_name);
    1884                 log_it(tmp);
    1885                 mr_free(tmp);
    1886 
     1762                log_it("Failed to vacuum-pack %s", partition_name);
    18871763                retval++;
    18881764            } else {
     
    18951771                                   partsize);
    18961772            if (retval) {
    1897                 mr_asprintf(&tmp, "Partitioned %s but failed to set its type",
     1773                log_it("Partitioned %s but failed to set its type",
    18981774                        partition_name);
    1899                 log_it(tmp);
    1900                 mr_free(tmp);
    19011775            } else {
    19021776                if (partsize > 0) {
    1903                     mr_asprintf(&tmp, "Partition %s created+configured OK",
     1777                    log_to_screen(_("Partition %s created+configured OK"),
    19041778                            partition_name);
    1905                     log_to_screen(tmp);
    1906                     mr_free(tmp);
    19071779                } else {
    19081780                    log_it("Returning from a successful vacuum-pack");
     
    19231795    log_it("partition_device() --- leaving");
    19241796    mr_free(partition_name);
    1925     mr_free(program);
    19261797    mr_free(output);
    19271798    return (retval);
     
    19391810{
    19401811    /** int ************************************************************/
    1941     int lino;
     1812    int lino = 0;
    19421813    int retval = 0;
    1943     int i;
    1944     int res;
     1814    int i = 0;
     1815    int res = 0;
    19451816
    19461817    /** buffer *********************************************************/
    1947     struct list_of_disks *drivelist;
    1948     /*  struct mountlist_itself new_mtlist, *mountlist; */
     1818    struct list_of_disks *drivelist = NULL;
    19491819
    19501820    /** end ************************************************************/
     
    19551825    log_it("partition_everything() --- starting");
    19561826    mvaddstr_and_log_it(g_currentY, 0, "Partitioning hard drives      ");
    1957     /*  mountlist=orig_mtlist; */
    19581827    if (mountlist_contains_raid_devices(mountlist)) {
    19591828        /*      mountlist=&new_mtlist; */
     
    19771846    stop_all_raid_devices(mountlist);
    19781847    mr_msg(0, "Done.");
    1979 
    1980 /* 
    1981     if (does_file_exist("/tmp/i-want-my-lvm"))
    1982       {
    1983         wipe_MBRs_and_reboot_if_necessary(mountlist); // i.e. if it wasn't done recently
    1984       }
    1985 */
    19861848
    19871849    open_progress_form(_("Partitioning devices"),
     
    20101872    system("clear");
    20111873    newtResume();
    2012     mr_free((void*) drivelist);
     1874    mr_free(drivelist);
    20131875    return (retval);
    20141876}
    2015 
    2016 
    2017 
    2018 
    20191877
    20201878
     
    20761934        mr_asprintf(&partcode, "8e");
    20771935    } else if (format[0] == '\0') { /* LVM physical partition */
    2078         mr_asprintf(&partcode, "%s", "");
     1936        mr_asprintf(&partcode, "");
    20791937    } else if (strlen(format) >= 1 && strlen(format) <= 2) {
    20801938        mr_asprintf(&partcode, format);
     
    20981956    mr_msg(1, tmp);
    20991957    mr_free(tmp);
     1958
    21001959    if (partcode[0] != '\0' && strcmp(partcode, "83")) {    /* no need to set type if 83: 83 is default */
    21011960
     
    21191978            fput_string_one_char_at_a_time(pout_to_fdisk, tmp);
    21201979            mr_free(tmp);
     1980
    21211981            tmp1 = last_line_of_file(FDISK_LOG);
    21221982            mr_msg(5, "B - last line = '%s'",tmp1);
     
    21702030{
    21712031    /** int *************************************************************/
    2172     int res;
     2032    int res = 0;
    21732033    int retval = 0;
    21742034
    21752035    /** buffers *********************************************************/
    2176     char *program;
     2036    char *program = NULL;
    21772037
    21782038    /** end *************************************************************/
     
    21872047    mr_asprintf(&program, "vinum start -f %s", raid_device);
    21882048#else
    2189     mr_asprintf(&program, "raidstart %s", raid_device);
     2049    // use raidstart if it exists, otherwise use mdadm
     2050    if (run_program_and_log_output("which raidstart", FALSE)) {
     2051        // BERLIOS: Not sure it's sufficient
     2052        mr_asprintf(&program, "mdadm -A %s", raid_device);
     2053    } else {
     2054        mr_asprintf(&program, "raidstart %s", raid_device);
     2055    }
    21902056#endif
    21912057    mr_msg(1, "program = %s", program);
     
    22142080{
    22152081    /** int *************************************************************/
    2216     int res;
     2082    int res = 0;
    22172083    int retval = 0;
    22182084
    22192085    /** buffers *********************************************************/
    2220     char *program;
     2086    char *program = NULL;
    22212087
    22222088    /** end *************************************************************/
     
    22552121int start_all_raid_devices(struct mountlist_itself *mountlist)
    22562122{
    2257     int i;
     2123    int i = 0;
    22582124    int retval = 0;
    2259     int res;
     2125    int res = 0;
    22602126
    22612127    for (i = 0; i < mountlist->entries; i++) {
     
    23662232    /** int *************************************************************/
    23672233    int res = 0;
    2368 
    2369     /** buffers *********************************************************/
    2370     char *tmp;
    23712234
    23722235    /** end ***************************************************************/
     
    24022265        mr_asprintf(&program, "mkfs -t %s -c", format); // -c checks for bad blocks
    24032266#endif
    2404         mr_asprintf(&tmp, "Unknown format (%s) - assuming '%s' will do", format,
     2267        log_it("Unknown format (%s) - assuming '%s' will do", format,
    24052268                program);
    2406         log_it(tmp);
    2407         mr_free(tmp);
    24082269        res = 0;
    24092270    }
     
    24232284{
    24242285    /** long ************************************************************/
    2425     long original_size_of_drive;
     2286    long original_size_of_drive = 0L;
    24262287
    24272288    /** int *************************************************************/
    2428     int partno;
    2429 
    2430     /** buffers *********************************************************/
    2431     char *tmp;
     2289    int partno = 0;
    24322290
    24332291    /** end *************************************************************/
     
    24422300             strlen(drive_name)) == 0) {
    24432301            original_size_of_drive += mountlist->el[partno].size;
    2444         } else {
    2445             mr_asprintf(&tmp, "Skipping %s", mountlist->el[partno].device);
    2446 //                      log_to_screen(tmp);
    2447             mr_free(tmp);
    24482302        }
    24492303    }
     
    24682322                                                     char *drive_name)
    24692323{
    2470     /**buffers **********************************************************/
    2471     char *tmp;
    2472 
    24732324    /** int *************************************************************/
    2474     int partno, lastpart;
     2325    int partno = 0, lastpart = 0;
    24752326               /** remove driveno, noof_drives stan benoit apr 2002**/
    24762327
     
    24782329    float factor;
    24792330    float new_size;
    2480 //  float newcylinderno;
    24812331
    24822332    /** long *************************************************************/
    2483     long newsizL;
    2484     long current_size_of_drive = 0;
    2485     long original_size_of_drive = 0;
    2486     long final_size;            /* all in Megabytes */
    2487     struct mountlist_reference *drivemntlist;
     2333    long newsizL = 0L;
     2334    long current_size_of_drive = 0L;
     2335    long original_size_of_drive = 0L;
     2336    long final_size = 0L;           /* all in Megabytes */
     2337    struct mountlist_reference *drivemntlist = NULL;
    24882338
    24892339    /** structures *******************************************************/
     
    25072357        return;
    25082358    }
    2509     mr_asprintf(&tmp, _("Expanding entries to suit drive %s (%ld MB)"),
    2510             drive_name, current_size_of_drive);
    2511     log_to_screen(tmp);
    2512     mr_free(tmp);
     2359    log_to_screen("Expanding entries to suit drive %s (%ld MB)", drive_name,
     2360            current_size_of_drive);
    25132361
    25142362    drivemntlist = mr_malloc(sizeof(struct mountlist_reference));
     
    25242372
    25252373    if (original_size_of_drive <= 0) {
    2526         mr_asprintf(&tmp, _("Cannot resize %s's entries. Drive not found."),
     2374        log_to_screen(_("Cannot resize %s's entries. Drive not found."),
    25272375                drive_name);
    2528         log_to_screen(tmp);
    2529         mr_free(tmp);
    25302376        return;
    25312377    }
    25322378    factor =
    25332379        (float) (current_size_of_drive) / (float) (original_size_of_drive);
    2534     mr_asprintf(&tmp, "Disk %s was %ld MB; is now %ld MB; factor = %f",
     2380    log_to_screen(_("Disk %s was %ld MB; is now %ld MB; factor = %f"),
    25352381            drive_name, original_size_of_drive, current_size_of_drive,
    25362382            factor);
    2537     log_to_screen(tmp);
    2538     mr_free(tmp);
    25392383
    25402384    lastpart = drivemntlist->entries - 1;
     
    25552399            newsizL = (long) new_size;
    25562400        }
    2557         mr_asprintf(&tmp, _("Changing %s from %lld KB to %ld KB"),
     2401        log_to_screen(_("Changing %s from %lld KB to %ld KB"),
    25582402                drivemntlist->el[partno]->device,
    25592403                drivemntlist->el[partno]->size, newsizL);
    2560         log_to_screen(tmp);
    2561         mr_free(tmp);
    25622404        drivemntlist->el[partno]->size = newsizL;
    25632405    }
    25642406    final_size = get_phys_size_of_drive(drive_name);
    2565     mr_asprintf(&tmp, _("final_size = %ld MB"), final_size);
    2566     log_to_screen(tmp);
    2567     mr_free(tmp);
     2407    log_to_screen(_("final_size = %ld MB"), final_size);
    25682408}
    25692409
     
    25792419{
    25802420    /** buffers *********************************************************/
    2581     struct list_of_disks *drivelist;
     2421    struct list_of_disks *drivelist = NULL;
    25822422
    25832423    /** int *************************************************************/
    2584     int driveno;
     2424    int driveno = 0;
    25852425
    25862426    /** end *************************************************************/
     
    25922432            ("resize_mountlist_prop...() - warning - mountlist fname is blank");
    25932433        log_it("That does NOT affect the functioning of this subroutine.");
    2594         log_it("--- Hugo, 2002/11/20");
    25952434    }
    25962435    iamhere("Resizing mountlist");
     
    26042443    }
    26052444    log_to_screen(_("Mountlist adjusted to suit current hard drive(s)"));
    2606     mr_free((void*) drivelist);
     2445    mr_free(drivelist);
    26072446}
    26082447
     
    26192458                                struct mountlist_reference *drivemntlist)
    26202459{
    2621     int partno;
    2622     char *tmp_drive_name, *c;
     2460    int partno = 0;
     2461    char *tmp_drive_name = NULL, *c = NULL;
    26232462
    26242463    assert(mountlist != NULL);
     
    26282467    mr_msg(1, "Creating list of partitions for drive %s", drive_name);
    26292468
    2630     mr_asprintf(&tmp_drive_name,drive_name);
    2631     if (!tmp_drive_name)
    2632         fatal_error("Out of memory");
     2469    mr_asprintf(&tmp_drive_name, drive_name);
    26332470
    26342471    /* devfs devices? */
Note: See TracChangeset for help on using the changeset viewer.