Related: rhbz#732496
---
loader/driverdisk.c | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/loader/driverdisk.c b/loader/driverdisk.c
index 37f71f1..df9d311 100644
--- a/loader/driverdisk.c
+++ b/loader/driverdisk.c
@@ -432,6 +432,8 @@ int getRemovableDevices(char *** devNames) {
return numDevices;
}
+static void getDDFromDev(struct loaderData_s * loaderData, char * dev, GTree *moduleState);
+
/* Prompt for loading a driver from "media"
*
* class: type of driver to load.
@@ -442,7 +444,7 @@ int loadDriverFromMedia(int class, struct loaderData_s *loaderData,
char * device = NULL, * part = NULL, * ddfile = NULL;
char ** devNames = NULL;
enum { DEV_DEVICE, DEV_PART, DEV_CHOOSEFILE, DEV_LOADFILE,
- DEV_INSERT, DEV_LOAD, DEV_PROBE,
+ DEV_INSERT, DEV_LOAD, DEV_PROBE, DEV_LOADRAW,
DEV_DONE } stage = DEV_DEVICE;
int rc, num = 0;
int dir = 1;
@@ -548,6 +550,12 @@ int loadDriverFromMedia(int class, struct loaderData_s *loaderData,
break;
}
+ /* check if the partition contains the DD in raw format */
+ if (verifyDriverDisk("/tmp/dpart") == LOADER_OK) {
+ stage = DEV_LOADRAW;
+ break;
+ }
+
ddfile = newt_select_file(_("Select driver disk image"),
_("Select the file which is your driver "
"disk image."),
@@ -712,6 +720,12 @@ int loadDriverFromMedia(int class, struct loaderData_s *loaderData,
break;
}
+
+ case DEV_LOADRAW:
+ getDDFromDev(loaderData, part, moduleState);
+ stage = DEV_PROBE;
+ break;
+
case DEV_DONE:
break;
}
@@ -799,7 +813,6 @@ void getDDFromSource(struct loaderData_s * loaderData, char * src, GTree *module
}
-static void getDDFromDev(struct loaderData_s * loaderData, char * dev, GTree *moduleState);
void useKickstartDD(struct loaderData_s * loaderData,
int argc, char ** argv) {
--
1.7.4.4