fix: kprintf now works with multiple arguments
This commit is contained in:
parent
8968c3769d
commit
907eb7cf7d
@ -1,24 +1,24 @@
|
||||
#include "ctype.h"
|
||||
#include "kprintf.h"
|
||||
#include "stdlib.h"
|
||||
#include "string.h"
|
||||
#include "terminal.h"
|
||||
#include "ctype.h"
|
||||
#include "stdlib.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
static int print_flag(char flag, va_list ap)
|
||||
static int print_flag(char flag, va_list *ap)
|
||||
{
|
||||
switch (flag) {
|
||||
case '%':
|
||||
return terminal_putchar('%');
|
||||
case 'i':
|
||||
return terminal_writelong(va_arg(ap, int));
|
||||
case 'd':
|
||||
return terminal_writelong(va_arg(ap, int));
|
||||
case 'c':
|
||||
return terminal_putchar(va_arg(ap, int));
|
||||
case 's':
|
||||
return terminal_writestring(va_arg(ap, char *));
|
||||
case '%':
|
||||
return terminal_putchar('%');
|
||||
case 'i':
|
||||
return terminal_writelong(va_arg(*ap, int));
|
||||
case 'd':
|
||||
return terminal_writelong(va_arg(*ap, int));
|
||||
case 'c':
|
||||
return terminal_putchar(va_arg(*ap, int));
|
||||
case 's':
|
||||
return terminal_writestring(va_arg(*ap, char *));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -30,12 +30,12 @@ int kvprintf(int level, const char *restrict format, va_list ap)
|
||||
|
||||
while (*start != '\0') {
|
||||
if (*start == '%' && *(start + 1) != '\0') {
|
||||
ret += print_flag(*(start + 1), ap);
|
||||
ret += print_flag(*(start + 1), &ap);
|
||||
start++;
|
||||
}
|
||||
else
|
||||
} else {
|
||||
ret += terminal_putchar(*start);
|
||||
}
|
||||
start++;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user