X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Ftext%2Ftext.c;h=e6631763122d8f944c9a6ea8d8bafad8098ebcda;hb=2b4c4a7ca098cb220ebbec83e05b7d1fa238c812;hp=78ddd4c58c401f65d2d66253604af810339826d5;hpb=7d61fa8e60df50c56bf2e27a4f27d205a608c7d2;p=babeltrace.git diff --git a/plugins/text/text.c b/plugins/text/text.c index 78ddd4c5..e6631763 100644 --- a/plugins/text/text.c +++ b/plugins/text/text.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -43,6 +44,7 @@ static const char *plugin_options[] = { + "color", "output-path", "debug-info-dir", "debug-info-target-prefix", @@ -52,6 +54,7 @@ const char *plugin_options[] = { "clock-seconds", "clock-date", "clock-gmt", + "verbose", "name-default", /* show/hide */ "name-payload", "name-context", @@ -289,6 +292,13 @@ end: return ret; } +static +void warn_wrong_color_param(struct text_component *text) +{ + fprintf(text->err, + "[warning] Accepted values for the \"color\" parameter are:\n \"always\", \"auto\", \"never\"\n"); +} + static enum bt_component_status apply_params(struct text_component *text, struct bt_value *params) @@ -317,6 +327,34 @@ enum bt_component_status apply_params(struct text_component *text, goto end; } /* Known parameters. */ + text->options.color = TEXT_COLOR_OPT_AUTO; + if (bt_value_map_has_key(params, "color")) { + struct bt_value *color_value; + const char *color; + + color_value = bt_value_map_get(params, "color"); + if (!color_value) { + goto end; + } + + ret = bt_value_string_get(color_value, &color); + if (ret) { + warn_wrong_color_param(text); + } else { + if (strcmp(color, "never") == 0) { + text->options.color = TEXT_COLOR_OPT_NEVER; + } else if (strcmp(color, "auto") == 0) { + text->options.color = TEXT_COLOR_OPT_AUTO; + } else if (strcmp(color, "always") == 0) { + text->options.color = TEXT_COLOR_OPT_ALWAYS; + } else { + warn_wrong_color_param(text); + } + } + + bt_put(color_value); + } + ret = apply_one_string("output-path", params, &text->options.output_path); @@ -380,6 +418,13 @@ enum bt_component_status apply_params(struct text_component *text, } text->options.clock_gmt = value; + value = false; /* Default. */ + ret = apply_one_bool("verbose", params, &value, NULL); + if (ret != BT_COMPONENT_STATUS_OK) { + goto end; + } + text->options.verbose = value; + /* Names. */ ret = apply_one_string("name-default", params, &str); if (ret != BT_COMPONENT_STATUS_OK) { @@ -603,6 +648,42 @@ end: return ret; } +static +void set_use_colors(struct text_component *text) +{ + switch (text->options.color) { + case TEXT_COLOR_OPT_ALWAYS: + text->use_colors = true; + break; + case TEXT_COLOR_OPT_AUTO: + text->use_colors = text->out == stdout && + bt_common_colors_supported(); + break; + case TEXT_COLOR_OPT_NEVER: + text->use_colors = false; + break; + } +} + +static +void init_stream_packet_context_quarks(void) +{ + stream_packet_context_quarks[Q_TIMESTAMP_BEGIN] = + g_quark_from_string("timestamp_begin"); + stream_packet_context_quarks[Q_TIMESTAMP_BEGIN] = + g_quark_from_string("timestamp_begin"); + stream_packet_context_quarks[Q_TIMESTAMP_END] = + g_quark_from_string("timestamp_end"); + stream_packet_context_quarks[Q_EVENTS_DISCARDED] = + g_quark_from_string("events_discarded"); + stream_packet_context_quarks[Q_CONTENT_SIZE] = + g_quark_from_string("content_size"); + stream_packet_context_quarks[Q_PACKET_SIZE] = + g_quark_from_string("packet_size"); + stream_packet_context_quarks[Q_PACKET_SEQ_NUM] = + g_quark_from_string("packet_seq_num"); +} + static enum bt_component_status text_component_init( struct bt_component *component, struct bt_value *params, @@ -630,10 +711,15 @@ enum bt_component_status text_component_init( goto error; } + set_use_colors(text); + ret = bt_component_set_private_data(component, text); if (ret != BT_COMPONENT_STATUS_OK) { goto error; } + + init_stream_packet_context_quarks(); + end: return ret; error: @@ -651,4 +737,3 @@ BT_PLUGIN_SINK_COMPONENT_CLASS_INIT_METHOD(text, text_component_init); BT_PLUGIN_SINK_COMPONENT_CLASS_DESTROY_METHOD(text, destroy_text); BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(text, "Formats CTF-IR to text. Formerly known as ctf-text."); -