Port: replace opendir() by g_dir_open()
[babeltrace.git] / plugins / ctf / fs-sink / write.c
index 0b0cea42494caa9e28104d49670199f53c851328..9495787d2fc2b22b7967e248da64b857e4821227 100644 (file)
@@ -36,6 +36,7 @@
 #include <babeltrace/ctf-writer/stream-class.h>
 #include <babeltrace/ctf-writer/stream.h>
 #include <assert.h>
+#include <glib.h>
 
 #include <ctfcopytrace.h>
 
@@ -148,6 +149,14 @@ struct bt_ctf_stream_class *insert_new_stream_class(
                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);
 
@@ -190,36 +199,35 @@ enum fs_writer_stream_state *insert_new_stream_state(
 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;
 }
 
@@ -512,8 +520,8 @@ struct bt_ctf_stream *insert_new_stream(
        }
        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__);
This page took 0.02588 seconds and 4 git commands to generate.