From f8dd0275593f14fa58c3393bb56e83e8d74cae09 Mon Sep 17 00:00:00 2001 From: Aleksandr Mezin Date: Thu, 24 Mar 2016 23:20:42 +0600 Subject: [PATCH] utils: split null_stdfds() to open_devnull() and set_stdfds() Signed-off-by: Aleksandr Mezin --- src/lxc/utils.c | 35 ++++++++++++++++++++++++++--------- src/lxc/utils.h | 2 ++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 8e7ebbc0d..5f15d9410 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -1752,24 +1752,41 @@ domount: return 1; } -int null_stdfds(void) +int open_devnull(void) { - int fd, ret = -1; + int fd = open("/dev/null", O_RDWR); - fd = open("/dev/null", O_RDWR); + if (fd < 0) + SYSERROR("Can't open /dev/null"); + + return fd; +} + +int set_stdfds(int fd) +{ if (fd < 0) return -1; if (dup2(fd, 0) < 0) - goto err; + return -1; if (dup2(fd, 1) < 0) - goto err; + return -1; if (dup2(fd, 2) < 0) - goto err; + return -1; + + return 0; +} + +int null_stdfds(void) +{ + int ret = -1; + int fd = open_devnull(); + + if (fd >= 0) { + ret = set_stdfds(fd); + close(fd); + } - ret = 0; -err: - close(fd); return ret; } diff --git a/src/lxc/utils.h b/src/lxc/utils.h index 7d20a398c..a8f09051e 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -283,6 +283,8 @@ int setproctitle(char *title); int safe_mount(const char *src, const char *dest, const char *fstype, unsigned long flags, const void *data, const char *rootfs); int mount_proc_if_needed(const char *rootfs); +int open_devnull(void); +int set_stdfds(int fd); int null_stdfds(void); int lxc_count_file_lines(const char *fn); #endif /* __LXC_UTILS_H */