summaryrefslogtreecommitdiffstats
path: root/source/nmbd/nmbd.c
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
commita8db1b611d83bfd8dcf60f1e6d8fcbf57c798528 (patch)
tree0e4244737d1e5115d676c8f05226957262209e1a /source/nmbd/nmbd.c
parent1564ebfc9933ba892f6866ad8f3a1b4470a8fde9 (diff)
downloadsamba-a8db1b611d83bfd8dcf60f1e6d8fcbf57c798528.tar.gz
samba-a8db1b611d83bfd8dcf60f1e6d8fcbf57c798528.tar.xz
samba-a8db1b611d83bfd8dcf60f1e6d8fcbf57c798528.zip
patch to include support for daemontools from Michael Handler
Diffstat (limited to 'source/nmbd/nmbd.c')
-rw-r--r--source/nmbd/nmbd.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/source/nmbd/nmbd.c b/source/nmbd/nmbd.c
index 988127e4318..2b7d8033a2a 100644
--- a/source/nmbd/nmbd.c
+++ b/source/nmbd/nmbd.c
@@ -32,6 +32,12 @@ extern BOOL global_in_nmbd;
/* are we running as a daemon ? */
static BOOL is_daemon = False;
+/* fork or run in foreground ? */
+static BOOL Fork = True;
+
+/* log to standard output ? */
+static BOOL log_stdout = False;
+
/* have we found LanMan clients yet? */
BOOL found_lm_clients = False;
@@ -590,6 +596,8 @@ static BOOL open_sockets(BOOL isdaemon, int port)
POPT_AUTOHELP
{"daemon", 'D', POPT_ARG_VAL, &is_daemon, True, "Become a daemon(default)" },
{"interactive", 'i', POPT_ARG_VAL, &opt_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" },
{"hosts", 'H', POPT_ARG_STRING, dyn_LMHOSTSFILE, 'H', "Load a netbios hosts file"},
{"port", 'p', POPT_ARG_INT, &global_nmb_port, NMB_PORT, "Listen on the specified port" },
{NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug },
@@ -639,8 +647,18 @@ static BOOL open_sockets(BOOL isdaemon, int port)
{ }
poptFreeContext(pc);
-
- setup_logging( argv[0], opt_interactive );
+
+ if ( opt_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 );
reopen_logs();
@@ -672,7 +690,7 @@ static BOOL open_sockets(BOOL isdaemon, int port)
if (is_daemon && !opt_interactive)
{
DEBUG( 2, ( "Becoming a daemon.\n" ) );
- become_daemon();
+ become_daemon(Fork);
}
#if HAVE_SETPGID