* 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);
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);
* included in all copies or substantial portions of the Software.
*/
+#include <unistd.h>
+
/* struct bt_context is opaque to the user */
struct bt_context;
+struct stream_pos;
/*
* bt_context_create : create a Babeltrace context
/*
* bt_context_add_trace : Add a trace by path to the context
*
- * Open a trace
+ * Open a trace. Parameter packet_seek can be NULL to use the default
+ * packet_seek handle of the format.
*
* Return: the trace handle id (>= 0) on success, a negative
* value on error.
*/
int bt_context_add_trace(struct bt_context *ctx, const char *path,
- const char *format);
+ const char *format,
+ void (*packet_seek)(struct stream_pos *pos,
+ size_t offset, int whence));
/*
* bt_context_remove_trace: Remove a trace from the context.
}
int bt_context_add_trace(struct bt_context *ctx, const char *path,
- const char *format_name)
+ const char *format_name,
+ void (*packet_seek)(struct stream_pos *pos,
+ size_t offset, int whence))
{
struct trace_descriptor *td;
struct format *fmt;
ret = -1;
goto end;
}
- td = fmt->open_trace(path, O_RDONLY, NULL, NULL);
+ td = fmt->open_trace(path, O_RDONLY, packet_seek, NULL);
if (!td) {
fprintf(stderr, "[error] [Context] Cannot open_trace of the format %s .\n\n",
path);