mirror of
git://github.com/lxc/lxc
synced 2025-08-31 20:07:52 +00:00
file_utils: add open_at_same()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
@@ -670,6 +670,21 @@ int open_at(int dfd, const char *path, unsigned int o_flags,
|
|||||||
return move_fd(fd);
|
return move_fd(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int open_at_same(int fd_same, int dfd, const char *path, unsigned int o_flags,
|
||||||
|
unsigned int resolve_flags, mode_t mode)
|
||||||
|
{
|
||||||
|
__do_close int fd = -EBADF;
|
||||||
|
|
||||||
|
fd = open_at(dfd, path, o_flags, resolve_flags, mode);
|
||||||
|
if (fd < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
if (!same_file_lax(fd_same, fd))
|
||||||
|
return ret_errno(EINVAL);
|
||||||
|
|
||||||
|
return move_fd(fd);
|
||||||
|
}
|
||||||
|
|
||||||
int fd_make_nonblocking(int fd)
|
int fd_make_nonblocking(int fd)
|
||||||
{
|
{
|
||||||
int flags;
|
int flags;
|
||||||
|
@@ -87,6 +87,9 @@ __hidden extern bool exists_dir_at(int dir_fd, const char *path);
|
|||||||
__hidden extern bool exists_file_at(int dir_fd, const char *path);
|
__hidden extern bool exists_file_at(int dir_fd, const char *path);
|
||||||
__hidden extern int open_at(int dfd, const char *path, unsigned int o_flags,
|
__hidden extern int open_at(int dfd, const char *path, unsigned int o_flags,
|
||||||
unsigned int resolve_flags, mode_t mode);
|
unsigned int resolve_flags, mode_t mode);
|
||||||
|
__hidden extern int open_at_same(int fd_same, int dfd, const char *path,
|
||||||
|
unsigned int o_flags,
|
||||||
|
unsigned int resolve_flags, mode_t mode);
|
||||||
static inline int open_beneath(int dfd, const char *path, unsigned int flags)
|
static inline int open_beneath(int dfd, const char *path, unsigned int flags)
|
||||||
{
|
{
|
||||||
return open_at(dfd, path, flags, PROTECT_LOOKUP_BENEATH, 0);
|
return open_at(dfd, path, flags, PROTECT_LOOKUP_BENEATH, 0);
|
||||||
|
Reference in New Issue
Block a user