From bfe3fb96e15f218b2b48054752797fc4981c1fac Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Fri, 7 Jul 2017 20:08:23 +0000 Subject: [PATCH] Port: replace opendir() by g_dir_open() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- plugins/ctf/fs-sink/write.c | 39 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/plugins/ctf/fs-sink/write.c b/plugins/ctf/fs-sink/write.c index a0c9d7d9..9495787d 100644 --- a/plugins/ctf/fs-sink/write.c +++ b/plugins/ctf/fs-sink/write.c @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -198,37 +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; + + dir = g_dir_open(path, 0, &error); /* Non-existent directory. */ if (!dir) { - ret = 0; - goto end; - } - - while ((d = readdir(dir)) != NULL) { - /* Ignore "." and ".." directories. */ - if (++n > 2) { - break; + /* 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; } -- 2.34.1