Make finish_daemon() return a boolean to say whether it did anything.

This commit is contained in:
Nick Mathewson 2018-08-08 16:59:53 -04:00
parent 4f300d547d
commit 622a2c6bee
2 changed files with 7 additions and 4 deletions

View File

@ -102,15 +102,16 @@ start_daemon(void)
/** Finish putting the process into daemon mode: drop standard fds, and tell /** Finish putting the process into daemon mode: drop standard fds, and tell
* the parent process to exit. (Note: it's safe to call this more than once: * the parent process to exit. (Note: it's safe to call this more than once:
* calls after the first are ignored. Calls start_daemon first if it hasn't * calls after the first are ignored. Calls start_daemon first if it hasn't
* been called already.) * been called already.) Return true if we actually did a fork; false if we
* didn't.
*/ */
void int
finish_daemon(const char *desired_cwd) finish_daemon(const char *desired_cwd)
{ {
int nullfd; int nullfd;
char c = '.'; char c = '.';
if (finish_daemon_called) if (finish_daemon_called)
return; return 0;
if (!start_daemon_called) if (!start_daemon_called)
start_daemon(); start_daemon();
finish_daemon_called = 1; finish_daemon_called = 1;
@ -149,6 +150,8 @@ finish_daemon(const char *desired_cwd)
log_err(LD_GENERAL,"write failed. Exiting."); log_err(LD_GENERAL,"write failed. Exiting.");
} }
close(daemon_filedes[1]); close(daemon_filedes[1]);
return 0;
} }
#else /* !(!defined(_WIN32)) */ #else /* !(!defined(_WIN32)) */
/* defined(_WIN32) */ /* defined(_WIN32) */

View File

@ -12,6 +12,6 @@
#define TOR_DAEMON_H #define TOR_DAEMON_H
void start_daemon(void); void start_daemon(void);
void finish_daemon(const char *desired_cwd); int finish_daemon(const char *desired_cwd);
#endif #endif