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);