diff options
Diffstat (limited to 'src/bees.c')
-rw-r--r-- | src/bees.c | 27 |
1 files changed, 21 insertions, 6 deletions
@@ -1,6 +1,7 @@ #include "vga.h" #include "printf.h" +#include "string.h" const char *bees_msg = "\n\n\n" @@ -9,14 +10,28 @@ const char *bees_msg = " \\ -- /" "\n" " _====_ your computer will now halt." "\n" " / |--| \\" "\n" -" / /==\\ \\ error: %s" "\n" -" / /----\\ \\" "\n" -" / /======\\ \\" "\n" -" \\_/ ---- \\_/" "\n"; +" / /==\\ \\ error: " "\n" +" / /----\\ \\ %" "\n" +" / /======\\ \\ %" "\n" +" \\_/ ---- \\_/ %" "\n" +" % " "\n" +" % " "\n" +" % " "\n" +" % " "\n" +" % " "\n" +" % " "\n"; -void bees(const char *error) { +_Noreturn void bees(const char *error) { vsetcolor(vga_color(vga_white, vga_blue)); vclear(); - printf(bees_msg, error); + // wrap the error message + for (int i = 0; bees_msg[i] != '\0'; i++) { + if (bees_msg[i] != '%') vputchar(bees_msg[i]); + else { + while (isspace(*error)) error++; + for (int j = 20; j <= VGA_WIDTH - 3 && *error != '\0'; j++) + vputchar(*(error++)); + } + } while (1) asm("cli;hlt"); } |