From cdf1eaeb2c6f65e1fa9bff161764c843b15f5cee Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 30 Dec 2008 16:28:18 +0100 Subject: daemon: simplified daemonize_close_stdin() Don't bother to call fstat() or isatty() on STDIN_FILENO. --- src/daemon.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'src/daemon.c') diff --git a/src/daemon.c b/src/daemon.c index 569494908..913f06f89 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -31,24 +31,14 @@ void daemonize_close_stdin(void) { - int fd, st; - struct stat ss; + int fd = open("/dev/null", O_RDONLY); - if ((st = fstat(STDIN_FILENO, &ss)) < 0) { - if ((fd = open("/dev/null", O_RDONLY) > 0)) { - g_debug("stdin closed, and could not open /dev/null " - "as fd=0, some external library bugs " - "may be exposed..."); - close(fd); - } - return; + if (fd < 0) + close(STDIN_FILENO); + else if (fd != STDIN_FILENO) { + dup2(fd, STDIN_FILENO); + close(fd); } - if (!isatty(STDIN_FILENO)) - return; - if ((fd = open("/dev/null", O_RDONLY)) < 0) - g_error("failed to open /dev/null %s", strerror(errno)); - if (dup2(fd, STDIN_FILENO) < 0) - g_error("dup2 stdin: %s", strerror(errno)); } void -- cgit v1.2.3