From: Julien Desfossez Date: Mon, 27 Mar 2017 19:32:52 +0000 (-0400) Subject: Text: handle output file X-Git-Tag: v2.0.0-pre1~400 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=77986badaf402cb8f87a346402cda81041d6c4d9 Text: handle output file Signed-off-by: Julien Desfossez Signed-off-by: Jérémie Galarneau --- diff --git a/plugins/text/text.c b/plugins/text/text.c index 3e272762..78cdaab6 100644 --- a/plugins/text/text.c +++ b/plugins/text/text.c @@ -82,6 +82,14 @@ void destroy_text_data(struct text_component *text) { bt_put(text->input_iterator); (void) g_string_free(text->string, TRUE); + if (text->out != stdout) { + int ret; + + ret = fclose(text->out); + if (ret) { + perror("close output file"); + } + } g_free(text->options.output_path); g_free(text->options.debug_info_dir); g_free(text->options.debug_info_target_prefix); @@ -322,6 +330,28 @@ void warn_wrong_color_param(struct text_component *text) "[warning] Accepted values for the \"color\" parameter are:\n \"always\", \"auto\", \"never\"\n"); } +static +enum bt_component_status open_output_file(struct text_component *text) +{ + enum bt_component_status ret = BT_COMPONENT_STATUS_OK; + + if (!text->options.output_path) { + goto end; + } + + text->out = fopen(text->options.output_path, "w"); + if (!text->out) { + goto error; + } + + goto end; + +error: + ret = BT_COMPONENT_STATUS_ERROR; +end: + return ret; +} + static enum bt_component_status apply_params(struct text_component *text, struct bt_value *params) @@ -384,6 +414,10 @@ enum bt_component_status apply_params(struct text_component *text, if (ret != BT_COMPONENT_STATUS_OK) { goto end; } + ret = open_output_file(text); + if (ret != BT_COMPONENT_STATUS_OK) { + goto end; + } ret = apply_one_string("debug-info-dir", params,