#include <babeltrace2/babeltrace.h>
#include "compat/bitfield.h"
#include "common/common.h"
+#include "common/uuid.h"
#include "compat/time.h"
#include "common/assert.h"
#include <inttypes.h>
static
int print_field(struct pretty_component *pretty,
- const bt_field *field, bool print_names,
- GQuark *filters_fields, int filter_array_len);
+ const bt_field *field, bool print_names);
static
void print_name_equal(struct pretty_component *pretty, const char *name)
{
if (pretty->use_colors) {
- g_string_append_printf(pretty->string, "%s%s%s = ", COLOR_NAME,
- name, COLOR_RST);
+ g_string_append(pretty->string, COLOR_NAME);
+ g_string_append(pretty->string, name);
+ g_string_append(pretty->string, COLOR_RST);
} else {
- g_string_append_printf(pretty->string, "%s = ", name);
+ g_string_append(pretty->string, name);
}
+ g_string_append(pretty->string, " = ");
}
static
void print_field_name_equal(struct pretty_component *pretty, const char *name)
{
if (pretty->use_colors) {
- g_string_append_printf(pretty->string, "%s%s%s = ",
- COLOR_FIELD_NAME, name, COLOR_RST);
+ g_string_append(pretty->string, COLOR_FIELD_NAME);
+ g_string_append(pretty->string, name);
+ g_string_append(pretty->string, COLOR_RST);
} else {
- g_string_append_printf(pretty->string, "%s = ", name);
- }
+ g_string_append(pretty->string, name);
+}
+ g_string_append(pretty->string, " = ");
}
static
uint64_t cycles;
cycles = bt_clock_snapshot_get_value(clock_snapshot);
- g_string_append_printf(pretty->string, "%020" PRIu64, cycles);
+ bt_common_g_string_append_printf(pretty->string, "%020" PRIu64, cycles);
if (update_last) {
if (pretty->last_cycles_timestamp != -1ULL) {
}
/* Print time in HH:MM:SS.ns */
- g_string_append_printf(pretty->string,
+ bt_common_g_string_append_printf(pretty->string,
"%02d:%02d:%02d.%09" PRIu64, tm.tm_hour, tm.tm_min,
tm.tm_sec, ts_nsec_abs);
goto end;
}
seconds:
- g_string_append_printf(pretty->string, "%s%" PRId64 ".%09" PRIu64,
+ bt_common_g_string_append_printf(pretty->string, "%s%" PRId64 ".%09" PRIu64,
is_negative ? "-" : "", ts_sec_abs, ts_nsec_abs);
end:
return;
g_string_append(pretty->string,
"+??????????\?\?"); /* Not a trigraph. */
} else {
- g_string_append_printf(pretty->string,
+ bt_common_g_string_append_printf(pretty->string,
"+%012" PRIu64, pretty->delta_cycles);
}
} else {
delta = pretty->delta_real_timestamp;
delta_sec = delta / NSEC_PER_SEC;
delta_nsec = delta % NSEC_PER_SEC;
- g_string_append_printf(pretty->string,
+ bt_common_g_string_append_printf(pretty->string,
"+%" PRIu64 ".%09" PRIu64,
delta_sec, delta_nsec);
} else {
bool print_names = pretty->options.print_header_field_names;
int ret = 0;
const bt_event_class *event_class = NULL;
- const bt_stream_class *stream_class = NULL;
- const bt_trace_class *trace_class = NULL;
- const bt_packet *packet = NULL;
const bt_stream *stream = NULL;
const bt_trace *trace = NULL;
const bt_event *event = bt_message_event_borrow_event_const(event_msg);
+ const char *ev_name;
int dom_print = 0;
bt_property_availability prop_avail;
event_class = bt_event_borrow_class_const(event);
- stream_class = bt_event_class_borrow_stream_class_const(event_class);
- trace_class = bt_stream_class_borrow_trace_class_const(stream_class);
- packet = bt_event_borrow_packet_const(event);
- stream = bt_packet_borrow_stream_const(packet);
+ stream = bt_event_borrow_stream_const(event);
trace = bt_stream_borrow_trace_const(stream);
ret = print_event_timestamp(pretty, event_msg, &pretty->start_line);
if (ret) {
if (pretty->options.print_trace_hostname_field) {
const bt_value *hostname_str;
- hostname_str = bt_trace_class_borrow_environment_entry_value_by_name_const(
- trace_class, "hostname");
+ hostname_str = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace, "hostname");
if (hostname_str) {
const char *str;
if (pretty->options.print_trace_domain_field) {
const bt_value *domain_str;
- domain_str = bt_trace_class_borrow_environment_entry_value_by_name_const(
- trace_class, "domain");
+ domain_str = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace, "domain");
if (domain_str) {
const char *str;
if (pretty->options.print_trace_procname_field) {
const bt_value *procname_str;
- procname_str = bt_trace_class_borrow_environment_entry_value_by_name_const(
- trace_class, "procname");
+ procname_str = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace, "procname");
if (procname_str) {
const char *str;
if (pretty->options.print_trace_vpid_field) {
const bt_value *vpid_value;
- vpid_value = bt_trace_class_borrow_environment_entry_value_by_name_const(
- trace_class, "vpid");
+ vpid_value = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace, "vpid");
if (vpid_value) {
int64_t value;
} else if (dom_print) {
g_string_append(pretty->string, ":");
}
- value = bt_value_signed_integer_get(vpid_value);
- g_string_append_printf(pretty->string,
+ value = bt_value_integer_signed_get(vpid_value);
+ bt_common_g_string_append_printf(pretty->string,
"(%" PRId64 ")", value);
dom_print = 1;
}
}
g_string_append(pretty->string, log_level_str);
- g_string_append_printf(
+ bt_common_g_string_append_printf(
pretty->string, " (%d)", (int) log_level);
dom_print = 1;
}
if (print_names) {
print_name_equal(pretty, "name");
}
+ ev_name = bt_event_class_get_name(event_class);
if (pretty->use_colors) {
- g_string_append(pretty->string, COLOR_EVENT_NAME);
+ if (ev_name) {
+ g_string_append(pretty->string, COLOR_EVENT_NAME);
+ } else {
+ g_string_append(pretty->string, COLOR_UNKNOWN);
+ }
+ }
+ if (ev_name) {
+ g_string_append(pretty->string, ev_name);
+ } else {
+ g_string_append(pretty->string, "<unknown>");
}
- g_string_append(pretty->string, bt_event_class_get_name(event_class));
if (pretty->use_colors) {
g_string_append(pretty->string, COLOR_RST);
}
ft_type = bt_field_get_class_type(field);
if (ft_type == BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER ||
ft_type == BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION) {
- v.u = bt_field_unsigned_integer_get_value(field);
+ v.u = bt_field_integer_unsigned_get_value(field);
} else {
- v.s = bt_field_signed_integer_get_value(field);
+ v.s = bt_field_integer_signed_get_value(field);
}
if (pretty->use_colors) {
g_string_append(pretty->string, "0b");
_bt_safe_lshift(v.u, 64 - len);
for (bitnr = 0; bitnr < len; bitnr++) {
- g_string_append_printf(pretty->string, "%u", (v.u & (1ULL << 63)) ? 1 : 0);
+ bt_common_g_string_append_printf(pretty->string, "%u", (v.u & (1ULL << 63)) ? 1 : 0);
_bt_safe_lshift(v.u, 1);
}
break;
}
}
- g_string_append_printf(pretty->string, "0%" PRIo64, v.u);
+ bt_common_g_string_append_printf(pretty->string, "0%" PRIo64, v.u);
break;
}
case BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL:
if (ft_type == BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER ||
ft_type == BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION) {
- g_string_append_printf(pretty->string, "%" PRIu64, v.u);
+ bt_common_g_string_append_printf(pretty->string, "%" PRIu64, v.u);
} else {
- g_string_append_printf(pretty->string, "%" PRId64, v.s);
+ bt_common_g_string_append_printf(pretty->string, "%" PRId64, v.s);
}
break;
case BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_HEXADECIMAL:
v.u &= ((uint64_t) 1 << rounded_len) - 1;
}
- g_string_append_printf(pretty->string, "0x%" PRIX64, v.u);
+ bt_common_g_string_append_printf(pretty->string, "0x%" PRIX64, v.u);
break;
}
default:
break;
default:
/* Unhandled control-sequence, print as hex. */
- g_string_append_printf(pretty->string, "\\x%02x", str[i]);
+ bt_common_g_string_append_printf(pretty->string, "\\x%02x", str[i]);
break;
}
}
switch (bt_field_get_class_type(field)) {
case BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION:
- ret = bt_field_unsigned_enumeration_get_mapping_labels(field,
+ ret = bt_field_enumeration_unsigned_get_mapping_labels(field,
&label_array, &label_count);
break;
case BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION:
- ret = bt_field_signed_enumeration_get_mapping_labels(field,
+ ret = bt_field_enumeration_signed_get_mapping_labels(field,
&label_array, &label_count);
break;
default:
return ret;
}
-static
-int filter_field_name(struct pretty_component *pretty, const char *field_name,
- GQuark *filter_fields, int filter_array_len)
-{
- int i;
- GQuark field_quark = g_quark_try_string(field_name);
-
- if (!field_quark || pretty->options.verbose) {
- return 1;
- }
-
- for (i = 0; i < filter_array_len; i++) {
- if (field_quark == filter_fields[i]) {
- return 0;
- }
- }
- return 1;
-}
-
static
int print_struct_field(struct pretty_component *pretty,
const bt_field *_struct,
const bt_field_class *struct_class,
- uint64_t i, bool print_names, uint64_t *nr_printed_fields,
- GQuark *filter_fields, int filter_array_len)
+ uint64_t i, bool print_names, uint64_t *nr_printed_fields)
{
int ret = 0;
const char *field_name;
struct_class, i);
field_name = bt_field_class_structure_member_get_name(member);
- if (filter_fields && !filter_field_name(pretty, field_name,
- filter_fields, filter_array_len)) {
- ret = 0;
- goto end;
- }
-
if (*nr_printed_fields > 0) {
g_string_append(pretty->string, ", ");
} else {
if (print_names) {
print_field_name_equal(pretty, field_name);
}
- ret = print_field(pretty, field, print_names, NULL, 0);
+ ret = print_field(pretty, field, print_names);
*nr_printed_fields += 1;
end:
static
int print_struct(struct pretty_component *pretty,
- const bt_field *_struct, bool print_names,
- GQuark *filter_fields, int filter_array_len)
+ const bt_field *_struct, bool print_names)
{
int ret = 0;
const bt_field_class *struct_class = NULL;
nr_printed_fields = 0;
for (i = 0; i < nr_fields; i++) {
ret = print_struct_field(pretty, _struct, struct_class, i,
- print_names, &nr_printed_fields, filter_fields,
- filter_array_len);
+ print_names, &nr_printed_fields);
if (ret != 0) {
goto end;
}
g_string_append(pretty->string, " ");
}
if (print_names) {
- g_string_append_printf(pretty->string, "[%" PRIu64 "] = ", i);
+ bt_common_g_string_append_printf(pretty->string, "[%" PRIu64 "] = ", i);
}
field = bt_field_array_borrow_element_field_by_index_const(array, i);
BT_ASSERT(field);
- return print_field(pretty, field, print_names, NULL, 0);
+ return print_field(pretty, field, print_names);
}
static
g_string_append(pretty->string, " ");
}
if (print_names) {
- g_string_append_printf(pretty->string, "[%" PRIu64 "] = ", i);
+ bt_common_g_string_append_printf(pretty->string, "[%" PRIu64 "] = ", i);
}
field = bt_field_array_borrow_element_field_by_index_const(seq, i);
BT_ASSERT(field);
- return print_field(pretty, field, print_names, NULL, 0);
+ return print_field(pretty, field, print_names);
}
static
// TODO: find tag's name using field path
// print_field_name_equal(pretty, tag_choice);
}
- ret = print_field(pretty, field, print_names, NULL, 0);
+ ret = print_field(pretty, field, print_names);
if (ret != 0) {
goto end;
}
static
int print_field(struct pretty_component *pretty,
- const bt_field *field, bool print_names,
- GQuark *filter_fields, int filter_array_len)
+ const bt_field *field, bool print_names)
{
bt_field_class_type class_id;
if (pretty->use_colors) {
g_string_append(pretty->string, COLOR_NUMBER_VALUE);
}
- g_string_append_printf(pretty->string, "%g", v);
+ bt_common_g_string_append_printf(pretty->string, "%g", v);
if (pretty->use_colors) {
g_string_append(pretty->string, COLOR_RST);
}
return 0;
}
case BT_FIELD_CLASS_TYPE_STRUCTURE:
- return print_struct(pretty, field, print_names, filter_fields,
- filter_array_len);
- case BT_FIELD_CLASS_TYPE_VARIANT:
+ return print_struct(pretty, field, print_names);
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR:
return print_variant(pretty, field, print_names);
case BT_FIELD_CLASS_TYPE_STATIC_ARRAY:
return print_array(pretty, field, print_names);
packet = bt_event_borrow_packet_const(event);
if (!packet) {
- ret = -1;
goto end;
}
main_field = bt_packet_borrow_context_field_const(packet);
print_name_equal(pretty, "stream.packet.context");
}
ret = print_field(pretty, main_field,
- pretty->options.print_context_field_names,
- stream_packet_context_quarks,
- STREAM_PACKET_CONTEXT_QUARKS_LEN);
+ pretty->options.print_context_field_names);
end:
return ret;
print_name_equal(pretty, "stream.event.context");
}
ret = print_field(pretty, main_field,
- pretty->options.print_context_field_names, NULL, 0);
+ pretty->options.print_context_field_names);
end:
return ret;
print_name_equal(pretty, "event.context");
}
ret = print_field(pretty, main_field,
- pretty->options.print_context_field_names, NULL, 0);
+ pretty->options.print_context_field_names);
end:
return ret;
print_name_equal(pretty, "event.fields");
}
ret = print_field(pretty, main_field,
- pretty->options.print_payload_field_names, NULL, 0);
+ pretty->options.print_payload_field_names);
end:
return ret;
}
/* Trace UUID */
- trace_uuid = bt_trace_class_get_uuid(
- bt_trace_borrow_class_const(trace));
+ trace_uuid = bt_trace_get_uuid(trace);
/* Format message */
g_string_assign(pretty->string, "");
init_msg = "Tracer discarded";
}
- g_string_append_printf(pretty->string,
+ bt_common_g_string_append_printf(pretty->string,
"%s%sWARNING%s%s: %s ",
bt_common_color_fg_yellow(),
bt_common_color_bold(),
bt_common_color_fg_yellow(), init_msg);
if (count == UINT64_C(-1)) {
- g_string_append_printf(pretty->string, "%ss", elem_type);
+ bt_common_g_string_append_printf(pretty->string, "%ss", elem_type);
} else {
- g_string_append_printf(pretty->string,
+ bt_common_g_string_append_printf(pretty->string,
"%" PRIu64 " %s%s", count, elem_type,
count == 1 ? "" : "s");
}
g_string_append(pretty->string, "(unknown time range)");
}
- g_string_append_printf(pretty->string, " in trace \"%s\" ", trace_name);
+ bt_common_g_string_append_printf(pretty->string, " in trace \"%s\" ", trace_name);
if (trace_uuid) {
- g_string_append_printf(pretty->string,
- "(UUID: %02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x) ",
- trace_uuid[0],
- trace_uuid[1],
- trace_uuid[2],
- trace_uuid[3],
- trace_uuid[4],
- trace_uuid[5],
- trace_uuid[6],
- trace_uuid[7],
- trace_uuid[8],
- trace_uuid[9],
- trace_uuid[10],
- trace_uuid[11],
- trace_uuid[12],
- trace_uuid[13],
- trace_uuid[14],
- trace_uuid[15]);
+ bt_common_g_string_append_printf(pretty->string,
+ "(UUID: " BT_UUID_FMT ") ",
+ BT_UUID_FMT_VALUES(trace_uuid));
} else {
g_string_append(pretty->string, "(no UUID) ");
}
- g_string_append_printf(pretty->string,
+ bt_common_g_string_append_printf(pretty->string,
"within stream \"%s\" (stream class ID: %" PRIu64 ", ",
stream_name, stream_class_id);
if (stream_id >= 0) {
- g_string_append_printf(pretty->string,
+ bt_common_g_string_append_printf(pretty->string,
"stream ID: %" PRIu64, stream_id);
} else {
g_string_append(pretty->string, "no stream ID");
}
- g_string_append_printf(pretty->string, ").%s\n",
+ bt_common_g_string_append_printf(pretty->string, ").%s\n",
bt_common_color_reset());
/*