#include <babeltrace/ctf-writer/stream-class.h>
#include <babeltrace/ctf-writer/stream.h>
#include <assert.h>
+#include <glib.h>
#include <ctfcopytrace.h>
goto error;
}
+ ret = bt_ctf_trace_add_stream_class(writer_trace, writer_stream_class);
+ if (ret) {
+ fprintf(writer_component->err,
+ "[error] %s in %s:%d\n", __func__, __FILE__,
+ __LINE__);
+ goto error;
+ }
+
g_hash_table_insert(fs_writer->stream_class_map,
(gpointer) stream_class, writer_stream_class);
static
bool valid_single_trace_path(const char *path)
{
- int n = 0;
- struct dirent *d;
- DIR *dir = opendir(path);
- int ret;
+ GError *error = NULL;
+ GDir *dir = NULL;
+ int ret = 0;
- /* non-existant directory */
- if (!dir) {
- ret = 0;
- goto end;
- }
+ dir = g_dir_open(path, 0, &error);
- while ((d = readdir(dir)) != NULL) {
- if (++n > 2) {
- break;
+ /* Non-existent directory. */
+ if (!dir) {
+ /* For any other error, return an error */
+ if (error->code != G_FILE_ERROR_NOENT) {
+ ret = -1;
}
- }
-
- ret = closedir(dir);
- if (ret) {
- perror("closedir");
goto end;
}
- if (n <= 2) {
- ret = 0;
- } else {
+ /* g_dir_read_name skips "." and "..", error out on first result */
+ while (g_dir_read_name(dir) != NULL) {
ret = -1;
+ break;
}
end:
+ if (dir) {
+ g_dir_close(dir);
+ }
+ if (error) {
+ g_error_free(error);
+ }
+
return ret;
}
}
bt_get(writer_stream_class);
- writer_stream = bt_ctf_writer_create_stream(ctf_writer,
- writer_stream_class);
+ writer_stream = bt_ctf_stream_create(writer_stream_class,
+ bt_ctf_stream_get_name(stream));
if (!writer_stream) {
fprintf(writer_component->err, "[error] %s in %s:%d\n",
__func__, __FILE__, __LINE__);