From 957b031689658c1ff67ea8a8a04640be9bec2d7d Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sun, 1 Feb 2015 16:40:00 -0500 Subject: a lot of kernel work --- libc/include/stdio.h | 3 +++ libc/include/string.h | 3 +++ libc/stdio.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 libc/include/stdio.h create mode 100644 libc/include/string.h create mode 100644 libc/stdio.c (limited to 'libc') diff --git a/libc/include/stdio.h b/libc/include/stdio.h new file mode 100644 index 0000000..32391b8 --- /dev/null +++ b/libc/include/stdio.h @@ -0,0 +1,3 @@ +int printf(const char* fmt, ...); +int puts(const char*); +int putchar(int); diff --git a/libc/include/string.h b/libc/include/string.h new file mode 100644 index 0000000..650a7ac --- /dev/null +++ b/libc/include/string.h @@ -0,0 +1,3 @@ +#include +int strlen(const char*); +void* memset(void*, int, size_t); diff --git a/libc/stdio.c b/libc/stdio.c new file mode 100644 index 0000000..4888338 --- /dev/null +++ b/libc/stdio.c @@ -0,0 +1,49 @@ +#include "stdio.h" +#include "tty.h" +#include + +int putchar(int ch) +{ + tty_putchar((char)ch); + return 0; +} + +int puts(const char* str) +{ + tty_puts(str); + return 0; +} + +int printf(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + while(*fmt) + { + char ch = *fmt++; + switch(ch) + { + case '%': + { + switch(*fmt++) + { + case 'c': + putchar(va_arg(ap, int)); + break; + case 's': + puts(va_arg(ap, const char*)); + break; + default: + puts("printf: unknown format\n"); + break; + } + break; + } + default: + putchar(ch); + break; + } + } + va_end(ap); + return 0; +} -- cgit v1.1