From 52608386cfccf465cc8e9a01bb988a10831a9a73 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Sun, 17 Jun 2018 02:47:18 +1000 Subject: Added %s to vsprintf --- kernel/boot.o | Bin 3184 -> 0 bytes kernel/con.o | Bin 6496 -> 0 bytes kernel/kernel | Bin 14092 -> 0 bytes kernel/kmain.c | 2 ++ kernel/kmain.o | Bin 3288 -> 0 bytes kernel/vsprintf.c | 33 +++++++++++++++++++++++++++++++++ kernel/vsprintf.o | Bin 3464 -> 0 bytes 7 files changed, 35 insertions(+) delete mode 100644 kernel/boot.o delete mode 100644 kernel/con.o delete mode 100755 kernel/kernel delete mode 100644 kernel/kmain.o delete mode 100644 kernel/vsprintf.o diff --git a/kernel/boot.o b/kernel/boot.o deleted file mode 100644 index 41427be..0000000 Binary files a/kernel/boot.o and /dev/null differ diff --git a/kernel/con.o b/kernel/con.o deleted file mode 100644 index 49168c9..0000000 Binary files a/kernel/con.o and /dev/null differ diff --git a/kernel/kernel b/kernel/kernel deleted file mode 100755 index 664108b..0000000 Binary files a/kernel/kernel and /dev/null differ diff --git a/kernel/kmain.c b/kernel/kmain.c index 2dc9e76..efdf8e6 100644 --- a/kernel/kmain.c +++ b/kernel/kmain.c @@ -7,4 +7,6 @@ void kmain(void) { printf("Kernel booting...\n"); printf("Kernel booted!\n"); + + printf("Hello %s %s\n", "world!", "second"); } diff --git a/kernel/kmain.o b/kernel/kmain.o deleted file mode 100644 index 9a3a76d..0000000 Binary files a/kernel/kmain.o and /dev/null differ diff --git a/kernel/vsprintf.c b/kernel/vsprintf.c index f3feb43..ed2d8be 100644 --- a/kernel/vsprintf.c +++ b/kernel/vsprintf.c @@ -1,7 +1,17 @@ #include +#include + +enum TYPE { + TYPE_INT = 1, + TYPE_UINT = 2, + TYPE_HEX = 3, + TYPE_STRING = 4 +}; int vsprintf(char *str, char *fmt, va_list ap) { + char *s; char *start = str; + uint8_t type; while(*fmt) { if(*fmt != '%') { @@ -10,6 +20,29 @@ int vsprintf(char *str, char *fmt, va_list ap) { } fmt++; + while(1) { + switch(*fmt) { + case 's': + if(type) + goto done; + type = TYPE_STRING; + break; + default: + goto done; + break; + } + fmt++; + } + +done: + + switch(type) { + case TYPE_STRING: + s = va_arg(ap, char*); + while(*s) + *str++ = *s++; + break; + } } *str = 0; diff --git a/kernel/vsprintf.o b/kernel/vsprintf.o deleted file mode 100644 index b5359fe..0000000 Binary files a/kernel/vsprintf.o and /dev/null differ -- cgit v1.3