aboutsummaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-02-07 10:08:34 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-02-07 10:08:34 -0500
commit873a103fb71d6b7b1993a64535a7fa150317ca3c (patch)
tree4290bfee363c455d4e6dd1a30732fd306e7d23b6 /libc
parent9d7d5c592702e23f1108046d42d5cf550ab9633e (diff)
downloadkappa-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.h4
-rw-r--r--libc/stdio.c19
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' };