X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Ftext%2Fpretty%2Fpretty.c;h=ece1f1e6e46db945709a8ce14651c01e1f2ed8d6;hb=c55a9f585da53ea54ac458155fac3cdec1779d47;hp=14f8560c108f96bded8c82b0ee2fec4369a6962d;hpb=0d8b4d8edb6b11ddd7f4e6adc77b9390a0db0b20;p=babeltrace.git diff --git a/plugins/text/pretty/pretty.c b/plugins/text/pretty/pretty.c index 14f8560c..ece1f1e6 100644 --- a/plugins/text/pretty/pretty.c +++ b/plugins/text/pretty/pretty.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -52,10 +53,7 @@ static const char *plugin_options[] = { "color", - "output-path", - "debug-info-dir", - "debug-info-target-prefix", - "debug-info-full-path", + "path", "no-delta", "clock-cycles", "clock-seconds", @@ -92,8 +90,6 @@ void destroy_pretty_data(struct pretty_component *pretty) } } g_free(pretty->options.output_path); - g_free(pretty->options.debug_info_dir); - g_free(pretty->options.debug_info_target_prefix); g_free(pretty); } @@ -132,38 +128,12 @@ enum bt_component_status handle_notification(struct pretty_component *pretty, { enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - if (!pretty) { - ret = BT_COMPONENT_STATUS_ERROR; - goto end; - } - - switch (bt_notification_get_type(notification)) { - case BT_NOTIFICATION_TYPE_PACKET_BEGIN: - break; - case BT_NOTIFICATION_TYPE_PACKET_END: - break; - case BT_NOTIFICATION_TYPE_EVENT: - { - struct bt_ctf_event *event = bt_notification_event_get_event( - notification); + assert(pretty); - if (!event) { - ret = BT_COMPONENT_STATUS_ERROR; - goto end; - } - ret = pretty_print_event(pretty, event); - bt_put(event); - if (ret != BT_COMPONENT_STATUS_OK) { - goto end; - } - break; - } - case BT_NOTIFICATION_TYPE_STREAM_END: - break; - default: - puts("Unhandled notification type"); + if (bt_notification_get_type(notification) == BT_NOTIFICATION_TYPE_EVENT) { + ret = pretty_print_event(pretty, notification); } -end: + return ret; } @@ -175,6 +145,10 @@ void pretty_port_connected( { struct bt_private_connection *connection; struct pretty_component *pretty; + static const enum bt_notification_type notif_types[] = { + BT_NOTIFICATION_TYPE_EVENT, + BT_NOTIFICATION_TYPE_SENTINEL, + }; pretty = bt_private_component_get_user_data(component); assert(pretty); @@ -182,7 +156,8 @@ void pretty_port_connected( connection = bt_private_port_get_private_connection(self_port); assert(connection); pretty->input_iterator = - bt_private_connection_create_notification_iterator(connection); + bt_private_connection_create_notification_iterator(connection, + notif_types); if (!pretty->input_iterator) { pretty->error = true; @@ -217,14 +192,20 @@ enum bt_component_status pretty_consume(struct bt_private_component *component) ret = BT_COMPONENT_STATUS_END; BT_PUT(pretty->input_iterator); goto end; - default: + case BT_NOTIFICATION_ITERATOR_STATUS_AGAIN: + ret = BT_COMPONENT_STATUS_AGAIN; + goto end; + case BT_NOTIFICATION_ITERATOR_STATUS_OK: break; + default: + ret = BT_COMPONENT_STATUS_ERROR; + goto end; } notification = bt_notification_iterator_get_notification(it); assert(notification); ret = handle_notification(pretty, notification); - pretty->processed_first_event = true; + end: bt_put(notification); return ret; @@ -254,7 +235,7 @@ end: } static -bool check_param_exists(const char *key, struct bt_value *object, void *data) +bt_bool check_param_exists(const char *key, struct bt_value *object, void *data) { struct pretty_component *pretty = data; struct bt_value *plugin_opt_map = pretty->plugin_opt_map; @@ -263,7 +244,7 @@ bool check_param_exists(const char *key, struct bt_value *object, void *data) fprintf(pretty->err, "[warning] Parameter \"%s\" unknown to \"text.pretty\" sink component\n", key); } - return true; + return BT_TRUE; } static @@ -306,12 +287,13 @@ enum bt_component_status apply_one_bool(const char *key, enum bt_component_status ret = BT_COMPONENT_STATUS_OK; struct bt_value *value = NULL; enum bt_value_status status; + bt_bool bool_val; value = bt_value_map_get(params, key); if (!value) { goto end; } - status = bt_value_bool_get(value, option); + status = bt_value_bool_get(value, &bool_val); switch (status) { case BT_VALUE_STATUS_OK: break; @@ -319,6 +301,7 @@ enum bt_component_status apply_one_bool(const char *key, ret = BT_COMPONENT_STATUS_ERROR; goto end; } + *option = (bool) bool_val; if (found) { *found = true; } @@ -412,9 +395,7 @@ enum bt_component_status apply_params(struct pretty_component *pretty, bt_put(color_value); } - ret = apply_one_string("output-path", - params, - &pretty->options.output_path); + ret = apply_one_string("path", params, &pretty->options.output_path); if (ret != BT_COMPONENT_STATUS_OK) { goto end; } @@ -423,27 +404,6 @@ enum bt_component_status apply_params(struct pretty_component *pretty, goto end; } - ret = apply_one_string("debug-info-dir", - params, - &pretty->options.debug_info_dir); - if (ret != BT_COMPONENT_STATUS_OK) { - goto end; - } - - ret = apply_one_string("debug-info-target-prefix", - params, - &pretty->options.debug_info_target_prefix); - if (ret != BT_COMPONENT_STATUS_OK) { - goto end; - } - - value = false; /* Default. */ - ret = apply_one_bool("debug-info-full-path", params, &value, NULL); - if (ret != BT_COMPONENT_STATUS_OK) { - goto end; - } - pretty->options.debug_info_full_path = value; - value = false; /* Default. */ ret = apply_one_bool("no-delta", params, &value, NULL); if (ret != BT_COMPONENT_STATUS_OK) { @@ -753,12 +713,22 @@ enum bt_component_status pretty_init( { enum bt_component_status ret; struct pretty_component *pretty = create_pretty(); + void *priv_port; if (!pretty) { ret = BT_COMPONENT_STATUS_NOMEM; goto end; } + priv_port = bt_private_component_sink_add_input_private_port(component, + "in", NULL); + if (!priv_port) { + ret = BT_COMPONENT_STATUS_NOMEM; + goto end; + } + + bt_put(priv_port); + pretty->out = stdout; pretty->err = stderr; @@ -774,7 +744,6 @@ enum bt_component_status pretty_init( } set_use_colors(pretty); - ret = bt_private_component_set_user_data(component, pretty); if (ret != BT_COMPONENT_STATUS_OK) { goto error;