summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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