Merge pull request #7579 from jepler/better-boot-output-truncation

Improve boot_out.txt truncation
This commit is contained in:
Dan Halbert 2023-02-15 16:07:14 -05:00 committed by GitHub
commit c3e7670712
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View File

@ -2410,6 +2410,10 @@ msgid ""
"You pressed the reset button during boot. Press again to exit safe mode."
msgstr ""
#: supervisor/shared/micropython.c
msgid "[truncated due to length]"
msgstr ""
#: py/objtype.c
msgid "__init__() should return None"
msgstr ""

View File

@ -62,8 +62,15 @@ void mp_hal_stdout_tx_strn(const char *str, size_t len) {
#ifdef CIRCUITPY_BOOT_OUTPUT_FILE
if (boot_output != NULL) {
// Ensure boot_out.txt is capped at 1 filesystem block and ends with a newline
if (len + boot_output->len > 508) {
vstr_add_str(boot_output, "...\n");
#define TRUNCATED translate("[truncated due to length]")
size_t truncated_message_len = decompress_length(TRUNCATED);
size_t maxlen = 512 - truncated_message_len; // includes trailing '\0' so we do not need to account for trailing newline '\n' in vstr_add_byte
if (len + boot_output->len > maxlen) {
size_t remaining_len = maxlen - boot_output->len;
vstr_add_strn(boot_output, str, remaining_len);
char buf[truncated_message_len];
vstr_add_str(boot_output, decompress(TRUNCATED, buf));
vstr_add_byte(boot_output, '\n');
boot_output = NULL;
} else {
vstr_add_strn(boot_output, str, len);