⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hdinstall.c

📁 linux 安装程序
💻 C
📖 第 1 页 / 共 2 页
字号:
            rc = loadDriverFromMedia(CLASS_HD, modLoaded, modDepsPtr,                                      modInfo, 0, 0);            if (rc == LOADER_BACK)                return NULL;            continue;        }        /* now find out which partition has the hard drive install images */        buf = sdupprintf(_("What partition and directory on that "                           "partition hold the CD (iso9660) images "                           "for %s? If you don't see the disk drive "                           "you're using listed here, press F2 "                           "to configure additional devices."),                         getProductName());        text = newtTextboxReflowed(-1, -1, buf, 62, 5, 5, 0);        free(buf);	        listbox = newtListbox(-1, -1, numPartitions > 5 ? 5 : numPartitions,                              NEWT_FLAG_RETURNEXIT |                               (numPartitions > 5 ? NEWT_FLAG_SCROLL : 0));	        for (i = 0; i < numPartitions; i++)            newtListboxAppendEntry(listbox,partition_list[i],partition_list[i]);        /* if we had ks data around use it to prime entry, then get rid of it*/        if (kspartition) {            newtListboxSetCurrentByKey(listbox, kspartition);            free(kspartition);            kspartition = NULL;        }        label = newtLabel(-1, -1, _("Directory holding images:"));        dirEntry = newtEntry(28, 11, dir, 28, (const char **) &tmpDir,                             NEWT_ENTRY_SCROLL);        /* if we had ks data around use it to prime entry, then get rid of it*/        if (ksdirectory) {            newtEntrySet(dirEntry, ksdirectory, 1);            free(ksdirectory);            ksdirectory = NULL;        }        entryGrid = newtGridHStacked(NEWT_GRID_COMPONENT, label,                                     NEWT_GRID_COMPONENT, dirEntry,                                     NEWT_GRID_EMPTY);        buttons = newtButtonBar(_("OK"), &okay, _("Back"), &back, NULL);	        grid = newtCreateGrid(1, 4);        newtGridSetField(grid, 0, 0, NEWT_GRID_COMPONENT, text,                         0, 0, 0, 1, 0, 0);        newtGridSetField(grid, 0, 1, NEWT_GRID_COMPONENT, listbox,                         0, 0, 0, 1, 0, 0);        newtGridSetField(grid, 0, 2, NEWT_GRID_SUBGRID, entryGrid,                         0, 0, 0, 1, 0, 0);        newtGridSetField(grid, 0, 3, NEWT_GRID_SUBGRID, buttons,                         0, 0, 0, 0, 0, NEWT_GRID_FLAG_GROWX);	        newtGridWrappedWindow(grid, _("Select Partition"));	        form = newtForm(NULL, NULL, 0);        newtFormAddHotKey(form, NEWT_KEY_F2);        newtFormAddHotKey(form, NEWT_KEY_F12);        newtGridAddComponentsToForm(grid, form, 1);        newtGridFree(grid, 1);        newtFormRun(form, &es);        selpart = newtListboxGetCurrent(listbox);	        free(dir);        if (tmpDir && *tmpDir) {            /* Protect from form free. */            dir = strdup(tmpDir);        } else  {            dir = strdup("");        }	        newtFormDestroy(form);        newtPopWindow();        if (es.reason == NEWT_EXIT_COMPONENT && es.u.co == back) {            return NULL;        } else if (es.reason == NEWT_EXIT_HOTKEY && es.u.key == NEWT_KEY_F2) {            rc = loadDriverFromMedia(CLASS_HD, modLoaded, modDepsPtr,                                      modInfo, 0, 0);            if (rc == LOADER_BACK)                return NULL;            continue;        }        logMessage(INFO, "partition %s selected", selpart);	        url = setupIsoImages(selpart + 5, dir);        if (!url) {            newtWinMessage(_("Error"), _("OK"),                            _("Device %s does not appear to contain "                             "%s CDROM images."), selpart, getProductName());            continue;        }        done = 1;         umount("/tmp/hdimage");        rmdir("/tmp/hdimage");    }    free(dir);    return url;}void setKickstartHD(struct loaderData_s * loaderData, int argc,                     char ** argv) {    char *biospart = NULL, *partition = NULL, *dir = NULL, *p;    poptContext optCon;    int rc;    struct poptOption ksHDOptions[] = {        { "biospart", '\0', POPT_ARG_STRING, &biospart, 0, NULL, NULL },        { "partition", '\0', POPT_ARG_STRING, &partition, 0, NULL, NULL },        { "dir", '\0', POPT_ARG_STRING, &dir, 0, NULL, NULL },        { 0, 0, 0, 0, 0, 0, 0 }    };      logMessage(INFO, "kickstartFromHD");    optCon = poptGetContext(NULL, argc, (const char **) argv, ksHDOptions, 0);    if ((rc = poptGetNextOpt(optCon)) < -1) {        startNewt();        newtWinMessage(_("Kickstart Error"), _("OK"),                       _("Bad argument to HD kickstart method "                         "command %s: %s"),                       poptBadOption(optCon, POPT_BADOPTION_NOALIAS),                        poptStrerror(rc));        return;    }    if (biospart) {        char * dev;        p = strchr(biospart,'p');        if(!p){            logMessage(ERROR, "Bad argument for --biospart");            return;        }        *p = '\0';        dev = getBiosDisk(biospart);        if (dev == NULL) {            logMessage(ERROR, "Unable to location BIOS partition %s", biospart);            return;        }        partition = malloc(strlen(dev) + strlen(p + 1) + 2);        sprintf(partition, "%s%s", dev, p + 1);    }    loaderData->method = METHOD_HD;    loaderData->methodData = calloc(sizeof(struct hdInstallData *), 1);    if (partition)        ((struct hdInstallData *)loaderData->methodData)->partition = partition;    if (dir)        ((struct hdInstallData *)loaderData->methodData)->directory = dir;    logMessage(INFO, "results of hd ks, partition is %s, dir is %s", partition,               dir);}int kickstartFromHD(char *kssrc) {    int rc;    char *p, *np = NULL, *tmpstr, *ksdev, *kspath;    logMessage(INFO, "getting kickstart file from harddrive");    /* format is hd:[device]:/path/to/ks.cfg */    /* split up pieces */    tmpstr = strdup(kssrc);    p = strchr(tmpstr, ':');    if (p)        np = strchr(p+1, ':');        /* no second colon, assume its the old format of                     */    /*        hd:[device]/path/to/ks.cfg                                 */    /* this format is bad however because some devices have '/' in them! */    if (!np)        np = strchr(p+1, '/');    if (!p || !np) {        logMessage(WARNING, "Format of command line is ks=hd:[device]:/path/to/ks.cfg");        free(tmpstr);        return 1;    }    *np = '\0';    ksdev = p+1;    kspath = np+1;    logMessage(INFO, "Loading ks from device %s on path %s", ksdev, kspath);    if ((rc=getKickstartFromBlockDevice(ksdev, kspath))) {        if (rc == 3) {            startNewt();            newtWinMessage(_("Error"), _("OK"),                           _("Cannot find kickstart file on hard drive."));        }        return 1;    }    return 0;}int kickstartFromBD(char *kssrc) {    int rc;    char *p, *np = NULL, *r = NULL, *tmpstr, *ksdev, *kspath, *biosksdev;    logMessage(INFO, "getting kickstart file from biosdrive");    /* format is bd:[device]:/path/to/ks.cfg */    /* split of pieces */    tmpstr = strdup(kssrc);    p = strchr(tmpstr, ':');    if (p)        np = strchr(p+1, ':');        if (!p || !np) {        logMessage(WARNING, "Format of command line is ks=bd:device:/path/to/ks.cfg");        free(tmpstr);        return 1;    }    *np = '\0';    kspath = np+1;    r = strchr(p+1,'p');    if(!r){        logMessage(INFO, "Format of biosdisk is 80p1");        free(tmpstr);        return 1;    }                                                              *r = '\0';    biosksdev = getBiosDisk((p + 1));    if(!biosksdev){        startNewt();        newtWinMessage(_("Error"), _("OK"),                       _("Cannot find hard drive for BIOS disk %s"),                       p + 1);        return 1;    }    ksdev = malloc(strlen(biosksdev) + 3);    sprintf(ksdev, "%s%s", biosksdev, r + 1);    logMessage(INFO, "Loading ks from device %s on path %s", ksdev, kspath);    if ((rc=getKickstartFromBlockDevice(ksdev, kspath))) {        if (rc == 3) {            startNewt();            newtWinMessage(_("Error"), _("OK"),                           _("Cannot find kickstart file on hard drive."));        }        return 1;    }    return 0;}/* vim:set shiftwidth=4 softtabstop=4: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -