Browse files

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.
  • Loading branch information...
1 parent ad00048 commit 2c196ed6cacfd3eea845a3b9a5758a698096d97b @dustin dustin committed Jan 19, 2009
Showing with 26 additions and 7 deletions.
  1. +26 −7 daemon.c
View
33 daemon.c
@@ -35,6 +35,7 @@
#endif
#include <fcntl.h>
+#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -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);
}

0 comments on commit 2c196ed

Please sign in to comment.