Commit Diff


commit - a285a990436511d506bc80553807ed848bdbeff2
commit + ea36b3dfcccdc0f620603c3abb797d178ff4b50a
blob - f1bdf6d2ff8fd9ab44635a725adae753a9f259e3
blob + d9ba3d14d96afa4664dc8d92ae35b00c13c2c889
--- FICS/ficsmain.c
+++ FICS/ficsmain.c
@@ -87,25 +87,25 @@ daemonize(void)
 		    __func__,
 		    DAEMON_LOCKFILE);
 	} else if ((fd[0] = open(DAEMON_LOCKFILE, (O_CREAT | O_RDWR),
-	    mode[0])) == -1)
+	    mode[0])) == -1) {
 		err(1, "%s: open(%s, ...)", __func__, DAEMON_LOCKFILE);
-
-	dprintf(fd[0], "%jd\n", (intmax_t)getpid());
-	close(fd[0]);
-
-	if ((fd[1] = open(DAEMON_LOGFILE, (O_APPEND | O_CREAT | O_RDWR),
-	    mode[1])) == -1)
+	} else if ((fd[1] = open(DAEMON_LOGFILE, (O_APPEND | O_CREAT | O_RDWR),
+	    mode[1])) == -1) {
 		err(1, "%s: open(%s, ...)", __func__, DAEMON_LOGFILE);
-	else if (daemon(1, 1) == -1) {
+	} else if (daemon(1, 1) == -1) {
 		int i;
 
 		i = errno;
+		close(fd[0]);
 		close(fd[1]);
 		errno = i;
 
 		err(1, "%s: failed to run in the background", __func__);
 	}
 
+	dprintf(fd[0], "%jd\n", (intmax_t)getpid());
+	close(fd[0]);
+
 	(void) dup2(fd[1], STDIN_FILENO);
 	(void) dup2(fd[1], STDOUT_FILENO);
 	(void) dup2(fd[1], STDERR_FILENO);