aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-12-30 16:28:18 +0100
committerMax Kellermann <max@duempel.org>2008-12-30 16:28:18 +0100
commitcdf1eaeb2c6f65e1fa9bff161764c843b15f5cee (patch)
treeecfd3af787d388abb3b599c5d11da0fd038e533e
parent6c0f5fc6125a478fd50074880ed7fcac9fd9063e (diff)
downloadmpd-cdf1eaeb2c6f65e1fa9bff161764c843b15f5cee.tar.gz
mpd-cdf1eaeb2c6f65e1fa9bff161764c843b15f5cee.tar.xz
mpd-cdf1eaeb2c6f65e1fa9bff161764c843b15f5cee.zip
daemon: simplified daemonize_close_stdin()
Don't bother to call fstat() or isatty() on STDIN_FILENO.
Diffstat (limited to '')
-rw-r--r--src/daemon.c22
1 files changed, 6 insertions, 16 deletions
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