+/*
+ * Make sure the output path is valid for a single trace: either it does
+ * not exists or it is empty.
+ *
+ * Return 0 if the path is valid, -1 otherwise.
+ */
+static
+bool valid_single_trace_path(const char *path)
+{
+ GError *error = NULL;
+ GDir *dir = NULL;
+ int ret = 0;
+
+ dir = g_dir_open(path, 0, &error);
+
+ /* Non-existent directory. */
+ if (!dir) {
+ /* For any other error, return an error */
+ if (error->code != G_FILE_ERROR_NOENT) {
+ ret = -1;
+ }
+ goto end;
+ }
+
+ /* 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;
+}
+