diff options
| author | Jake Mannens <jake72360@gmail.com> | 2018-06-17 02:47:18 +1000 |
|---|---|---|
| committer | Jake Mannens <jake72360@gmail.com> | 2018-06-17 02:47:18 +1000 |
| commit | 52608386cfccf465cc8e9a01bb988a10831a9a73 (patch) | |
| tree | 6a8515c04d2534c31e7957035154e2ec2c72b78c /kernel | |
| parent | 3e9bdcca84e22c997a071dddf37449ead85aed75 (diff) | |
Added %s to vsprintf
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/boot.o | bin | 3184 -> 0 bytes | |||
| -rw-r--r-- | kernel/con.o | bin | 6496 -> 0 bytes | |||
| -rwxr-xr-x | kernel/kernel | bin | 14092 -> 0 bytes | |||
| -rw-r--r-- | kernel/kmain.c | 2 | ||||
| -rw-r--r-- | kernel/kmain.o | bin | 3288 -> 0 bytes | |||
| -rw-r--r-- | kernel/vsprintf.c | 33 | ||||
| -rw-r--r-- | kernel/vsprintf.o | bin | 3464 -> 0 bytes |
7 files changed, 35 insertions, 0 deletions
diff --git a/kernel/boot.o b/kernel/boot.o Binary files differdeleted file mode 100644 index 41427be..0000000 --- a/kernel/boot.o +++ /dev/null diff --git a/kernel/con.o b/kernel/con.o Binary files differdeleted file mode 100644 index 49168c9..0000000 --- a/kernel/con.o +++ /dev/null diff --git a/kernel/kernel b/kernel/kernel Binary files differdeleted file mode 100755 index 664108b..0000000 --- a/kernel/kernel +++ /dev/null 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 Binary files differdeleted file mode 100644 index 9a3a76d..0000000 --- a/kernel/kmain.o +++ /dev/null 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 <stdarg.h> +#include <stdint.h> + +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 Binary files differdeleted file mode 100644 index b5359fe..0000000 --- a/kernel/vsprintf.o +++ /dev/null |
