From: Jérémie Galarneau Date: Fri, 27 Feb 2015 18:00:07 +0000 (-0500) Subject: CTF-IR: Support unnamed streams X-Git-Tag: v2.0.0-pre1~1344 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=3ea3311568f0b3703e71194a0bd2e899c876a26e CTF-IR: Support unnamed streams Signed-off-by: Jérémie Galarneau --- diff --git a/formats/ctf/ir/stream-class.c b/formats/ctf/ir/stream-class.c index 18ae57ea..116befab 100644 --- a/formats/ctf/ir/stream-class.c +++ b/formats/ctf/ir/stream-class.c @@ -51,7 +51,7 @@ struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name) int ret; struct bt_ctf_stream_class *stream_class = NULL; - if (!name || !strlen(name) || bt_ctf_validate_identifier(name)) { + if (name && bt_ctf_validate_identifier(name)) { goto error; } @@ -101,6 +101,21 @@ end: return name; } +int bt_ctf_stream_class_set_name(struct bt_ctf_stream_class *stream_class, + const char *name) +{ + int ret = 0; + + if (!stream_class || stream_class->frozen) { + ret = -1; + goto end; + } + + g_string_assign(stream_class->name, name); +end: + return ret; +} + struct bt_ctf_clock *bt_ctf_stream_class_get_clock( struct bt_ctf_stream_class *stream_class) { diff --git a/formats/ctf/writer/writer.c b/formats/ctf/writer/writer.c index 54eab39b..7b59d16c 100644 --- a/formats/ctf/writer/writer.c +++ b/formats/ctf/writer/writer.c @@ -290,10 +290,23 @@ int create_stream_file(struct bt_ctf_writer *writer, int fd; GString *filename = g_string_new(stream->stream_class->name->str); + if (stream->stream_class->name->len == 0) { + int64_t ret; + + ret = bt_ctf_stream_class_get_id(stream->stream_class); + if (ret < 0) { + fd = -1; + goto error; + } + + g_string_printf(filename, "stream_%" PRId64, ret); + } + g_string_append_printf(filename, "_%" PRIu32, stream->id); fd = openat(writer->trace_dir_fd, filename->str, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); +error: g_string_free(filename, TRUE); return fd; } diff --git a/include/babeltrace/ctf-ir/stream-class.h b/include/babeltrace/ctf-ir/stream-class.h index b52dcb78..c275b025 100644 --- a/include/babeltrace/ctf-ir/stream-class.h +++ b/include/babeltrace/ctf-ir/stream-class.h @@ -57,7 +57,7 @@ struct bt_ctf_clock; * - uint32_t id * - uint64_t timestamp * - * @param name Stream name. + * @param name Stream name, NULL to create an unnamed stream class. * * Returns an allocated stream class on success, NULL on error. */ @@ -73,6 +73,16 @@ extern struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name); extern const char *bt_ctf_stream_class_get_name( struct bt_ctf_stream_class *stream_class); +/* + * bt_ctf_stream_class_set_name: Set a stream class' name. + * + * @param stream_class Stream class. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_stream_class_set_name( + struct bt_ctf_stream_class *stream_class, const char *name); + /* * bt_ctf_stream_class_get_clock: get the clock associated with a stream class. *