From: Aleksandr Mezin Date: Thu, 24 Mar 2016 17:20:42 +0000 (+0600) Subject: utils: split null_stdfds() to open_devnull() and set_stdfds() X-Git-Tag: lxc-2.0.0.rc14~8^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f8dd0275593f14fa58c3393bb56e83e8d74cae09;p=thirdparty%2Flxc.git utils: split null_stdfds() to open_devnull() and set_stdfds() Signed-off-by: Aleksandr Mezin --- 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); + + if (fd < 0) + SYSERROR("Can't open /dev/null"); + + return fd; +} - fd = open("/dev/null", O_RDWR); +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 */