kprintf args count check
This commit is contained in:
parent
9bc2a8587b
commit
0e370b31ba
@ -45,13 +45,17 @@ WORD unixColorToWin(u8 c){
|
||||
}
|
||||
#endif
|
||||
|
||||
i32 kprintf(const char* format, ...){
|
||||
i32 _kprintf(const char* format, const i32 args_count, ...){
|
||||
va_list vl;
|
||||
va_start(vl, format);
|
||||
va_start(vl, args_count);
|
||||
i32 i = 0;
|
||||
i32 args_left = args_count;
|
||||
for(char c = format[i++]; c != 0; c = format[i++]){
|
||||
// value format specifiers
|
||||
if(c == '%'){
|
||||
if(args_left-- == 0)
|
||||
return kprintf_NOT_ENOUGH_ARGUMENTS;
|
||||
|
||||
char* argstr = NULL;
|
||||
bool l = false;
|
||||
c = format[i++];
|
||||
@ -152,17 +156,21 @@ i32 kprintf(const char* format, ...){
|
||||
}
|
||||
|
||||
|
||||
i32 ksprintf(char* buffer, i32 buffer_size, const char* format, ...){
|
||||
i32 _ksprintf(char* buffer, i32 buffer_size, const char* format, const i32 args_count, ...){
|
||||
if(buffer == NULL)
|
||||
return kprintf_BUFFER_IS_NULL;
|
||||
|
||||
va_list vl;
|
||||
va_start(vl, format);
|
||||
va_start(vl, args_count);
|
||||
i32 i = 0;
|
||||
i32 written = 0;
|
||||
i32 args_left = args_count;
|
||||
for(char c = format[i++]; c != 0; c = format[i++]){
|
||||
// value format specifiers
|
||||
if(c == '%'){
|
||||
if(args_left-- == 0)
|
||||
return kprintf_NOT_ENOUGH_ARGUMENTS;
|
||||
|
||||
char* argstr = NULL;
|
||||
bool l = false;
|
||||
c = format[i++];
|
||||
|
||||
@ -7,15 +7,18 @@ extern "C" {
|
||||
#include "../base/type_system/base_toString.h"
|
||||
|
||||
#define kprintf_INVALID_FORMAT -1
|
||||
#define kprintf_BUFFER_IS_NULL -2
|
||||
#define kprintf_NOT_ENOUGH_ARGUMENTS -2
|
||||
#define kprintf_BUFFER_IS_TOO_SMALL -3
|
||||
#define kprintf_BUFFER_IS_NULL -4
|
||||
|
||||
/// cross-platform printf analog
|
||||
///@return number of processed format string characters or error code
|
||||
i32 kprintf(const char* format, ...);
|
||||
i32 _kprintf(const char* format, const i32 args_count, ...);
|
||||
#define kprintf(FORMAT, ARGS... ) _kprintf(FORMAT, count_args(ARGS) ,##ARGS)
|
||||
|
||||
/// @return number of processed format string characters or error code
|
||||
i32 ksprintf(char* buffer, i32 buffer_size, const char* format, ...);
|
||||
i32 _ksprintf(char* buffer, i32 buffer_size, const char* format, const i32 args_count, ...);
|
||||
#define ksprintf(BUFFER, BUFFER_SIZE, FORMAT, ARGS... ) _ksprintf(BUFFER, BUFFER_SIZE, FORMAT, count_args(ARGS) ,##ARGS)
|
||||
|
||||
|
||||
// printf format terminal color sequence
|
||||
|
||||
Loading…
Reference in New Issue
Block a user