summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2003-01-03 17:39:30 +0000
committerGerald Carter <jerry@samba.org>2003-01-03 17:39:30 +0000
commitf5d5df9644abc08ae1b16a0826eb8cf5c3de54d1 (patch)
tree1a8219ffe84022f095ea553da990226c9de49514 /source3/smbd
parent6985578f5b7b83fc4896ae7316ce1a244e8f9a2d (diff)
downloadsamba-f5d5df9644abc08ae1b16a0826eb8cf5c3de54d1.tar.gz
samba-f5d5df9644abc08ae1b16a0826eb8cf5c3de54d1.tar.bz2
samba-f5d5df9644abc08ae1b16a0826eb8cf5c3de54d1.zip
patch to include support for daemontools from Michael Handler
(This used to be commit a8db1b611d83bfd8dcf60f1e6d8fcbf57c798528)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/server.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 94849f9f5c..c5474a46b8 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -632,6 +632,8 @@ static BOOL init_structs(void )
/* shall I run as a daemon */
static BOOL is_daemon = False;
static BOOL interactive = False;
+ static BOOL Fork = True;
+ static BOOL log_stdout = False;
static char *ports = NULL;
int opt;
poptContext pc;
@@ -640,6 +642,8 @@ static BOOL init_structs(void )
POPT_AUTOHELP
{"daemon", 'D', POPT_ARG_VAL, &is_daemon, True, "Become a daemon (default)" },
{"interactive", 'i', POPT_ARG_VAL, &interactive, True, "Run interactive (not a daemon)"},
+ {"foreground", 'F', POPT_ARG_VAL, &Fork, False, "Run daemon in foreground (for daemontools & etc)" },
+ {"log-stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
{"build-options", 'b', POPT_ARG_NONE, NULL, 'b', "Print build options" },
{"port", 'p', POPT_ARG_STRING, &ports, 0, "Listen on the specified ports"},
{NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug},
@@ -678,7 +682,17 @@ static BOOL init_structs(void )
set_remote_machine_name("smbd");
- setup_logging(argv[0],interactive);
+ if (interactive) {
+ Fork = False;
+ log_stdout = True;
+ }
+
+ if (log_stdout && Fork) {
+ DEBUG(0,("ERROR: Can't log to stdout (-S) unless daemon is in foreground (-F) or interactive (-i)\n"));
+ exit(1);
+ }
+
+ setup_logging(argv[0],log_stdout);
/* we want to re-seed early to prevent time delays causing
client problems at a later date. (tridge) */
@@ -767,7 +781,7 @@ static BOOL init_structs(void )
if (is_daemon && !interactive) {
DEBUG( 3, ( "Becoming a daemon.\n" ) );
- become_daemon();
+ become_daemon(Fork);
}
#if HAVE_SETPGID