summaryrefslogtreecommitdiffstats
path: root/loader2/cdinstall.c
diff options
context:
space:
mode:
authorMike Fulbright <msf@redhat.com>2002-12-17 17:39:43 +0000
committerMike Fulbright <msf@redhat.com>2002-12-17 17:39:43 +0000
commita46c0c55d17e48fbc099d8eb0812a3ef24808afd (patch)
tree923735037dbf8450eba0ace55143b92e8baf8123 /loader2/cdinstall.c
parentce10e9b32a53e20e5584a15754a21da98886be81 (diff)
downloadanaconda-a46c0c55d17e48fbc099d8eb0812a3ef24808afd.tar.gz
anaconda-a46c0c55d17e48fbc099d8eb0812a3ef24808afd.tar.xz
anaconda-a46c0c55d17e48fbc099d8eb0812a3ef24808afd.zip
add support for pulling ks.cfg from hd or cd
Diffstat (limited to 'loader2/cdinstall.c')
-rw-r--r--loader2/cdinstall.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/loader2/cdinstall.c b/loader2/cdinstall.c
index 297d7e437..0fa8c5901 100644
--- a/loader2/cdinstall.c
+++ b/loader2/cdinstall.c
@@ -31,6 +31,7 @@
#include <linux/cdrom.h>
#endif
+#include "kickstart.h"
#include "loader.h"
#include "loadermisc.h"
#include "log.h"
@@ -390,3 +391,40 @@ void setKickstartCD(struct loaderData_s * loaderData, int argc,
loaderData->method = strdup("cdrom");
}
+
+int kickstartFromCD(char *kssrc, struct knownDevices * kd, int flags) {
+ int rc;
+ int i;
+ char *p, *kspath;
+
+ logMessage("getting kickstart file from first CDROM");
+
+ for (i = 0; i < kd->numKnown; i++)
+ if (kd->known[i].class == CLASS_CDROM)
+ break;
+
+ if (i >= kd->numKnown) {
+ logMessage("No CDROM devices found!");
+ return 1;
+ }
+
+ /* format is ks=cdrom:[/path/to/ks.cfg] */
+ kspath = "";
+ p = strchr(kssrc, ':');
+ if (p)
+ kspath = p + 1;
+
+ if (!p || strlen(kspath) < 1)
+ kspath = "/ks.cfg";
+
+ if ((rc=getKickstartFromBlockDevice(kd->known[i].name, kspath))) {
+ if (rc == 3) {
+ startNewt(flags);
+ newtWinMessage(_("Error"), _("OK"),
+ _("Cannot find kickstart file on CDROM."));
+ }
+ return 1;
+ }
+
+ return 0;
+}