return ret;
}
+struct hw_disk** hw_select_first_disk(const struct hw_disk** disks) {
+ struct hw_disk** ret = hw_create_disks();
+ struct hw_disk** selected_disks = ret;
+
+ unsigned int num_disks = hw_count_disks(disks);
+ assert(num_disks > 0);
+
+ for (unsigned int i = 0; i < num_disks; i++) {
+ struct hw_disk *disk = disks[i];
+ disk->ref++;
+
+ *selected_disks++ = disk;
+ break;
+ }
+
+ // Set sentinel
+ *selected_disks = NULL;
+
+ return ret;
+}
+
static unsigned long long hw_swap_size(struct hw_destination* dest) {
unsigned long long memory = hw_memory();
snprintf(title, sizeof(title), "%s - %s", NAME, SLOGAN);
- if (! (cmdfile = fopen("/proc/cmdline", "r")))
- {
+ if (! (cmdfile = fopen("/proc/cmdline", "r"))) {
fprintf(flog, "Couldn't open commandline: /proc/cmdline\n");
} else {
fgets(line, STRING_SIZE, cmdfile);
-
+
// check if we have to make an unattended install
- if (strstr (line, "unattended") != NULL) {
+ if (strstr(line, "installer.unattended") != NULL) {
+ splashWindow(title, _("Warning: Unattended installation will start in 10 seconds..."), 10);
unattended = 1;
- runcommandwithstatus("/bin/sleep 10", title, "WARNING: Unattended installation will start in 10 seconds...", NULL);
- }
+ }
// check if we have to patch for serial console
if (strstr (line, "console=ttyS0") != NULL) {
serialconsole = 1;
}
langnames[NUM_LANGS] = NULL;
- rc = newtWinMenu(_("Language selection"), _("Select the language you wish to use for the installation."),
+ rc = newtWinMenu(_("Language selection"), _("Select the language you wish to use for the installation."),
50, 5, 5, 8, langnames, &choice, _("OK"), NULL);
assert(choice <= NUM_LANGS);
goto EXIT;
// exactly one disk has been found
- } else if (num_disks == 1) {
- selected_disks = hw_select_disks(disks, NULL);
+ // or if we are running in unattended mode, we will select
+ // the first disk and go with that one
+ } else if ((num_disks == 1) || (unattended && num_disks >= 1)) {
+ selected_disks = hw_select_first_disk(disks);
// more than one usable disk has been found and
// the user needs to choose what to do with them
}
}
+ // Don't print the auto-selected harddisk setup in
+ // unattended mode.
+ if (unattended)
+ break;
+
num_selected_disks = hw_count_disks(selected_disks);
if (num_selected_disks == 1) {
int lines, char *text, ...);
int runcommandwithstatus(const char *command, const char* title, const char *message, const char* output);
int runhiddencommandwithstatus(const char *command, const char* title, const char *message, const char* output);
+int splashWindow(const char* title, const char* message, unsigned int timeout);
int checkformodule(const char *module);
int replace(char filename1[], char *from, char *to);
char* get_version(void);
return rc;
}
+int splashWindow(const char* title, const char* message, unsigned int timeout) {
+ statuswindow(60, 4, title, message);
+
+ // Wait so the user can read this message
+ sleep(timeout);
+ newtPopWindow();
+
+ return 0;
+}
+
/* This one borrowed from redhat installer. */
int runcommandwithprogress(int width, int height, const char *title, const char *command,
int lines, char *text, ...) {