Ignore:
Timestamp:
Jan 28, 2007, 11:20:07 PM (17 years ago)
Author:
Bruno Cornec
Message:

merge -r1078:1080 $SVN_M/branches/stable

File:
1 edited

Legend:

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

    r1043 r1081  
    1 /*
     1/***************************************************************************
    22 * $Id$
    3 **/
     3*/
     4
    45
    56#include <unistd.h>
    6 
    77#include "my-stuff.h"
    88#include "../common/mondostructures.h"
     
    6767    mr_free(g_isodir_device);
    6868    mr_free(g_isodir_format);
    69 
    7069}
    7170
     
    201200        retval = 0;
    202201    }
     202<<<<<<< .courant
    203203    mr_free(orig_fname);
     204=======
     205    mr_free(mountpt);
     206    mr_free(command);
     207    mr_free(orig_fname);
     208>>>>>>> .fusion-droit.r1080
    204209    return (retval);
    205210}
     
    265270
    266271    res = run_program_and_log_output(command, FALSE);
    267     mr_free(command);
     272<<<<<<< .courant
     273    mr_free(command);
     274=======
     275    mr_free(command);
     276    mr_free(file);
     277    mr_free(tmp);
     278>>>>>>> .fusion-droit.r1080
    268279    if (res) {
    269280        return (FALSE);
     
    363374    log_msg(2, "%ld: bkpinfo->isodir is now %s", __LINE__,
    364375            bkpinfo->isodir);
     376<<<<<<< .courant
     377=======
     378    mr_free(mount_isodir_command);
     379    mr_free(tmp);
     380    mr_free(command);
     381>>>>>>> .fusion-droit.r1080
    365382    return (retval);
    366383}
     
    419436        return (0);
    420437    }
     438<<<<<<< .courant
    421439    if (!strcmp(mountpoint, "image")) {
    422440        mr_free(mountpoint);
    423441        return (0);
     442=======
     443    if (!does_file_exist(rclocal_fname)) {
     444        mr_free(rclocal_fname);
     445        mr_free(newfile_fname);
     446        mr_free(tmp);
     447        return (1);
     448>>>>>>> .fusion-droit.r1080
    424449    }
    425450    mr_asprintf(&tmp, "Mounting device %s   ", device);
     
    431456        mr_asprintf(&p1, "-o ro");
    432457    }
     458<<<<<<< .courant
    433459    tmp = find_home_of_exe("setfattr");
    434460    if (tmp) {
     
    438464    }
    439465    mr_free(tmp);
     466=======
     467    sprintf(tmp, "echo -en \"#!/bin/sh\
     468\\n\
     469\\n\
     470grep -v mondorescue %s > %s\\n\
     471rm -f /var/lock/subsys/*xfs*\\n\
     472rm -f /var/run/xfs.*\\n\
     473killall xfs\\n\
     474service xfs start\\n\
     475yes | rm -f %s\\n\
     476\" > %s", rclocal_fname, rclocal_fname, newfile_fname, newfile_fname);
     477    sprintf(tmp, "chmod +x \"%s\"", newfile_fname);
     478    run_program_and_log_output(tmp, FALSE);
     479    mr_free(rclocal_fname);
     480    mr_free(newfile_fname);
     481    mr_free(tmp);
     482    return (0);
     483}
     484>>>>>>> .fusion-droit.r1080
    440485
    441486    tmp = find_home_of_exe("setfacl");
     
    538583
    539584    assert(p_external_copy_of_mountlist != NULL);
    540     mountlist = malloc(sizeof(struct mountlist_itself));
     585    mountlist = mr_malloc(sizeof(struct mountlist_itself));
    541586    memcpy((void *) mountlist, (void *) p_external_copy_of_mountlist,
    542587           sizeof(struct mountlist_itself));
     
    621666    }
    622667    run_program_and_log_output("df -m", 3);
     668<<<<<<< .courant
    623669    mr_free(mountlist);
     670=======
     671    mr_free(mountlist);
     672    mr_free(tmp);
     673    mr_free(format);
     674    mr_free(these_failed);
     675>>>>>>> .fusion-droit.r1080
    624676    return (retval);
    625677}
     
    651703        || bkpinfo->backup_media_type == udev) {
    652704        log_msg(8, "Tape/udev. Therefore, no need to mount CDROM.");
     705<<<<<<< .courant
     706=======
     707        mr_free(mount_cmd);
     708>>>>>>> .fusion-droit.r1080
    653709        return 0;
    654710    }
     
    656712    if (!run_program_and_log_output("mount | grep -F " MNT_CDROM, FALSE)) {
    657713        log_msg(2, "mount_cdrom() - CD already mounted. Fair enough.");
     714<<<<<<< .courant
     715=======
     716        mr_free(mount_cmd);
     717>>>>>>> .fusion-droit.r1080
    658718        return (0);
    659719    }
     
    747807        log_msg(2, "Mounted CD-ROM drive OK");
    748808    }
     809<<<<<<< .courant
     810=======
     811    mr_free(mount_cmd);
     812>>>>>>> .fusion-droit.r1080
    749813    return (res);
    750814}
     
    755819
    756820/**
     821<<<<<<< .courant
     822=======
     823 * Mount @p device at @p mpt as @p format.
     824 * @param device The device (/dev entry) to mount.
     825 * @param mpt The directory to mount it on.
     826 * @param format The filesystem type of @p device.
     827 * @param writeable If TRUE, mount read-write; if FALSE, mount read-only.
     828 * @return 0 for success, nonzero for failure.
     829 */
     830int mount_device(char *device, char *mpt, char *format, bool writeable)
     831{
     832    int res = 0;
     833
     834  /** malloc **/
     835    char *tmp, *command, *mountdir, *mountpoint, *additional_parameters;
     836
     837    assert_string_is_neither_NULL_nor_zerolength(device);
     838    assert_string_is_neither_NULL_nor_zerolength(mpt);
     839    assert(format != NULL);
     840    malloc_string(tmp);
     841    malloc_string(command);
     842    malloc_string(mountdir);
     843    malloc_string(mountpoint);
     844    malloc_string(additional_parameters);
     845
     846    if (!strcmp(mpt, "/1")) {
     847        strcpy(mountpoint, "/");
     848        log_msg(3, "Mommm! SME is being a dildo!");
     849    } else {
     850        strcpy(mountpoint, mpt);
     851    }
     852
     853    if (!strcmp(mountpoint, "lvm")) {
     854        return (0);
     855    }
     856    if (!strcmp(mountpoint, "image")) {
     857        return (0);
     858    }
     859    sprintf(tmp, "Mounting device %s   ", device);
     860    log_msg(1, tmp);
     861    if (writeable) {
     862        strcpy(additional_parameters, "-o rw");
     863    } else {
     864        strcpy(additional_parameters, "-o ro");
     865    }
     866    if (find_home_of_exe("setfattr")) {
     867        strcat(additional_parameters, ",user_xattr");
     868    }
     869    if (find_home_of_exe("setfacl")) {
     870        strcat(additional_parameters, ",acl");
     871    }
     872
     873    if (!strcmp(mountpoint, "swap")) {
     874        sprintf(command, "swapon %s", device);
     875    } else {
     876        if (!strcmp(mountpoint, "/")) {
     877            strcpy(mountdir, MNT_RESTORING);
     878        } else {
     879            sprintf(mountdir, "%s%s", MNT_RESTORING, mountpoint);
     880        }
     881        sprintf(command, "mkdir -p %s", mountdir);
     882        run_program_and_log_output(command, FALSE);
     883        sprintf(command, "mount -t %s %s %s %s 2>> %s", format, device,
     884                additional_parameters, mountdir, MONDO_LOGFILE);
     885        log_msg(2, "command='%s'", command);
     886    }
     887    res = run_program_and_log_output(command, TRUE);
     888    if (res && (strstr(command, "xattr") || strstr(command, "acl"))) {
     889        log_msg(1, "Re-trying without the fancy extra parameters");
     890        sprintf(command, "mount -t %s %s %s 2>> %s", format, device,
     891                mountdir, MONDO_LOGFILE);
     892        res = run_program_and_log_output(command, TRUE);
     893    }
     894    if (res) {
     895        log_msg(1, "Unable to mount device %s (type %s) at %s", device,
     896                format, mountdir);
     897        log_msg(1, "command was '%s'", command);
     898        if (!strcmp(mountpoint, "swap")) {
     899            log_to_screen(tmp);
     900        } else {
     901            log_msg(2, "Retrying w/o the '-t' switch");
     902            sprintf(command, "mount %s %s 2>> %s", device, mountdir,
     903                    MONDO_LOGFILE);
     904            log_msg(2, "2nd command = '%s'", command);
     905            res = run_program_and_log_output(command, TRUE);
     906            if (res == 0) {
     907                log_msg(1,
     908                        "That's OK. I called mount w/o a filesystem type and it worked fine in the end.");
     909            } else {
     910                log_to_screen(tmp);
     911            }
     912        }
     913    }
     914    if (res && !strcmp(mountpoint, "swap")) {
     915        log_msg(2, "That's ok. It's just a swap partition.");
     916        log_msg(2, "Non-fatal error. Returning 0.");
     917        res = 0;
     918    }
     919
     920    mr_free(tmp);
     921    mr_free(command);
     922    mr_free(mountdir);
     923    mr_free(mountpoint);
     924    mr_free(additional_parameters);
     925
     926    return (res);
     927}
     928
     929/**************************************************************************
     930 *END_MOUNT_DEVICE                                                        *
     931 **************************************************************************/
     932
     933
     934
     935/**
     936>>>>>>> .fusion-droit.r1080
    757937 * Fix some miscellaneous things in the filesystem so the system will come
    758938 * up correctly on the first boot.
     
    9201100    read_cfg_var(cfg_file, "acl", value);
    9211101    if (strstr(value, "TRUE")) {
    922         asprintf(&g_getfacl,"setfacl");
     1102        mr_asprintf(&g_getfacl,"setfacl");
    9231103        log_msg(1, "We will restore ACLs");
    9241104        if (! find_home_of_exe("setfacl")) {
     
    9281108    read_cfg_var(cfg_file, "xattr", value);
    9291109    if (strstr(value, "TRUE")) {
    930         asprintf(&g_getfattr,"setfattr");
     1110        mr_asprintf(&g_getfattr,"setfattr");
    9311111        log_msg(1, "We will restore XATTRs");
    9321112        if (! find_home_of_exe("setfattr")) {
     
    11291309    }
    11301310    g_backup_media_type = bkpinfo->backup_media_type;
     1311<<<<<<< .courant
    11311312    bkpinfo->backup_media_string = bkptype_to_string(bkpinfo->backup_media_type);
    11321313    g_backup_media_string = bkpinfo->backup_media_string;
     1314=======
     1315    mr_free(value);
     1316    mr_free(tmp);
     1317    mr_free(command);
     1318    mr_free(iso_mnt);
     1319    mr_free(iso_path);
     1320    mr_free(old_isodir);
     1321>>>>>>> .fusion-droit.r1080
    11331322    return (0);
    11341323}
     
    13201509                                      TRUE);
    13211510    }
     1511<<<<<<< .courant
     1512=======
     1513
     1514    mr_free(command);
     1515    mr_free(tmp);
     1516>>>>>>> .fusion-droit.r1080
    13221517    return (filelist);
    13231518}
     
    13441539    mr_asprintf(&command, "cp -f %s/%s %s/%s.pristine", path_root, filename,path_root, filename);
    13451540    res = run_program_and_log_output(command, 5);
    1346     mr_free(command);
     1541<<<<<<< .courant
     1542    mr_free(command);
     1543=======
     1544    mr_free(tmp);
     1545    mr_free(command);
     1546>>>>>>> .fusion-droit.r1080
    13471547    return (res);
    13481548}
     
    14271627        log_to_screen(_("Your boot loader ran OK"));
    14281628    }
     1629<<<<<<< .courant
     1630=======
     1631    mr_free(device);
     1632    mr_free(tmp);
     1633    mr_free(name);
     1634>>>>>>> .fusion-droit.r1080
    14291635    return (retval);
    14301636}
     
    15791785        mvaddstr_and_log_it(g_currentY++, 74, _("Done."));
    15801786    }
     1787<<<<<<< .courant
     1788=======
     1789    mr_free(rootdev);
     1790    mr_free(rootdrive);
     1791    mr_free(conffile);
     1792    mr_free(command);
     1793    mr_free(boot_device);
     1794    mr_free(tmp);
     1795    mr_free(editor);
     1796
     1797>>>>>>> .fusion-droit.r1080
    15811798    return (res);
    15821799}
     
    16491866        res = TRUE;
    16501867    }
     1868<<<<<<< .courant
     1869=======
     1870    mr_free(command);
     1871    mr_free(tmp);
     1872    mr_free(editor);
     1873>>>>>>> .fusion-droit.r1080
    16511874    return (res);
    16521875}
     
    17621985                                   " lilo -M /dev/sda", 3);
    17631986    }
     1987<<<<<<< .courant
     1988=======
     1989    mr_free(command);
     1990    mr_free(tmp);
     1991    mr_free(editor);
     1992>>>>>>> .fusion-droit.r1080
    17641993    return (res);
    17651994}
     
    18422071        mvaddstr_and_log_it(g_currentY++, 74, _("Done."));
    18432072    }
     2073<<<<<<< .courant
     2074=======
     2075    mr_free(command);
     2076    mr_free(boot_device);
     2077    mr_free(tmp);
     2078    mr_free(editor);
     2079>>>>>>> .fusion-droit.r1080
    18442080    return (res);
    18452081}
     
    19422178    paranoid_fclose(fout);
    19432179    paranoid_fclose(fin);
     2180<<<<<<< .courant
     2181=======
     2182    mr_free(incoming);
     2183>>>>>>> .fusion-droit.r1080
    19442184}
    19452185/**************************************************************************
     
    19882228    }
    19892229    close_progress_form();
     2230<<<<<<< .courant
     2231=======
     2232    mr_free(tmp);
     2233>>>>>>> .fusion-droit.r1080
    19902234}
    19912235/**************************************************************************
     
    20282272    assert(p_external_copy_of_mountlist != NULL);
    20292273
    2030     mountlist = malloc(sizeof(struct mountlist_itself));
     2274    mountlist = mr_malloc(sizeof(struct mountlist_itself));
    20312275    memcpy((void *) mountlist, (void *) p_external_copy_of_mountlist,
    20322276           sizeof(struct mountlist_itself));
     
    21212365        log_to_screen(_("All partitions were unmounted OK."));
    21222366    }
     2367<<<<<<< .courant
    21232368    free(mountlist);
     2369=======
     2370    mr_free(mountlist);
     2371    mr_free(command);
     2372    mr_free(tmp);
     2373>>>>>>> .fusion-droit.r1080
    21242374    return (retval);
    21252375}
     
    21572407        res = 0;
    21582408    }
     2409<<<<<<< .courant
     2410=======
     2411    mr_free(command);
     2412>>>>>>> .fusion-droit.r1080
    21592413    return (res);
    21602414}
     
    24252679
    24262680    g_backup_media_type = bkpinfo->backup_media_type;
     2681<<<<<<< .courant
    24272682    bkpinfo->backup_media_string = bkptype_to_string(bkpinfo->backup_media_type);
    24282683    g_backup_media_string = bkpinfo->backup_media_string;
     2684=======
     2685    mr_free(device);
     2686    mr_free(command);
     2687    mr_free(tmp);
     2688    mr_free(cfg_file);
     2689    mr_free(mounted_cfgf_path);
     2690    mr_free(mountpt);
     2691    mr_free(ramdisk_fname);
     2692    mr_free(mountlist_file);
     2693>>>>>>> .fusion-droit.r1080
    24292694    return (retval);
    24302695}
     
    24422707    char *screen_message = NULL;
    24432708
    2444     raidlist = malloc(sizeof(struct raidlist_itself));
     2709    raidlist = mr_malloc(sizeof(struct raidlist_itself));
    24452710
    24462711    assert(wait_for_percentage <= 100);
     
    24802745        }
    24812746    }
     2747<<<<<<< .courant
    24822748    mr_free(raidlist);
    2483 }
     2749=======
     2750    mr_free(screen_message);
     2751    mr_free(raidlist);
     2752>>>>>>> .fusion-droit.r1080
     2753}
Note: See TracChangeset for help on using the changeset viewer.