summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorJake Mannens <jake72360@gmail.com>2018-06-17 02:47:18 +1000
committerJake Mannens <jake72360@gmail.com>2018-06-17 02:47:18 +1000
commit52608386cfccf465cc8e9a01bb988a10831a9a73 (patch)
tree6a8515c04d2534c31e7957035154e2ec2c72b78c /kernel
parent3e9bdcca84e22c997a071dddf37449ead85aed75 (diff)
Added %s to vsprintf
Diffstat (limited to 'kernel')
-rw-r--r--kernel/boot.obin3184 -> 0 bytes
-rw-r--r--kernel/con.obin6496 -> 0 bytes
-rwxr-xr-xkernel/kernelbin14092 -> 0 bytes
-rw-r--r--kernel/kmain.c2
-rw-r--r--kernel/kmain.obin3288 -> 0 bytes
-rw-r--r--kernel/vsprintf.c33
-rw-r--r--kernel/vsprintf.obin3464 -> 0 bytes
7 files changed, 35 insertions, 0 deletions
diff --git a/kernel/boot.o b/kernel/boot.o
deleted file mode 100644
index 41427be..0000000
--- a/kernel/boot.o
+++ /dev/null
Binary files differ
diff --git a/kernel/con.o b/kernel/con.o
deleted file mode 100644
index 49168c9..0000000
--- a/kernel/con.o
+++ /dev/null
Binary files differ
diff --git a/kernel/kernel b/kernel/kernel
deleted file mode 100755
index 664108b..0000000
--- a/kernel/kernel
+++ /dev/null
Binary files 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
--- a/kernel/kmain.o
+++ /dev/null
Binary files 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 <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
deleted file mode 100644
index b5359fe..0000000
--- a/kernel/vsprintf.o
+++ /dev/null
Binary files differ