From 2c196ed6cacfd3eea845a3b9a5758a698096d97b Mon Sep 17 00:00:00 2001 From: Dustin Sallings Date: Mon, 19 Jan 2009 23:45:38 +0000 Subject: [PATCH] Build fixes for ubuntu 8.10/64. gcc seems to have been wise to all of the syscalls being cast to void to avoid doing real result checking in unlikely errors. --- daemon.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/daemon.c b/daemon.c index 7cf01ad79f..0485453eda 100644 --- a/daemon.c +++ b/daemon.c @@ -35,6 +35,7 @@ #endif #include +#include #include #include @@ -56,15 +57,33 @@ int daemonize(int nochdir, int noclose) if (setsid() == -1) return (-1); - if (nochdir == 0) - (void)chdir("/"); + if (nochdir == 0) { + if(chdir("/") != 0) { + perror("chdir"); + return (-1); + } + } if (noclose == 0 && (fd = open("/dev/null", O_RDWR, 0)) != -1) { - (void)dup2(fd, STDIN_FILENO); - (void)dup2(fd, STDOUT_FILENO); - (void)dup2(fd, STDERR_FILENO); - if (fd > STDERR_FILENO) - (void)close(fd); + if(dup2(fd, STDIN_FILENO) < 0) { + perror("dup2 stdin"); + return (-1); + } + if(dup2(fd, STDOUT_FILENO) < 0) { + perror("dup2 stdout"); + return (-1); + } + if(dup2(fd, STDERR_FILENO) < 0) { + perror("dup2 stderr"); + return (-1); + } + + if (fd > STDERR_FILENO) { + if(close(fd) < 0) { + perror("close"); + return (-1); + } + } } return (0); }