#include <babeltrace/format.h>
#include <babeltrace/context.h>
#include <babeltrace/ctf/types.h>
+#include <babeltrace/ctf/events.h>
#include <babeltrace/ctf-text/types.h>
#include <babeltrace/iterator.h>
#include <popt.h>
* bt_context_add_traces_recursive: Open a trace recursively
*
* Find each trace present in the subdirectory starting from the given
- * path, and add them to the context.
+ * path, and add them to the context. The packet_seek parameter can be
+ * NULL: this specify to use the default format packet_seek.
*
* Return: 0 on success, nonzero on failure.
* Unable to open toplevel: failure.
* Unable to open some subdirectory or file: warn and continue;
*/
int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path,
- const char *format_str)
+ const char *format_str,
+ void (*packet_seek)(struct stream_pos *pos,
+ size_t offset, int whence))
{
FTS *tree;
FTSENT *node;
}
trace_id = bt_context_add_trace(ctx,
- node->fts_accpath, format_str);
+ node->fts_accpath, format_str,
+ packet_seek);
if (trace_id < 0) {
fprintf(stderr, "[error] [Context] opening trace \"%s\" from %s "
"for reading.\n", node->fts_accpath, path);
struct bt_context *ctx)
{
struct bt_iter *iter;
- struct ctf_stream *stream;
- struct ctf_stream_event *event;
struct ctf_text_stream_pos *sout;
struct bt_iter_pos begin_pos;
+ struct bt_ctf_event *ctf_event;
int ret;
sout = container_of(td_write, struct ctf_text_stream_pos,
ret = -1;
goto error_iter;
}
- while (bt_iter_read_event(iter, &stream, &event) == 0) {
- ret = sout->parent.event_cb(&sout->parent, stream);
+ while ((ctf_event = bt_iter_read_ctf_event(iter))) {
+ ret = sout->parent.event_cb(&sout->parent, ctf_event->stream);
if (ret) {
fprintf(stderr, "[error] Writing event failed.\n");
goto end;
ctx = bt_context_create();
ret = bt_context_add_traces_recursive(ctx, opt_input_path,
- opt_input_format);
+ opt_input_format, NULL);
if (ret) {
fprintf(stderr, "[error] opening trace \"%s\" for reading.\n\n",
opt_input_path);