quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

mps_trace.c (2270B)


      1 /*
      2  *  Message Processing Stack, Trace module
      3  *
      4  *  Copyright The Mbed TLS Contributors
      5  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
      6  */
      7 
      8 #include "common.h"
      9 
     10 #if defined(MBEDTLS_SSL_PROTO_TLS1_3)
     11 
     12 #include "mps_common.h"
     13 
     14 #if defined(MBEDTLS_MPS_ENABLE_TRACE)
     15 
     16 #include "mps_trace.h"
     17 #include <stdarg.h>
     18 
     19 static int trace_depth = 0;
     20 
     21 #define color_default  "\x1B[0m"
     22 #define color_red      "\x1B[1;31m"
     23 #define color_green    "\x1B[1;32m"
     24 #define color_yellow   "\x1B[1;33m"
     25 #define color_blue     "\x1B[1;34m"
     26 #define color_magenta  "\x1B[1;35m"
     27 #define color_cyan     "\x1B[1;36m"
     28 #define color_white    "\x1B[1;37m"
     29 
     30 static char const *colors[] =
     31 {
     32     color_default,
     33     color_green,
     34     color_yellow,
     35     color_magenta,
     36     color_cyan,
     37     color_blue,
     38     color_white
     39 };
     40 
     41 #define MPS_TRACE_BUF_SIZE 100
     42 
     43 void mbedtls_mps_trace_print_msg(int id, int line, const char *format, ...)
     44 {
     45     int ret;
     46     char str[MPS_TRACE_BUF_SIZE];
     47     va_list argp;
     48     va_start(argp, format);
     49     ret = mbedtls_vsnprintf(str, MPS_TRACE_BUF_SIZE, format, argp);
     50     va_end(argp);
     51 
     52     if (ret >= 0 && ret < MPS_TRACE_BUF_SIZE) {
     53         str[ret] = '\0';
     54         mbedtls_printf("[%d|L%d]: %s\n", id, line, str);
     55     }
     56 }
     57 
     58 int mbedtls_mps_trace_get_depth()
     59 {
     60     return trace_depth;
     61 }
     62 void mbedtls_mps_trace_dec_depth()
     63 {
     64     trace_depth--;
     65 }
     66 void mbedtls_mps_trace_inc_depth()
     67 {
     68     trace_depth++;
     69 }
     70 
     71 void mbedtls_mps_trace_color(int id)
     72 {
     73     if (id > (int) (sizeof(colors) / sizeof(*colors))) {
     74         return;
     75     }
     76     printf("%s", colors[id]);
     77 }
     78 
     79 void mbedtls_mps_trace_indent(int level, mbedtls_mps_trace_type ty)
     80 {
     81     if (level > 0) {
     82         while (--level) {
     83             printf("|  ");
     84         }
     85 
     86         printf("|  ");
     87     }
     88 
     89     switch (ty) {
     90         case MBEDTLS_MPS_TRACE_TYPE_COMMENT:
     91             mbedtls_printf("@ ");
     92             break;
     93 
     94         case MBEDTLS_MPS_TRACE_TYPE_CALL:
     95             mbedtls_printf("+--> ");
     96             break;
     97 
     98         case MBEDTLS_MPS_TRACE_TYPE_ERROR:
     99             mbedtls_printf("E ");
    100             break;
    101 
    102         case MBEDTLS_MPS_TRACE_TYPE_RETURN:
    103             mbedtls_printf("< ");
    104             break;
    105 
    106         default:
    107             break;
    108     }
    109 }
    110 
    111 #endif /* MBEDTLS_MPS_ENABLE_TRACE */
    112 #endif /* MBEDTLS_SSL_PROTO_TLS1_3 */