summaryrefslogtreecommitdiffstats
path: root/loader
diff options
context:
space:
mode:
authorErik Troan <ewt@redhat.com>2001-01-30 19:14:41 +0000
committerErik Troan <ewt@redhat.com>2001-01-30 19:14:41 +0000
commit63509bdbfaee8d1809c95dd8d7d847d0bccce543 (patch)
treeaa5c0e25a736827d91384568845996de34c1dffe /loader
parent2d8704857ed4a0a182b29c7eab696578dcd96a08 (diff)
downloadanaconda-63509bdbfaee8d1809c95dd8d7d847d0bccce543.tar.gz
anaconda-63509bdbfaee8d1809c95dd8d7d847d0bccce543.tar.xz
anaconda-63509bdbfaee8d1809c95dd8d7d847d0bccce543.zip
merged ddReadDriverDiskModInfo() change in from 7.0 branch
Diffstat (limited to 'loader')
-rw-r--r--loader/devices.c56
1 files changed, 55 insertions, 1 deletions
diff --git a/loader/devices.c b/loader/devices.c
index 2c58fd161..f82205dd9 100644
--- a/loader/devices.c
+++ b/loader/devices.c
@@ -148,9 +148,11 @@ int devInitDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
moduleDeps *modDepsPtr, int flags, char * mntPoint,
struct driverDiskInfo * ddi) {
int badDisk = 0;
- char from[200];
+ char from[200], to[200];
struct stat sb;
+ static int ddNum = 0;
char * diskName;
+ FILE * f;
int fd;
char * fileCheck[] = { "rhdd-6.1", "modinfo", "modules.dep", "pcitable",
NULL };
@@ -190,6 +192,27 @@ int devInitDriverDisk(moduleInfoSet modInfo, moduleList modLoaded,
sprintf(from, "%s/pcitable", mntPoint);
pciReadDrivers(from);
+ /* save this modinfo file for later -- we may need it again in
+ ddReadDriverDiskModInfo() */
+ sprintf(to, "/tmp/DD-%d", ddNum);
+ mkdirChain(to);
+
+ sprintf(from, "%s/modinfo", mntPoint);
+ sprintf(to, "/tmp/DD-%d/modinfo", ddNum);
+
+ if (copyFile(from, to))
+ return 0;
+
+ sprintf(to, "/tmp/DD-%d/diskInfo", ddNum);
+ f = fopen(to, "w");
+ fprintf(f, "%s\n", ddi->title);
+ fprintf(f, "%s\n", ddi->mntDevice);
+ fprintf(f, "%s\n", ddi->fs);
+ fprintf(f, "%s\n", ddi->device ? ddi->device : "(NONE)");
+ fclose(f);
+
+ ddNum++;
+
return 0;
}
@@ -509,3 +532,34 @@ char * extractModule(struct driverDiskInfo * ddi, char * modName) {
if (rc == 2) return NULL;
}
}
+
+void ddReadDriverDiskModInfo(moduleInfoSet modInfo) {
+ int num = 0;
+ char fileName[80];
+ struct stat sb;
+ FILE * f;
+ struct driverDiskInfo * ddi;
+
+ sprintf(fileName, "/tmp/DD-%d/diskInfo", num);
+ while (!access(fileName, R_OK)) {
+ stat(fileName, &sb);
+
+ f = fopen(fileName, "r");
+ ddi = malloc(sizeof(*ddi));
+ ddi->title = readLine(f);
+ ddi->mntDevice = readLine(f);
+ ddi->fs = readLine(f);
+ ddi->device = readLine(f);
+ if (!strcmp("(NONE)", ddi->device)) {
+ free(ddi->device);
+ ddi->device = NULL;
+ }
+ fclose(f);
+
+ sprintf(fileName, "/tmp/DD-%d/modinfo", num);
+ isysReadModuleInfo(fileName, modInfo, ddi);
+
+ sprintf(fileName, "/tmp/DD-%d/diskName", ++num);
+ }
+}
+