zephyr/modules/mbedtls/debug.c
Marcin Niestroj fa5937aaed modules: mbedtls: support stripping newline from debug log messages
Debug log messages generated by mbedTLS library contain newline at the end
of log string. Remove this newline, if it exists, so that log output is
much more user friendly.

Add a dedicated Kconfig option for that, so it can be disabled on request.

Signed-off-by: Marcin Niestroj <m.niestroj@emb.dev>
2022-08-17 12:03:52 +02:00

58 lines
1.2 KiB
C

/*
* Copyright (c) 2018 Nordic Semiconductor ASA
* Copyright (c) 2022 Marcin Niestroj
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(mbedtls, CONFIG_MBEDTLS_LOG_LEVEL);
#include "zephyr_mbedtls_priv.h"
void zephyr_mbedtls_debug(void *ctx, int level, const char *file, int line, const char *str)
{
const char *p, *basename = file;
int str_len;
ARG_UNUSED(ctx);
if (!file || !str) {
return;
}
/* Extract basename from file */
if (IS_ENABLED(CONFIG_MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_RUNTIME)) {
for (p = basename = file; *p != '\0'; p++) {
if (*p == '/' || *p == '\\') {
basename = p + 1;
}
}
}
str_len = strlen(str);
if (IS_ENABLED(CONFIG_MBEDTLS_DEBUG_STRIP_NEWLINE)) {
/* Remove newline only when it exists */
if (str_len > 0 && str[str_len - 1] == '\n') {
str_len--;
}
}
switch (level) {
case 0:
case 1:
LOG_ERR("%s:%04d: %.*s", basename, line, str_len, str);
break;
case 2:
LOG_WRN("%s:%04d: %.*s", basename, line, str_len, str);
break;
case 3:
LOG_INF("%s:%04d: %.*s", basename, line, str_len, str);
break;
default:
LOG_DBG("%s:%04d: %.*s", basename, line, str_len, str);
break;
}
}