lib: remove unused includes
[babeltrace.git] / src / lib / assert-cond.c
CommitLineData
1778c2a4
PP
1/*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright 2020 Philippe Proulx <pproulx@efficios.com>
5 */
6
7#define BT_LOG_TAG "LIB/ASSERT-COND"
8#include "lib/logging.h"
9
10#include <string.h>
11#include <stdarg.h>
12#include <glib.h>
13#include "common/assert.h"
1778c2a4
PP
14#include "assert-cond-base.h"
15
16static
17GString *format_cond_id(const char *cond_type, const char *func,
18 const char *id_suffix)
19{
20 static const char func_prefix[] = "bt_";
21 GString *id = g_string_new(NULL);
22 const char *src_ch;
23
24 BT_ASSERT(id);
25
26 /* Condition type */
27 BT_ASSERT(cond_type);
28 g_string_append_printf(id, "%s:", cond_type);
29
30 /* Function name: no prefix */
31 BT_ASSERT(func);
32 BT_ASSERT(strstr(func, func_prefix) == func);
33 src_ch = &func[strlen(func_prefix)];
34
35 /* Function name: `_` replaced with `-` */
36 for (; *src_ch; src_ch++) {
37 char dst_ch;
38
39 if (*src_ch == '_') {
40 dst_ch = '-';
41 } else {
42 dst_ch = *src_ch;
43 }
44
45 g_string_append_c(id, dst_ch);
46 }
47
48 /* Suffix */
49 BT_ASSERT(id_suffix);
50 g_string_append_printf(id, ":%s", id_suffix);
51
52 return id;
53}
54
1778c2a4
PP
55void bt_lib_assert_cond_failed(const char *cond_type, const char *func,
56 const char *id_suffix, const char *fmt, ...)
57{
58 va_list args;
59 GString *cond_id = format_cond_id(cond_type, func, id_suffix);
60
61 BT_ASSERT(cond_id);
62 BT_ASSERT_COND_MSG("Babeltrace 2 library %scondition not satisfied.",
63 cond_type);
64 BT_ASSERT_COND_MSG("------------------------------------------------------------------------");
65 BT_ASSERT_COND_MSG("Condition ID: `%s`.", cond_id->str);
66 g_string_free(cond_id, TRUE);
67 BT_ASSERT_COND_MSG("Function: %s().", func);
68 BT_ASSERT_COND_MSG("------------------------------------------------------------------------");
69 BT_ASSERT_COND_MSG("Error is:");
70 va_start(args, fmt);
71436ae4 71 bt_lib_log_v(__FILE__, __func__, __LINE__, BT_LOG_FATAL,
1778c2a4
PP
72 BT_LOG_TAG, fmt, &args);
73 va_end(args);
74 BT_ASSERT_COND_MSG("Aborting...");
75 bt_common_abort();
76}
This page took 0.040326 seconds and 4 git commands to generate.