From ba15ae87098f62df9f7c81a71c3882d05e8c8d80 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Tue, 8 Jan 2008 15:54:10 +1100 Subject: [PATCH] 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 --- devices.c | 4 ++-- petitboot.c | 17 +++++++++++++++-- petitboot.h | 3 ++- 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 #include #include @@ -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 +#include #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, ...); -- 2.39.2