diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-02-07 10:08:34 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-02-07 10:08:34 -0500 |
| commit | 873a103fb71d6b7b1993a64535a7fa150317ca3c (patch) | |
| tree | 4290bfee363c455d4e6dd1a30732fd306e7d23b6 /libc | |
| parent | 9d7d5c592702e23f1108046d42d5cf550ab9633e (diff) | |
| download | kappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.zip kappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.tar.gz kappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.tar.bz2 kappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.tar.xz | |
refactor stdio
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/include/stdio.h | 4 | ||||
| -rw-r--r-- | libc/stdio.c | 19 |
2 files changed, 20 insertions, 3 deletions
diff --git a/libc/include/stdio.h b/libc/include/stdio.h index 32391b8..ac547c7 100644 --- a/libc/include/stdio.h +++ b/libc/include/stdio.h @@ -1,3 +1,7 @@ int printf(const char* fmt, ...); int puts(const char*); int putchar(int); + +/* sets the I/O functions, allows easy switching between text mode and VBE */ +void set_putchar(void (*func)(char)); +void set_puts(void (*func)(const char*)); diff --git a/libc/stdio.c b/libc/stdio.c index 92fba27..0ef8b0c 100644 --- a/libc/stdio.c +++ b/libc/stdio.c @@ -1,20 +1,33 @@ -#include "tty.h" +#include "log.h" #include <stdarg.h> #include <stdio.h> #include <stdlib.h> +static void (*putchar_ptr)(char) = log_putchar; +static void (*puts_ptr)(const char*) = log_puts; + int putchar(int ch) { - tty_putchar((char)ch); + putchar_ptr((char)ch); return 0; } int puts(const char* str) { - tty_puts(str); + puts_ptr(str); return 0; } +void set_putchar(void (*func)(char)) +{ + putchar_ptr = func; +} + +void set_puts(void (*func)(const char*)) +{ + puts_ptr = func; +} + static char hex_table[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; |