aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/print.c
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2024-02-16 21:17:51 -0600
committerNic Gaffney <gaffney_nic@protonmail.com>2024-02-16 21:17:51 -0600
commit2ae431b4fb4460cc222f059a343dd8ecade8e1ea (patch)
tree396c0e03feffcf8721ea6524d7ac500e84fefab2 /src/kernel/print.c
parenta4177529a7834856f16b0edbe4d126bf03742eb1 (diff)
downloadgftos-2ae431b4fb4460cc222f059a343dd8ecade8e1ea.tar.gz
Forgot to add these last time womp womp
Diffstat (limited to 'src/kernel/print.c')
-rw-r--r--src/kernel/print.c25
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;
}