+
+LTTNG_HIDDEN
+int lttng_directory_handle_open_file_as_user(
+ const struct lttng_directory_handle *handle,
+ const char *filename,
+ int flags, mode_t mode,
+ const struct lttng_credentials *creds)
+{
+ int ret;
+
+ if (!creds) {
+ /* Run as current user. */
+ ret = lttng_directory_handle_open(handle, filename, flags,
+ mode);
+ } else {
+ ret = _run_as_open(handle, filename, flags, mode,
+ creds->uid, creds->gid);
+ }
+ return ret;
+}
+
+LTTNG_HIDDEN
+int lttng_directory_handle_open_file(
+ const struct lttng_directory_handle *handle,
+ const char *filename,
+ int flags, mode_t mode)
+{
+ return lttng_directory_handle_open_file_as_user(handle, filename, flags,
+ mode, NULL);
+}
+
+LTTNG_HIDDEN
+int lttng_directory_handle_unlink_file_as_user(
+ const struct lttng_directory_handle *handle,
+ const char *filename,
+ const struct lttng_credentials *creds)
+{
+ int ret;
+
+ if (!creds) {
+ /* Run as current user. */
+ ret = lttng_directory_handle_unlink(handle, filename);
+ } else {
+ ret = _run_as_unlink(handle, filename, creds->uid, creds->gid);
+ }
+ return ret;
+}
+
+LTTNG_HIDDEN
+int lttng_directory_handle_unlink_file(
+ const struct lttng_directory_handle *handle,
+ const char *filename)
+{
+ return lttng_directory_handle_unlink_file_as_user(handle,
+ filename, NULL);
+}