Add error handling
This commit is contained in:
parent
075d9e17a6
commit
3bcb9c7df4
28
srv/format.c
28
srv/format.c
@ -81,27 +81,37 @@ static uint32_t render_format(FormatCallback callback, void* arg,
|
||||
if (in_format) {
|
||||
switch (*c) {
|
||||
case '%':
|
||||
callback('%', arg);
|
||||
if (callback('%', arg)) return 1;
|
||||
break;
|
||||
case 'c':
|
||||
callback((uint8_t)va_arg(va, uint32_t), arg);
|
||||
if (callback((uint8_t)va_arg(va, uint32_t), arg)) {
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
{
|
||||
const char* str = va_arg(va, const char*);
|
||||
for (const char* c2 = str; *c2 != '\0'; ++c2) {
|
||||
callback(*c2, arg);
|
||||
if (callback(*c2, arg)) return 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'i':
|
||||
render_signed(callback, arg, va_arg(va, int32_t), 10);
|
||||
if (render_signed(callback, arg, va_arg(va, int32_t), 10)) {
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case 'u':
|
||||
render_unsigned(callback, arg, va_arg(va, uint32_t), 10);
|
||||
if (render_unsigned(callback, arg,
|
||||
va_arg(va, uint32_t), 10)) {
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case 'x':
|
||||
render_unsigned(callback, arg, va_arg(va, uint32_t), 16);
|
||||
if (render_unsigned(callback, arg,
|
||||
va_arg(va, uint32_t), 16)) {
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
//TODO manage error
|
||||
@ -113,7 +123,7 @@ static uint32_t render_format(FormatCallback callback, void* arg,
|
||||
in_format = true;
|
||||
continue;
|
||||
default:
|
||||
callback(*c, arg);
|
||||
if (callback(*c, arg)) return 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -154,9 +164,9 @@ static uint32_t render_unsigned(FormatCallback callback, void* arg,
|
||||
}
|
||||
|
||||
if (digit < 10) {
|
||||
callback('0' + digit, arg);
|
||||
if (callback('0' + digit, arg)) return 1;
|
||||
} else {
|
||||
callback('A' + digit - 10, arg);
|
||||
if (callback('A' + digit - 10, arg)) return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user