From: Michael Jeanson Date: Fri, 7 Jul 2017 20:08:23 +0000 (+0000) Subject: Port: replace opendir() by g_dir_open() X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=bfe3fb96e15f218b2b48054752797fc4981c1fac Port: replace opendir() by g_dir_open() Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- 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; }