summaryrefslogtreecommitdiffstats
path: root/loader
diff options
context:
space:
mode:
authorBill Nottingham <notting@redhat.com>2000-01-05 04:03:21 +0000
committerBill Nottingham <notting@redhat.com>2000-01-05 04:03:21 +0000
commit52735284b6d3581556d16879dfb3e851faf0fa6e (patch)
tree74ad8082de09ac665e21783ffbb25c6fcb7a3ec5 /loader
parented570da49ebfa8f1c948b4b11855c01c2de4a47f (diff)
downloadanaconda-52735284b6d3581556d16879dfb3e851faf0fa6e.tar.gz
anaconda-52735284b6d3581556d16879dfb3e851faf0fa6e.tar.xz
anaconda-52735284b6d3581556d16879dfb3e851faf0fa6e.zip
fixes for driver disks with dependencies:
- load dependent modules first from driver disk path, then default path - fix loading of modules.dep from driver disk
Diffstat (limited to 'loader')
-rw-r--r--loader/devices.c12
-rw-r--r--loader/devices.h4
-rw-r--r--loader/loader.c4
-rw-r--r--loader/modules.c4
4 files changed, 12 insertions, 12 deletions
diff --git a/loader/devices.c b/loader/devices.c
index d7f155e5f..59075eeee 100644
--- a/loader/devices.c
+++ b/loader/devices.c
@@ -119,7 +119,7 @@ static int getModuleArgs(struct moduleInfo * mod, char *** argPtr) {
}
int devCopyDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
- moduleDeps modDeps, int flags, char * mntPoint) {
+ moduleDeps *modDepsPtr, int flags, char * mntPoint) {
char * files[] = { "modules.cgz", "modinfo", "modules.dep", NULL };
char * dirName;
char ** file;
@@ -151,7 +151,7 @@ int devCopyDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
sprintf(from, "%s/modinfo", dirName);
isysReadModuleInfo(from, modInfo, dirName);
sprintf(from, "%s/modules.dep", dirName);
- mlLoadDeps(&modDeps, from);
+ mlLoadDeps(modDepsPtr, from);
diskNum++;
@@ -159,7 +159,7 @@ int devCopyDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
}
int devLoadDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
- moduleDeps modDeps, int flags, int cancelNotBack) {
+ moduleDeps *modDepsPtr, int flags, int cancelNotBack) {
int rc;
int done = 0;
@@ -170,7 +170,7 @@ int devLoadDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
if (rc == 2) return LOADER_BACK;
- mlLoadModule("vfat", NULL, modLoaded, modDeps, NULL, flags);
+ mlLoadModule("vfat", NULL, modLoaded, (*modDepsPtr), NULL, flags);
devMakeInode("fd0", "/tmp/fd0");
@@ -178,7 +178,7 @@ int devLoadDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
newtWinMessage(_("Error"), _("OK"),
_("Failed to mount floppy disk."));
- if (devCopyDriverDisk(modInfo, modLoaded, modDeps,
+ if (devCopyDriverDisk(modInfo, modLoaded, modDepsPtr,
flags, "/tmp/drivers"))
newtWinMessage(_("Error"), _("OK"),
_("The floppy disk you inserted is not a valid driver disk "
@@ -252,7 +252,7 @@ static int pickModule(moduleInfoSet modInfo, enum driverMajor type,
if (es.reason == NEWT_EXIT_COMPONENT && es.u.co == back) {
return LOADER_BACK;
} else if (es.reason == NEWT_EXIT_HOTKEY && es.u.key == NEWT_KEY_F2) {
- devLoadDriverDisk(modInfo, modLoaded, modDeps, flags, 0);
+ devLoadDriverDisk(modInfo, modLoaded, &modDeps, flags, 0);
continue;
} else {
break;
diff --git a/loader/devices.h b/loader/devices.h
index b70ca9873..ee8af98e5 100644
--- a/loader/devices.h
+++ b/loader/devices.h
@@ -8,8 +8,8 @@ int devDeviceMenu(enum driverMajor type, moduleInfoSet modInfo,
moduleList modLoaded, moduleDeps modDeps, int flags,
char ** moduleName);
int devLoadDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
- moduleDeps modDeps, int flags, int cancelNotBack);
+ moduleDeps *modDepsPtr, int flags, int cancelNotBack);
int devCopyDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
- moduleDeps modDeps, int flags, char * mntPoint);
+ moduleDeps *modDepsPtr, int flags, char * mntPoint);
#endif
diff --git a/loader/loader.c b/loader/loader.c
index 5913a9489..9b7a3720a 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1182,7 +1182,7 @@ static int kickstartDevices(struct knownDevices * kd, moduleInfoSet modInfo,
break;
}
- if (devCopyDriverDisk(modInfo, modLoaded, modDeps, flags,
+ if (devCopyDriverDisk(modInfo, modLoaded, &modDeps, flags,
"/tmp/drivers")) {
logMessage("driver information missing!");
}
@@ -1904,7 +1904,7 @@ int main(int argc, char ** argv) {
access("/proc/openprom", X_OK)) || FL_MODDISK(flags))
&& !ksFile) {
startNewt(flags);
- devLoadDriverDisk(modInfo, modLoaded, modDeps, flags, 1);
+ devLoadDriverDisk(modInfo, modLoaded, &modDeps, flags, 1);
}
busProbe(modInfo, modLoaded, modDeps, probeOnly, &kd, flags);
diff --git a/loader/modules.c b/loader/modules.c
index fb7a07c7c..2706dcfc7 100644
--- a/loader/modules.c
+++ b/loader/modules.c
@@ -182,8 +182,8 @@ int mlLoadModule(char * modName, char * path, moduleList modLoaded,
if (dep && dep->deps) {
nextDep = dep->deps;
while (*nextDep) {
- mlLoadModule(*nextDep, NULL, modLoaded, modDeps, NULL, flags);
-
+ if (mlLoadModule(*nextDep, path, modLoaded, modDeps, NULL, flags) && path)
+ mlLoadModule(*nextDep, NULL, modLoaded, modDeps, NULL, flags);
nextDep++;
}
}