Add error handling

This commit is contained in:
Steins7 2024-04-15 17:17:23 +02:00
parent 075d9e17a6
commit 3bcb9c7df4

View File

@ -81,27 +81,37 @@ static uint32_t render_format(FormatCallback callback, void* arg,
if (in_format) { if (in_format) {
switch (*c) { switch (*c) {
case '%': case '%':
callback('%', arg); if (callback('%', arg)) return 1;
break; break;
case 'c': case 'c':
callback((uint8_t)va_arg(va, uint32_t), arg); if (callback((uint8_t)va_arg(va, uint32_t), arg)) {
return 1;
}
break; break;
case 's': case 's':
{ {
const char* str = va_arg(va, const char*); const char* str = va_arg(va, const char*);
for (const char* c2 = str; *c2 != '\0'; ++c2) { for (const char* c2 = str; *c2 != '\0'; ++c2) {
callback(*c2, arg); if (callback(*c2, arg)) return 1;
} }
} }
break; break;
case 'i': 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; break;
case 'u': 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; break;
case 'x': 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; break;
default: default:
//TODO manage error //TODO manage error
@ -113,7 +123,7 @@ static uint32_t render_format(FormatCallback callback, void* arg,
in_format = true; in_format = true;
continue; continue;
default: default:
callback(*c, arg); if (callback(*c, arg)) return 1;
break; break;
} }
} }
@ -154,9 +164,9 @@ static uint32_t render_unsigned(FormatCallback callback, void* arg,
} }
if (digit < 10) { if (digit < 10) {
callback('0' + digit, arg); if (callback('0' + digit, arg)) return 1;
} else { } else {
callback('A' + digit - 10, arg); if (callback('A' + digit - 10, arg)) return 1;
} }
} }