From 7eff16cc4c3b3c0e3d3d67d0dd8e4e0d8e0ae67e Mon Sep 17 00:00:00 2001 From: Alexander Mikhalitsyn Date: Fri, 21 Apr 2023 18:11:46 +0200 Subject: [PATCH] file_utils: add fd_make_nonblocking helper Signed-off-by: Alexander Mikhalitsyn --- src/lxc/file_utils.c | 12 ++++++++++++ src/lxc/file_utils.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/lxc/file_utils.c b/src/lxc/file_utils.c index fed566565..22b9f752c 100644 --- a/src/lxc/file_utils.c +++ b/src/lxc/file_utils.c @@ -700,6 +700,18 @@ int fd_make_blocking(int fd) return fcntl(fd, F_SETFL, flags); } +int fd_make_nonblocking(int fd) +{ + int flags; + + flags = fcntl(fd, F_GETFL); + if (flags < 0) + return -1; + + flags |= O_NONBLOCK; + return fcntl(fd, F_SETFL, flags); +} + #define BATCH_SIZE 50 static void batch_realloc(char **mem, size_t oldlen, size_t newlen) { diff --git a/src/lxc/file_utils.h b/src/lxc/file_utils.h index a51c139b9..61c847292 100644 --- a/src/lxc/file_utils.h +++ b/src/lxc/file_utils.h @@ -110,6 +110,7 @@ __hidden extern int open_at_same(int fd_same, int dfd, const char *path, unsigned int resolve_flags, mode_t mode); __hidden extern int open_beneath(int dfd, const char *path, unsigned int flags); __hidden int fd_make_blocking(int fd); +__hidden int fd_make_nonblocking(int fd); __hidden extern char *read_file_at(int dfd, const char *fnam, unsigned int o_flags, unsigned resolve_flags);