#include "tmpfile-util-label.h"
#include "tmpfile-util.h"
-int fopen_temporary_label(
+int fopen_temporary_at_label(
+ int dir_fd,
const char *target,
const char *path,
FILE **f,
int r;
+ assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
assert(path);
- r = mac_selinux_create_file_prepare(target, S_IFREG);
+ r = mac_selinux_create_file_prepare_at(dir_fd, target, S_IFREG);
if (r < 0)
return r;
- r = fopen_temporary(path, f, temp_path);
+ r = fopen_temporary_at(dir_fd, path, f, temp_path);
mac_selinux_create_file_clear();
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
+#include <fcntl.h>
#include <stdio.h>
/* These functions are split out of tmpfile-util.h (and not for example just flags to the functions they
* wrap) in order to optimize linking: this way, -lselinux is needed only for the callers of these functions
* that need selinux, but not for all. */
-int fopen_temporary_label(const char *target, const char *path, FILE **f, char **temp_path);
+int fopen_temporary_at_label(int dir_fd, const char *target, const char *path, FILE **f, char **temp_path);
+static inline int fopen_temporary_label(const char *target, const char *path, FILE **f, char **temp_path) {
+ return fopen_temporary_at_label(AT_FDCWD, target, path, f, temp_path);
+}