--- loader2/Makefile | 2 +- loader2/cdinstall.c | 4 +- loader2/driverdisk.c | 81 ++++++++++------------------------------------- loader2/driverselect.c | 15 ++------- loader2/hardware.c | 1 - loader2/hdinstall.c | 4 +- loader2/kickstart.c | 21 ++++++------ loader2/loader.c | 26 ++++++++-------- loader2/loader.h | 1 + loader2/method.h | 4 +-- loader2/net.c | 17 +++------- loader2/urlinstall.c | 2 +- 12 files changed, 57 insertions(+), 121 deletions(-) diff --git a/loader2/Makefile b/loader2/Makefile index 3258543..7d5b9ad 100644 --- a/loader2/Makefile +++ b/loader2/Makefile @@ -60,7 +60,7 @@ LOADEROBJS = loader.o loader-pcmcia.o NETOBJS = net.o urls.o ftp.o telnet.o telnetd.o SOURCES = $(subst .o,.c,$(OBJS)) loader.c -LIBS += -lkudzu_loader -lpci +LIBS += CFLAGS += -DUSE_LOGDEV -DVERSION='"$(VERSION)"' STATIC = diff --git a/loader2/cdinstall.c b/loader2/cdinstall.c index 54598b0..2ea64f9 100644 --- a/loader2/cdinstall.c +++ b/loader2/cdinstall.c @@ -239,7 +239,7 @@ char * setupCdrom(char * location, struct loaderData_s * loaderData, r = asprintf(&stage2loc, "%s/images/stage2.img", location); r = asprintf(&discinfoloc, "%s/.discinfo", location); - devices = probeDevices(CLASS_CDROM, BUS_UNSPEC, 0); + devices = getDevices(DEVICE_CDROM); if (!devices) { logMessage(ERROR, "got to setupCdrom without a CD device"); return NULL; @@ -375,7 +375,7 @@ int kickstartFromCD(char *kssrc) { logMessage(INFO, "getting kickstart file from first CDROM"); - devices = probeDevices(CLASS_CDROM, BUS_UNSPEC, 0); + devices = getDevices(DEVICE_CDROM); if (!devices) { logMessage(ERROR, "No CDROM devices found!"); return 1; diff --git a/loader2/driverdisk.c b/loader2/driverdisk.c index f19efcf..1ef83e3 100644 --- a/loader2/driverdisk.c +++ b/loader2/driverdisk.c @@ -22,7 +22,6 @@ #include <errno.h> #include <fcntl.h> -#include <kudzu/kudzu.h> #include <newt.h> #include <popt.h> #include <stdlib.h> @@ -159,9 +158,6 @@ static int loadDriverDisk(struct loaderData_s *loaderData, char *mntpt) { sprintf(file, "%s/modinfo", mntpt); readModuleInfo(file, modInfo, location, 1); - sprintf(file, "%s/modules.alias", mntpt); - pciReadDrivers(file); - if (!FL_CMDLINE(flags)) newtPopWindow(); @@ -175,64 +171,23 @@ static int loadDriverDisk(struct loaderData_s *loaderData, char *mntpt) { * of device names */ int getRemovableDevices(char *** devNames) { - struct device **devices, **floppies, **cdroms, **disks; + struct device **devs; int numDevices = 0; - int i = 0, j = 0; - - floppies = probeDevices(CLASS_FLOPPY, - BUS_IDE | BUS_SCSI | BUS_MISC, PROBE_LOADED); - cdroms = probeDevices(CLASS_CDROM, - BUS_IDE | BUS_SCSI | BUS_MISC, PROBE_LOADED); - disks = probeDevices(CLASS_HD, - BUS_IDE | BUS_SCSI | BUS_MISC, PROBE_LOADED); - - /* we should probably take detached into account here, but it just - * means we use a little bit more memory than we really need to */ - if (floppies) - for (i = 0; floppies[i]; i++) numDevices++; - if (cdroms) - for (i = 0; cdroms[i]; i++) numDevices++; - if (disks) - for (i = 0; disks[i]; i++) numDevices++; - - /* JKFIXME: better error handling */ + int i = 0; + + devs = getDevices(DEVICE_DISK | DEVICE_CDROM); + + for (i = 0; devs[i] ; i++) { + if (devs[i]->priv.removable) { + *devNames = realloc(*devNames, (numDevices + 2) * sizeof(char *)); + (*devNames)[numDevices] = strdup(devs[i]->device); + (*devNames)[numDevices+1] = NULL; + numDevices ++; + } + } if (!numDevices) { logMessage(ERROR, "no devices found to load drivers from"); - return numDevices; } - - devices = malloc((numDevices + 1) * sizeof(**devices)); - - i = 0; - if (floppies) - for (j = 0; floppies[j]; j++) - if ((floppies[j]->detached == 0) && (floppies[j]->device != NULL)) - devices[i++] = floppies[j]; - if (cdroms) - for (j = 0; cdroms[j]; j++) - if ((cdroms[j]->detached == 0) && (cdroms[j]->device != NULL)) - devices[i++] = cdroms[j]; - if (disks) - for (j = 0; disks[j]; j++) - if ((disks[j]->detached == 0) && (disks[j]->device != NULL)) - devices[i++] = disks[j]; - - devices[i] = NULL; - numDevices = i; - - for (i = 0; devices[i]; i++) { - logMessage(DEBUGLVL, "devices[%d] is %s", i, devices[i]->device); - } - - *devNames = malloc((numDevices + 1) * sizeof(*devNames)); - for (i = 0; devices[i] && (i < numDevices); i++) - (*devNames)[i] = strdup(devices[i]->device); - free(devices); - (*devNames)[i] = NULL; - - if (i != numDevices) - logMessage(WARNING, "somehow numDevices != len(devices)"); - return numDevices; } @@ -434,7 +389,7 @@ int loadDriverFromMedia(int class, struct loaderData_s *loaderData, before = 0; found = 0; - devices = probeDevices(class, BUS_UNSPEC, PROBE_LOADED); + devices = getDevices(class); if (devices) for(; devices[before]; before++); @@ -470,7 +425,7 @@ int loadDriverFromMedia(int class, struct loaderData_s *loaderData, busProbe(0); - devices = probeDevices(class, BUS_UNSPEC, PROBE_LOADED); + devices = getDevices(class); if (devices) for(; devices[found]; found++); @@ -526,7 +481,7 @@ int loadDriverDisks(int class, struct loaderData_s *loaderData) { if (rc != 1) return LOADER_OK; - rc = loadDriverFromMedia(CLASS_UNSPEC, loaderData, 1, 0); + rc = loadDriverFromMedia(DEVICE_ANY, loaderData, 1, 0); if (rc == LOADER_BACK) return LOADER_OK; @@ -535,7 +490,7 @@ int loadDriverDisks(int class, struct loaderData_s *loaderData) { _("Do you wish to load any more driver disks?")); if (rc != 1) break; - loadDriverFromMedia(CLASS_UNSPEC, loaderData, 0, 0); + loadDriverFromMedia(DEVICE_ANY, loaderData, 0, 0); } while (1); return LOADER_OK; @@ -571,7 +526,7 @@ void getDDFromSource(struct loaderData_s * loaderData, char * src) { * scsi cdrom drives */ #if !defined(__s390__) && !defined(__s390x__) } else if (!strncmp(src, "cdrom", 5)) { - loadDriverDisks(CLASS_UNSPEC, loaderData); + loadDriverDisks(DEVICE_ANY, loaderData); return; #endif } else if (!strncmp(src, "path:", 5)) { diff --git a/loader2/driverselect.c b/loader2/driverselect.c index 0c87481..8105c35 100644 --- a/loader2/driverselect.c +++ b/loader2/driverselect.c @@ -26,7 +26,6 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> -#include <kudzu/kudzu.h> #include "modules.h" #include "moduleinfo.h" @@ -34,7 +33,6 @@ #include "loadermisc.h" #include "log.h" #include "lang.h" -#include "hardware.h" #include "driverdisk.h" struct sortModuleList { @@ -154,19 +152,12 @@ int chooseManualDriver(int class, struct loaderData_s *loaderData) { newtGrid grid, buttons; struct newtExitStruct es; - if (class == CLASS_NETWORK) + if (class == DEVICE_NETWORK) type = DRIVER_NET; - else if ((class == CLASS_SCSI) || (class == CLASS_HD) || - (class == CLASS_CDROM) || (class == CLASS_IDE) || - (class == CLASS_ATA) || (class == CLASS_SATA)) + else if (class == DEVICE_DISK || class == DEVICE_CDROM) type = DRIVER_SCSI; - else if (class == CLASS_UNSPEC) + else type = DRIVER_ANY; - else { - logMessage(ERROR, "unknown device class %d specified; aborting manual " - "selection", class); - return LOADER_ERROR; - } do { sortedOrder = malloc(sizeof(*sortedOrder) * modInfo->numModules); diff --git a/loader2/hardware.c b/loader2/hardware.c index b1d7751..cecdf13 100644 --- a/loader2/hardware.c +++ b/loader2/hardware.c @@ -25,7 +25,6 @@ #include <errno.h> #include <fcntl.h> -#include <kudzu/kudzu.h> #include <popt.h> #include <string.h> #include <strings.h> diff --git a/loader2/hdinstall.c b/loader2/hdinstall.c index d98a350..1c7fe7f 100644 --- a/loader2/hdinstall.c +++ b/loader2/hdinstall.c @@ -290,7 +290,7 @@ char * mountHardDrive(struct installMethod * method, if (rc == 2) return NULL; - rc = loadDriverFromMedia(CLASS_HD, loaderData, 0, 0); + rc = loadDriverFromMedia(DEVICE_DISK, loaderData, 0, 0); if (rc == LOADER_BACK) return NULL; @@ -376,7 +376,7 @@ char * mountHardDrive(struct installMethod * method, 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, loaderData, 0, 0); + rc = loadDriverFromMedia(DEVICE_DISK, loaderData, 0, 0); if (rc == LOADER_BACK) return NULL; diff --git a/loader2/kickstart.c b/loader2/kickstart.c index e626c57..96c2f5e 100644 --- a/loader2/kickstart.c +++ b/loader2/kickstart.c @@ -27,7 +27,6 @@ #include <ctype.h> #include <errno.h> #include <fcntl.h> -#include <kudzu/kudzu.h> #include <newt.h> #include <popt.h> #include <stdlib.h> @@ -246,27 +245,27 @@ int ksGetCommand(int cmd, char ** last, int * argc, char *** argv) { return 1; } -int kickstartFromFloppy(char *kssrc) { +int kickstartFromRemovable(char *kssrc) { struct device ** devices; char *p, *kspath; int i, rc; - logMessage(INFO, "doing kickstart from floppy"); - devices = probeDevices(CLASS_FLOPPY, BUS_MISC | BUS_IDE | BUS_SCSI, PROBE_LOADED); + logMessage(INFO, "doing kickstart from removable media"); + devices = getDevices(DEVICE_DISK); if (!devices) { - logMessage(ERROR, "no floppy devices"); + logMessage(ERROR, "no disks"); return 1; } for (i = 0; devices[i]; i++) { - if (devices[i]->detached == 0) { - logMessage(INFO, "first non-detached floppy is %s", devices[i]->device); + if (devices[i]->priv.removable == 1) { + logMessage(INFO, "first removable media is %s", devices[i]->device); break; } } - if (!devices[i] || (devices[i]->detached != 0)) { - logMessage(ERROR, "no floppy devices"); + if (!devices[i] || (devices[i]->priv.removable == 0)) { + logMessage(ERROR, "no removable devices"); return 1; } @@ -283,7 +282,7 @@ int kickstartFromFloppy(char *kssrc) { if (rc == 3) { startNewt(); newtWinMessage(_("Error"), _("OK"), - _("Cannot find ks.cfg on boot floppy.")); + _("Cannot find ks.cfg on removable media.")); } return 1; } @@ -420,7 +419,7 @@ void getKickstartFile(struct loaderData_s *loaderData) { rc = kickstartFromNfs(c+4, loaderData); loaderData->ksFile = strdup("/tmp/ks.cfg"); } else if (!strncmp(c, "floppy", 6)) { - rc = kickstartFromFloppy(c); + rc = kickstartFromRemovable(c); loaderData->ksFile = strdup("/tmp/ks.cfg"); } else if (!strncmp(c, "hd:", 3)) { rc = kickstartFromHD(c); diff --git a/loader2/loader.c b/loader2/loader.c index f64843c..6c4be47 100644 --- a/loader2/loader.c +++ b/loader2/loader.c @@ -120,11 +120,11 @@ int post_link_sleep = 0; static struct installMethod installMethods[] = { #if !defined(__s390__) && !defined(__s390x__) - { N_("Local CD/DVD"), 0, CLASS_CDROM, mountCdromImage }, + { N_("Local CD/DVD"), 0, DEVICE_CDROM, mountCdromImage }, #endif - { N_("Hard drive"), 0, CLASS_HD, mountHardDrive }, - { N_("NFS directory"), 1, CLASS_NETWORK, mountNfsImage }, - { "URL", 1, CLASS_NETWORK, mountUrlImage }, + { N_("Hard drive"), 0, DEVICE_DISK, mountHardDrive }, + { N_("NFS directory"), 1, DEVICE_NETWORK, mountNfsImage }, + { "URL", 1, DEVICE_NETWORK, mountUrlImage }, }; static int numMethods = sizeof(installMethods) / sizeof(struct installMethod); @@ -932,7 +932,7 @@ static void checkForRam(void) { static int haveDeviceOfType(int type) { struct device ** devices; - devices = probeDevices(type, BUS_UNSPEC, PROBE_LOADED); + devices = getDevices(type); if (devices) { return 1; } @@ -1091,7 +1091,7 @@ static char *doLoaderMain(char * location, step = STEP_KBD; dir = -1; } else { - needed = installMethods[validMethods[methodNum]].deviceType; + needed = installMethods[validMethods[methodNum]].type; step = STEP_DRIVER; dir = 1; } @@ -1121,7 +1121,7 @@ static char *doLoaderMain(char * location, break; } - chooseManualDriver(installMethods[validMethods[methodNum]].deviceType, + chooseManualDriver(installMethods[validMethods[methodNum]].type, loaderData); /* it doesn't really matter what we return here; we just want * to reprobe and make sure we have the driver */ @@ -1144,8 +1144,8 @@ static char *doLoaderMain(char * location, break; case STEP_NETWORK: - if ( (installMethods[validMethods[methodNum]].deviceType != - CLASS_NETWORK) && (!hasGraphicalOverride()) && + if ( (installMethods[validMethods[methodNum]].type != + DEVICE_NETWORK) && (!hasGraphicalOverride()) && !FL_ASKNETWORK(flags)) { needsNetwork = 0; if (dir == 1) @@ -1156,8 +1156,8 @@ static char *doLoaderMain(char * location, } needsNetwork = 1; - if (!haveDeviceOfType(CLASS_NETWORK)) { - needed = CLASS_NETWORK; + if (!haveDeviceOfType(DEVICE_NETWORK)) { + needed = DEVICE_NETWORK; step = STEP_DRIVER; break; } @@ -1346,7 +1346,7 @@ static int manualDeviceCheck(struct loaderData_s *loaderData) { if (rc != 2) break; - chooseManualDriver(CLASS_UNSPEC, loaderData); + chooseManualDriver(DEVICE_ANY, loaderData); } while (1); return 0; } @@ -1586,7 +1586,7 @@ int main(int argc, char ** argv) { if (FL_MODDISK(flags)) { startNewt(); - loadDriverDisks(CLASS_UNSPEC, &loaderData); + loadDriverDisks(DEVICE_ANY, &loaderData); } if (!access("/dd.img", R_OK)) { diff --git a/loader2/loader.h b/loader2/loader.h index 6e14c69..b5c1a79 100644 --- a/loader2/loader.h +++ b/loader2/loader.h @@ -115,6 +115,7 @@ char * getProductPath(void); char * getProductArch(void); #include "modules.h" +#include "../isys/devices.h" /* JKFIXME: I don't like all of the _set attribs, but without them, * we can't tell if it was explicitly set by kickstart/cmdline or * if we just got it going through the install. */ diff --git a/loader2/method.h b/loader2/method.h index 4f1f295..ec34781 100644 --- a/loader2/method.h +++ b/loader2/method.h @@ -20,9 +20,7 @@ #ifndef H_METHOD #define H_METHOD -#include "modules.h" #include "loader.h" -#include <kudzu/kudzu.h> /* method identifiers, needs to match struct installMethod order in loader.c */ enum { @@ -37,7 +35,7 @@ enum { struct installMethod { char * name; int network; - enum deviceClass deviceType; /* for pcmcia */ + enum deviceType type; char * (*mountImage)(struct installMethod * method, char * location, struct loaderData_s * loaderData); }; diff --git a/loader2/net.c b/loader2/net.c index 652aab0..edc16fb 100644 --- a/loader2/net.c +++ b/loader2/net.c @@ -34,7 +34,6 @@ #include <string.h> #include <strings.h> #include <unistd.h> -#include <kudzu/kudzu.h> #include "../isys/dns.h" #include "../isys/isys.h" @@ -1409,7 +1408,7 @@ int writeNetInfo(const char * fn, struct networkDeviceConfig * dev) { char ret[48]; ip_addr_t *tip; - devices = probeDevices(CLASS_NETWORK, BUS_UNSPEC, PROBE_LOADED); + devices = getDevices(DEVICE_NETWORK); if (!devices) return 0; @@ -1729,7 +1728,7 @@ int chooseNetworkInterface(struct loaderData_s * loaderData) { struct device ** devs; char * ksMacAddr = NULL; - devs = probeDevices(CLASS_NETWORK, BUS_UNSPEC, PROBE_LOADED); + devs = getDevices(DEVICE_NETWORK); if (!devs) { logMessage(ERROR, "no network devices in choose network device!"); return LOADER_ERROR; @@ -1753,22 +1752,16 @@ int chooseNetworkInterface(struct loaderData_s * loaderData) { if (!devs[i]->device) continue; - /* if kudzu hands us a device name of 'eth', we lack firmware */ - /* skip the device as an option for installation (#251941) */ - if ((strlen(devs[i]->device) == 3) && - (!strncmp(devs[i]->device, "eth", 3))) - continue; - /* require passing a flag for wireless while our wireless support * sucks */ if (is_wireless_interface(devs[i]->device) && !FL_ALLOW_WIRELESS(flags)) continue; - if (devs[i]->desc) { + if (devs[i]->description) { deviceNames[deviceNums] = alloca(strlen(devs[i]->device) + - strlen(devs[i]->desc) + 4); + strlen(devs[i]->description) + 4); sprintf(deviceNames[deviceNums],"%s - %s", - devs[i]->device, devs[i]->desc); + devs[i]->device, devs[i]->description); if (strlen(deviceNames[deviceNums]) > max) max = strlen(deviceNames[deviceNums]); devices[deviceNums] = devs[i]->device; diff --git a/loader2/urlinstall.c b/loader2/urlinstall.c index 54a1b26..58cdc63 100644 --- a/loader2/urlinstall.c +++ b/loader2/urlinstall.c @@ -356,7 +356,7 @@ int getFileFromUrl(char * url, char * dest, char *dev, *mac, *tmpstr; struct device **devices; - devices = probeDevices(CLASS_NETWORK, BUS_UNSPEC, PROBE_LOADED); + devices = getDevices(DEVICE_NETWORK); for (i = 0; devices && devices[i]; i++) { dev = devices[i]->device; mac = netlink_interfaces_mac2str(dev); -- 1.5.3.7 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list