summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2008-01-08 15:54:10 +1100
committerJeremy Kerr <jk@ozlabs.org>2008-01-08 15:54:10 +1100
commitba15ae87098f62df9f7c81a71c3882d05e8c8d80 (patch)
treea7740a15965ecea7b187de737756eb99a1898581
parent72fe1a737385d8f52c33fe237214c4e9cb3c7c93 (diff)
downloadtalos-petitboot-ba15ae87098f62df9f7c81a71c3882d05e8c8d80.tar.gz
talos-petitboot-ba15ae87098f62df9f7c81a71c3882d05e8c8d80.zip
Print ststus message when booting
Add a couple of calls to pboot_message() to give some feedback when an option (or gameos) is selected. Also, convert pboot_message to varargs, to allow more flexible message formats. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--devices.c4
-rw-r--r--petitboot.c17
-rw-r--r--petitboot.h3
3 files changed, 19 insertions, 5 deletions
diff --git a/devices.c b/devices.c
index 57c037e..77860d0 100644
--- a/devices.c
+++ b/devices.c
@@ -308,6 +308,6 @@ void pboot_exec_option(void *data)
fflush(stdout);
execv(kexec_opts[0], kexec_opts);
-
- LOG("kexec failed: %s", strerror(errno));
+ pboot_message("kexec failed: %s", strerror(errno));
+ LOG("execv() failed: %s", strerror(errno));
}
diff --git a/petitboot.c b/petitboot.c
index 0b6828b..6f2a386 100644
--- a/petitboot.c
+++ b/petitboot.c
@@ -1,3 +1,6 @@
+
+#define _GNU_SOURCE
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -457,6 +460,7 @@ static void pboot_choose_option(void)
pboot_option_t *opt = &dev->options[pboot_rpane->focus_curindex];
LOG("Selected device %s\n", opt->title);
+ pboot_message("booting %s...", opt->title);
/* Give user feedback, make sure errors and panics will be seen */
pboot_exec_option(opt->data);
@@ -791,6 +795,7 @@ twin_bool_t pboot_event_filter(twin_screen_t *screen,
/* Another gross hack for booting back to gameos */
case KEY_BACKSPACE:
case KEY_DELETE:
+ pboot_message("booting to GameOS");
system(BOOT_GAMEOS_BIN);
pboot_quit();
}
@@ -920,11 +925,19 @@ static void pboot_spane_draw(twin_window_t *window)
twin_path_destroy(path);
}
-void pboot_message(const char *message)
+void pboot_message(const char *fmt, ...)
{
+ va_list ap;
+ char *msg;
+
if (pboot_spane->text)
free(pboot_spane->text);
- pboot_spane->text = strdup(message);
+
+ va_start(ap, fmt);
+ vasprintf(&msg, fmt, ap);
+ va_end(ap);
+
+ pboot_spane->text = msg;
twin_window_damage(pboot_spane->window,
0, 0,
pboot_spane->window->pixmap->width,
diff --git a/petitboot.h b/petitboot.h
index a77bfef..893be04 100644
--- a/petitboot.h
+++ b/petitboot.h
@@ -1,5 +1,6 @@
#include <libtwin/twin.h>
+#include <stdarg.h>
#define LOG(fmt...) printf(fmt)
@@ -14,4 +15,4 @@ int pboot_remove_device(const char *dev_id);
int pboot_start_device_discovery(int udev_trigger);
void pboot_exec_option(void *data);
-void pboot_message(const char *message);
+void pboot_message(const char *fmt, ...);
OpenPOWER on IntegriCloud