Make lttng_directory_handle reference countable
[lttng-tools.git] / src / common / utils.c
index 2e07d4ff0b6d366268755b7969dab0d58199385e..f3cb9e0306e599a3b7aef48bce1812cfc7d6a03a 100644 (file)
@@ -682,21 +682,22 @@ LTTNG_HIDDEN
 int utils_mkdir(const char *path, mode_t mode, int uid, int gid)
 {
        int ret;
-       struct lttng_directory_handle handle;
+       struct lttng_directory_handle *handle;
        const struct lttng_credentials creds = {
                .uid = (uid_t) uid,
                .gid = (gid_t) gid,
        };
 
-       ret = lttng_directory_handle_init(&handle, NULL);
-       if (ret) {
+       handle = lttng_directory_handle_create(NULL);
+       if (!handle) {
+               ret = -1;
                goto end;
        }
        ret = lttng_directory_handle_create_subdirectory_as_user(
-                       &handle, path, mode,
+                       handle, path, mode,
                        (uid >= 0 || gid >= 0) ? &creds : NULL);
-       lttng_directory_handle_fini(&handle);
 end:
+       lttng_directory_handle_put(handle);
        return ret;
 }
 
@@ -710,21 +711,22 @@ LTTNG_HIDDEN
 int utils_mkdir_recursive(const char *path, mode_t mode, int uid, int gid)
 {
        int ret;
-       struct lttng_directory_handle handle;
+       struct lttng_directory_handle *handle;
        const struct lttng_credentials creds = {
                .uid = (uid_t) uid,
                .gid = (gid_t) gid,
        };
 
-       ret = lttng_directory_handle_init(&handle, NULL);
-       if (ret) {
+       handle = lttng_directory_handle_create(NULL);
+       if (!handle) {
+               ret = -1;
                goto end;
        }
        ret = lttng_directory_handle_create_subdirectory_recursive_as_user(
-                       &handle, path, mode,
+                       handle, path, mode,
                        (uid >= 0 || gid >= 0) ? &creds : NULL);
-       lttng_directory_handle_fini(&handle);
 end:
+       lttng_directory_handle_put(handle);
        return ret;
 }
 
@@ -1353,15 +1355,16 @@ LTTNG_HIDDEN
 int utils_recursive_rmdir(const char *path)
 {
        int ret;
-       struct lttng_directory_handle handle;
+       struct lttng_directory_handle *handle;
 
-       ret = lttng_directory_handle_init(&handle, NULL);
-       if (ret) {
+       handle = lttng_directory_handle_create(NULL);
+       if (!handle) {
+               ret = -1;
                goto end;
        }
-       ret = lttng_directory_handle_remove_subdirectory(&handle, path);
-       lttng_directory_handle_fini(&handle);
+       ret = lttng_directory_handle_remove_subdirectory(handle, path);
 end:
+       lttng_directory_handle_put(handle);
        return ret;
 }
 
This page took 0.02482 seconds and 5 git commands to generate.