diff options
author | Erik Troan <ewt@redhat.com> | 2001-01-30 19:14:41 +0000 |
---|---|---|
committer | Erik Troan <ewt@redhat.com> | 2001-01-30 19:14:41 +0000 |
commit | 63509bdbfaee8d1809c95dd8d7d847d0bccce543 (patch) | |
tree | aa5c0e25a736827d91384568845996de34c1dffe /loader | |
parent | 2d8704857ed4a0a182b29c7eab696578dcd96a08 (diff) | |
download | anaconda-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.c | 56 |
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); + } +} + |