From: Mathieu Desnoyers Date: Tue, 22 Nov 2011 09:34:31 +0000 (+0100) Subject: Add "-n trace" option to print trace name X-Git-Tag: v0.8~11 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=82662ad4362f791f9cd7026652f60708923554f4 Add "-n trace" option to print trace name Signed-off-by: Mathieu Desnoyers --- diff --git a/converter/babeltrace.c b/converter/babeltrace.c index 22743c96..bac8a85f 100644 --- a/converter/babeltrace.c +++ b/converter/babeltrace.c @@ -97,8 +97,9 @@ static void usage(FILE *fp) fprintf(fp, " (or set BABELTRACE_DEBUG environment variable)\n"); fprintf(fp, " -n, --names name1<,name2,...> Print field names.\n"); fprintf(fp, " Available field names:\n"); - fprintf(fp, " payload OR args OR arg\n"); - fprintf(fp, " all, scope, header, context OR ctx\n"); + fprintf(fp, " (payload OR args OR arg)\n"); + fprintf(fp, " all, scope, header, (context OR ctx)\n"); + fprintf(fp, " trace\n"); fprintf(fp, " (payload active by default)\n"); list_formats(fp); fprintf(fp, "\n"); @@ -125,6 +126,8 @@ static int get_names_args(poptContext *pc) opt_header_field_names = 1; else if (!strcmp(str, "payload") || !strcmp(str, "args") || !strcmp(str, "arg")) opt_payload_field_names = 1; + else if (!strcmp(str, "trace")) + opt_trace_name = 1; else { fprintf(stdout, "[error] unknown field name type %s\n", str); return -EINVAL; diff --git a/formats/ctf-text/ctf-text.c b/formats/ctf-text/ctf-text.c index 5879cf4f..9ad23012 100644 --- a/formats/ctf-text/ctf-text.c +++ b/formats/ctf-text/ctf-text.c @@ -38,7 +38,8 @@ int opt_all_field_names, opt_scope_field_names, opt_header_field_names, opt_context_field_names, - opt_payload_field_names; + opt_payload_field_names, + opt_trace_name; enum field_item { ITEM_SCOPE, @@ -186,6 +187,18 @@ int ctf_text_write_event(struct stream_pos *ppos, else fprintf(pos->fp, " "); } + if ((opt_trace_name || opt_all_field_names) && stream_class->trace->path[0] != '\0') { + set_field_names_print(pos, ITEM_HEADER); + if (pos->print_names) + fprintf(pos->fp, "trace = "); + + fprintf(pos->fp, "%s", stream_class->trace->path); + + if (pos->print_names) + fprintf(pos->fp, ", "); + else + fprintf(pos->fp, " "); + } set_field_names_print(pos, ITEM_HEADER); if (pos->print_names) fprintf(pos->fp, "name = "); diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index 9af3f453..8b9441fd 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -1167,6 +1167,8 @@ int ctf_open_trace_read(struct ctf_trace *td, const char *path, int flags, ret = -errno; goto error_dirfd; } + strncpy(td->path, path, PATH_MAX); + td->path[PATH_MAX - 1] = '\0'; /* * Keep the metadata file separate. diff --git a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c index 725235d1..82af10a1 100644 --- a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c +++ b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c @@ -1793,6 +1793,7 @@ int ctf_stream_visit(FILE *fd, int depth, struct ctf_node *node, if (trace->streams->len <= stream->stream_id) g_ptr_array_set_size(trace->streams, stream->stream_id + 1); g_ptr_array_index(trace->streams, stream->stream_id) = stream; + stream->trace = trace; return 0; diff --git a/include/babeltrace/babeltrace-internal.h b/include/babeltrace/babeltrace-internal.h index 78adefce..a329cc93 100644 --- a/include/babeltrace/babeltrace-internal.h +++ b/include/babeltrace/babeltrace-internal.h @@ -33,6 +33,7 @@ extern int opt_all_field_names, opt_scope_field_names, opt_header_field_names, opt_context_field_names, - opt_payload_field_names; + opt_payload_field_names, + opt_trace_name; #endif diff --git a/include/babeltrace/ctf-ir/metadata.h b/include/babeltrace/ctf-ir/metadata.h index b8835ec2..b9157567 100644 --- a/include/babeltrace/ctf-ir/metadata.h +++ b/include/babeltrace/ctf-ir/metadata.h @@ -102,6 +102,7 @@ struct ctf_trace { /* Heap of streams, ordered to always get the lowest timestam */ struct ptr_heap *stream_heap; + char path[PATH_MAX]; }; #define CTF_STREAM_SET_FIELD(ctf_stream, field) \