diff options
| author | Nic Gaffney <gaffney_nic@protonmail.com> | 2024-02-16 21:17:51 -0600 |
|---|---|---|
| committer | Nic Gaffney <gaffney_nic@protonmail.com> | 2024-02-16 21:17:51 -0600 |
| commit | 2ae431b4fb4460cc222f059a343dd8ecade8e1ea (patch) | |
| tree | 396c0e03feffcf8721ea6524d7ac500e84fefab2 /src/kernel/print.c | |
| parent | a4177529a7834856f16b0edbe4d126bf03742eb1 (diff) | |
| download | gftos-2ae431b4fb4460cc222f059a343dd8ecade8e1ea.tar.gz | |
Forgot to add these last time womp womp
Diffstat (limited to 'src/kernel/print.c')
| -rw-r--r-- | src/kernel/print.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/kernel/print.c b/src/kernel/print.c index 7a54c7b..3ddb445 100644 --- a/src/kernel/print.c +++ b/src/kernel/print.c @@ -54,6 +54,8 @@ void print_clear() { for (size_t i = 0; i < NUM_ROWS; i++) { clear_row(i); } + col = 0; + row = 0; } // newline @@ -115,10 +117,12 @@ void print_char(char character) { } // print_str -void print_str(char *str) { +int print_str(char *str) { // while character != '\0' print char - for (size_t i = 0; str[i] != '\0'; ++i) + size_t i; + for (i = 0; str[i] != '\0'; ++i) print_char(str[i]); + return i; } // Set color byte to requested colors using color enum from print.h @@ -126,30 +130,34 @@ void print_set_color(uint8_t foreground, uint8_t background) { color = foreground + (background << 4); } -void printf(const char *str, ...) { +int printf(const char *str, ...) { va_list args; va_start(args, str); char temp_str[256] = ""; + int len = 0; - for (size_t i = 0; str[i] != '\0'; ++i) { + size_t i; + for (i = 0; str[i] != '\0'; ++i) { if (str[i] == '%') { switch (str[++i]) { case 'i': case 'd': - print_str(itoa(va_arg(args, int), temp_str, 10)); + len += print_str(itoa(va_arg(args, int), temp_str, 10)); break; case 'x': - print_str("0x"); - print_str(itoa(va_arg(args, int), temp_str, 16)); + len += print_str("0x"); + len += print_str(itoa(va_arg(args, int), temp_str, 16)); break; case 's': - print_str(va_arg(args, char *)); + len += print_str(va_arg(args, char *)); break; case 'c': print_char(va_arg(args, int)); + len++; break; case '%': print_char('%'); + len++; case 'n': break; } @@ -158,4 +166,5 @@ void printf(const char *str, ...) { print_char(str[i]); } va_end(args); + return i; } |
