diff options
-rw-r--r-- | source4/client/client.c | 12 | ||||
-rw-r--r-- | source4/include/debug.h | 2 | ||||
-rw-r--r-- | source4/lib/cmdline/popt_common.c | 22 | ||||
-rw-r--r-- | source4/lib/debug.c | 22 | ||||
-rw-r--r-- | source4/lib/registry/tools/regdiff.c | 10 | ||||
-rw-r--r-- | source4/lib/registry/tools/regpatch.c | 10 | ||||
-rw-r--r-- | source4/lib/registry/tools/regshell.c | 11 | ||||
-rw-r--r-- | source4/lib/registry/tools/regtree.c | 10 | ||||
-rw-r--r-- | source4/smbd/server.c | 11 | ||||
-rw-r--r-- | source4/torture/smbiconv.c | 4 | ||||
-rw-r--r-- | source4/torture/torture.c | 5 | ||||
-rw-r--r-- | source4/utils/ndrdump.c | 2 | ||||
-rw-r--r-- | source4/utils/net/net.c | 7 | ||||
-rw-r--r-- | source4/utils/nmblookup.c | 5 | ||||
-rw-r--r-- | source4/utils/ntlm_auth.c | 8 |
15 files changed, 48 insertions, 93 deletions
diff --git a/source4/client/client.c b/source4/client/client.c index 34d0fc20f1a..afdab5928c2 100644 --- a/source4/client/client.c +++ b/source4/client/client.c @@ -3361,18 +3361,12 @@ static void remember_query_host(const char *arg, *query_host = 0; *base_directory = 0; - setup_logging(argv[0],DEBUG_STDOUT); mem_ctx = talloc_init("client.c/main"); if (!mem_ctx) { d_printf("\nclient.c: Not enough memory\n"); exit(1); } - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { - fprintf(stderr, "%s: Can't load %s - run testparm to debug it\n", - argv[0], dyn_CONFIGFILE); - } - pc = poptGetContext("smbclient", argc, (const char **) argv, long_options, 0); poptSetOtherOptionHelp(pc, "[OPTIONS] service <password>"); @@ -3393,10 +3387,6 @@ static void remember_query_host(const char *arg, case 'I': dest_ip = poptGetOptArg(pc); break; - case 'E': - setup_logging("client", DEBUG_STDERR); - break; - case 'L': remember_query_host(poptGetOptArg(pc), query_host); break; @@ -3412,8 +3402,6 @@ static void remember_query_host(const char *arg, } } - load_interfaces(); - smbclient_init_subsystems; if(poptPeekArg(pc)) { diff --git a/source4/include/debug.h b/source4/include/debug.h index 166b7c26f58..ccd1c90040e 100644 --- a/source4/include/debug.h +++ b/source4/include/debug.h @@ -46,7 +46,7 @@ extern int DEBUGLEVEL; #define DEBUGADDC(class, level, body) DEBUG(level, body) #define DEBUGTAB(n) do_debug_tab(n) -enum debug_logtype {DEBUG_FILE, DEBUG_STDOUT, DEBUG_STDERR}; +enum debug_logtype {DEBUG_STDOUT = 0, DEBUG_FILE = 1, DEBUG_STDERR = 2}; /* keep some debug class defines for now to avoid changing old code too much */ #define DBGC_AUTH 0 diff --git a/source4/lib/cmdline/popt_common.c b/source4/lib/cmdline/popt_common.c index 94b72c520d3..fec85281ef8 100644 --- a/source4/lib/cmdline/popt_common.c +++ b/source4/lib/cmdline/popt_common.c @@ -38,7 +38,7 @@ * -i,--scope */ -enum {OPT_OPTION=1,OPT_LEAK_REPORT,OPT_LEAK_REPORT_FULL}; +enum {OPT_OPTION=1,OPT_LEAK_REPORT,OPT_LEAK_REPORT_FULL, OPT_DEBUG_STDERR}; struct cli_credentials *cmdline_credentials = NULL; @@ -49,6 +49,14 @@ static void popt_common_callback(poptContext con, { const char *pname; + if (reason == POPT_CALLBACK_REASON_POST) { + /* Hook any 'every Samba program must do this, after + * the smb.conf is setup' functions here */ + lp_load(dyn_CONFIGFILE,True,False,False); + load_interfaces(); + return; + } + /* Find out basename of current program */ pname = strrchr_m(poptGetInvocationName(con),'/'); @@ -58,9 +66,7 @@ static void popt_common_callback(poptContext con, pname++; if (reason == POPT_CALLBACK_REASON_PRE) { - char *logfile = talloc_asprintf(NULL, "%s/log.%s", dyn_LOGFILEBASE, pname); - lp_set_cmdline("log file", logfile); - talloc_free(logfile); + setup_logging(pname, DEBUG_STDOUT); return; } @@ -69,6 +75,10 @@ static void popt_common_callback(poptContext con, lp_set_cmdline("log level", arg); break; + case OPT_DEBUG_STDERR: + setup_logging(pname, DEBUG_STDERR); + break; + case 'V': printf( "Version %s\n", SAMBA_VERSION_STRING ); exit(0); @@ -128,6 +138,7 @@ static void popt_common_callback(poptContext con, case OPT_LEAK_REPORT_FULL: talloc_enable_leak_report_full(); break; + } } @@ -143,8 +154,9 @@ struct poptOption popt_common_connection[] = { }; struct poptOption popt_common_samba[] = { - { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE, popt_common_callback }, + { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE|POPT_CBFLAG_POST, popt_common_callback }, { "debuglevel", 'd', POPT_ARG_STRING, NULL, 'd', "Set debug level", "DEBUGLEVEL" }, + { "debug-stderr", 0, POPT_ARG_NONE, NULL, OPT_DEBUG_STDERR, "Send debug output to STDERR", NULL }, { "configfile", 's', POPT_ARG_STRING, NULL, 's', "Use alternative configuration file", "CONFIGFILE" }, { "option", 0, POPT_ARG_STRING, NULL, OPT_OPTION, "Set smb.conf option from command line", "name=value" }, { "log-basename", 'l', POPT_ARG_STRING, NULL, 'l', "Basename for log/debug files", "LOGFILEBASE" }, diff --git a/source4/lib/debug.c b/source4/lib/debug.c index ab012a98aa2..a775c468547 100644 --- a/source4/lib/debug.c +++ b/source4/lib/debug.c @@ -74,8 +74,6 @@ void reopen_logs(void) char *fname = NULL; int old_fd = state.fd; - state.fd = 0; - switch (state.logtype) { case DEBUG_STDOUT: state.fd = 1; @@ -89,12 +87,20 @@ void reopen_logs(void) if ((*logfile) == '/') { fname = strdup(logfile); } else { - asprintf(&fname, "%s/%s.log", dyn_LOGFILEBASE, logfile); + asprintf(&fname, "%s/%s.log", dyn_LOGFILEBASE, state.prog_name); } if (fname) { - state.fd = open(fname, O_CREAT|O_APPEND|O_WRONLY, 0644); + int newfd = open(fname, O_CREAT|O_APPEND|O_WRONLY, 0600); + if (newfd == -1) { + DEBUG(1, ("Failed to open new logfile: %s\n", fname)); + } else { + state.fd = newfd; + } free(fname); + } else { + DEBUG(1, ("Failed to find name for file-based logfile!\n")); } + break; } @@ -109,8 +115,12 @@ void reopen_logs(void) */ void setup_logging(const char *prog_name, enum debug_logtype new_logtype) { - state.logtype = new_logtype; - state.prog_name = prog_name; + if (state.logtype < new_logtype) { + state.logtype = new_logtype; + } + if (prog_name) { + state.prog_name = prog_name; + } reopen_logs(); } diff --git a/source4/lib/registry/tools/regdiff.c b/source4/lib/registry/tools/regdiff.c index 4260a56142b..f86c0ae3834 100644 --- a/source4/lib/registry/tools/regdiff.c +++ b/source4/lib/registry/tools/regdiff.c @@ -121,21 +121,18 @@ static void writediff(struct registry_key *oldkey, struct registry_key *newkey, WERROR error, error2; struct poptOption long_options[] = { POPT_AUTOHELP - POPT_COMMON_CREDENTIALS {"output", 'o', POPT_ARG_STRING, &outputfile, 'o', "output file to use", NULL }, {"null", 'n', POPT_ARG_NONE, &from_null, 'n', "Diff from NULL", NULL }, {"remote", 'R', POPT_ARG_STRING, NULL, 0, "Connect to remote server" , NULL }, {"local", 'L', POPT_ARG_NONE, NULL, 0, "Open local registry", NULL }, + POPT_COMMON_SAMBA + POPT_COMMON_CREDENTIALS + POPT_COMMON_VERSION POPT_TABLEEND }; regdiff_init_subsystems; - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { - fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); - } - - pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0); while((opt = poptGetNextOpt(pc)) != -1) { @@ -157,7 +154,6 @@ static void writediff(struct registry_key *oldkey, struct registry_key *newkey, return 1; } } - setup_logging(argv[0], DEBUG_STDOUT); poptFreeContext(pc); diff --git a/source4/lib/registry/tools/regpatch.c b/source4/lib/registry/tools/regpatch.c index 5c9851b71b7..02ef4d46555 100644 --- a/source4/lib/registry/tools/regpatch.c +++ b/source4/lib/registry/tools/regpatch.c @@ -749,25 +749,19 @@ static int nt_apply_reg_command_file(struct registry_context *r, const char *cmd WERROR error; struct poptOption long_options[] = { POPT_AUTOHELP - POPT_COMMON_CREDENTIALS {"remote", 'R', POPT_ARG_STRING, &remote, 0, "connect to specified remote server", NULL}, + POPT_COMMON_SAMBA + POPT_COMMON_CREDENTIALS POPT_TABLEEND }; regpatch_init_subsystems; - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { - fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); - } - - pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0); while((opt = poptGetNextOpt(pc)) != -1) { } - setup_logging(argv[0], DEBUG_STDOUT); - if (remote) { error = reg_open_remote (&h, cmdline_credentials, remote); } else { diff --git a/source4/lib/registry/tools/regshell.c b/source4/lib/registry/tools/regshell.c index 03cb09c443a..0c53f737b8e 100644 --- a/source4/lib/registry/tools/regshell.c +++ b/source4/lib/registry/tools/regshell.c @@ -374,26 +374,21 @@ static char **reg_completion(const char *text, int start, int end) struct registry_context *h = NULL; struct poptOption long_options[] = { POPT_AUTOHELP - POPT_COMMON_CREDENTIALS {"backend", 'b', POPT_ARG_STRING, &backend, 0, "backend to use", NULL}, {"remote", 'R', POPT_ARG_STRING, &remote, 0, "connect to specified remote server", NULL}, + POPT_COMMON_SAMBA + POPT_COMMON_CREDENTIALS + POPT_COMMON_VERSION POPT_TABLEEND }; regshell_init_subsystems; - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { - fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); - } - - pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0); while((opt = poptGetNextOpt(pc)) != -1) { } - setup_logging("regtree", DEBUG_STDOUT); - if (remote) { error = reg_open_remote (&h, cmdline_credentials, remote); } else if (backend) { diff --git a/source4/lib/registry/tools/regtree.c b/source4/lib/registry/tools/regtree.c index 2cf5f6ab962..f18467b5237 100644 --- a/source4/lib/registry/tools/regtree.c +++ b/source4/lib/registry/tools/regtree.c @@ -82,28 +82,22 @@ static void print_tree(int l, struct registry_key *p, int fullpath, int novals) int fullpath = 0, no_values = 0; struct poptOption long_options[] = { POPT_AUTOHELP - POPT_COMMON_CREDENTIALS {"backend", 'b', POPT_ARG_STRING, &backend, 0, "backend to use", NULL}, {"fullpath", 'f', POPT_ARG_NONE, &fullpath, 0, "show full paths", NULL}, {"remote", 'R', POPT_ARG_STRING, &remote, 0, "connect to specified remote server", NULL }, {"no-values", 'V', POPT_ARG_NONE, &no_values, 0, "don't show values", NULL}, + POPT_COMMON_SAMBA + POPT_COMMON_CREDENTIALS POPT_TABLEEND }; regtree_init_subsystems; - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { - fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); - } - - pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0); while((opt = poptGetNextOpt(pc)) != -1) { } - setup_logging("regtree", DEBUG_STDOUT); - if (remote) { error = reg_open_remote(&h, cmdline_credentials, remote); } else if (backend) { diff --git a/source4/smbd/server.c b/source4/smbd/server.c index a08202baabf..717de0c5233 100644 --- a/source4/smbd/server.c +++ b/source4/smbd/server.c @@ -163,13 +163,13 @@ static int binary_smbd_main(int argc, const char *argv[]) int max_runtime = 0; struct poptOption long_options[] = { POPT_AUTOHELP - POPT_COMMON_SAMBA {"interactive", 'i', POPT_ARG_VAL, &interactive, True, "Run interactive (not a daemon)", NULL}, {"model", 'M', POPT_ARG_STRING, &model, True, "Select process model", "MODEL"}, {"maximum-runtime", 0, POPT_ARG_INT, &max_runtime, True, "set maximum time for smbd to live", "seconds"}, + POPT_COMMON_SAMBA POPT_COMMON_VERSION POPT_TABLEEND }; @@ -180,15 +180,13 @@ static int binary_smbd_main(int argc, const char *argv[]) poptFreeContext(pc); - setup_logging(argv[0], interactive?DEBUG_STDOUT:DEBUG_FILE); + setup_logging(NULL, interactive?DEBUG_STDOUT:DEBUG_FILE); setup_signals(); /* we want total control over the permissions on created files, so set our umask to 0 */ umask(0); - reopen_logs(); - DEBUG(0,("smbd version %s started.\n", SAMBA_VERSION_STRING)); DEBUGADD(0,("Copyright Andrew Tridgell and the Samba Team 1992-2005\n")); @@ -197,11 +195,6 @@ static int binary_smbd_main(int argc, const char *argv[]) exit(1); } - lp_load(dyn_CONFIGFILE, False, False, True); - - reopen_logs(); - load_interfaces(); - if (!interactive) { DEBUG(3,("Becoming a daemon.\n")); become_daemon(True); diff --git a/source4/torture/smbiconv.c b/source4/torture/smbiconv.c index 7ca6bb1c125..0cd16278eee 100644 --- a/source4/torture/smbiconv.c +++ b/source4/torture/smbiconv.c @@ -195,10 +195,6 @@ int main(int argc, char *argv[]) while(poptGetNextOpt(pc) != -1); - /* the following functions are part of the Samba debugging - facilities. See lib/debug.c */ - setup_logging("smbiconv", DEBUG_STDOUT); - if (preload_modules[0]) smb_load_modules(preload_modules); if(output) { diff --git a/source4/torture/torture.c b/source4/torture/torture.c index 98519a37971..a2ca9fc72f7 100644 --- a/source4/torture/torture.c +++ b/source4/torture/torture.c @@ -2558,8 +2558,6 @@ static void max_runtime_handler(int sig) POPT_TABLEEND }; - setup_logging("smbtorture", DEBUG_STDOUT); - #ifdef HAVE_SETBUFFER setbuffer(stdout, NULL, 0); #endif @@ -2604,9 +2602,6 @@ static void max_runtime_handler(int sig) alarm(max_runtime); } - lp_load(dyn_CONFIGFILE,True,False,False); - load_interfaces(); - smbtorture_init_subsystems; diff --git a/source4/utils/ndrdump.c b/source4/utils/ndrdump.c index eabeaad5374..58cdeb13c3a 100644 --- a/source4/utils/ndrdump.c +++ b/source4/utils/ndrdump.c @@ -121,8 +121,6 @@ static char *stdin_load(TALLOC_CTX *mem_ctx, size_t *size) POPT_TABLEEND }; - setup_logging("ndrdump", DEBUG_STDOUT); - ndrdump_init_subsystems; pc = poptGetContext("ndrdump", argc, argv, long_options, 0); diff --git a/source4/utils/net/net.c b/source4/utils/net/net.c index c7c6f7dec9f..51b860234d9 100644 --- a/source4/utils/net/net.c +++ b/source4/utils/net/net.c @@ -154,14 +154,12 @@ static int binary_net(int argc, const char **argv) POPT_TABLEEND }; - setup_logging("net", DEBUG_STDOUT); - #ifdef HAVE_SETBUFFER setbuffer(stdout, NULL, 0); #endif pc = poptGetContext("net", argc, (const char **) argv, long_options, - POPT_CONTEXT_KEEP_FIRST); + POPT_CONTEXT_KEEP_FIRST); while((opt = poptGetNextOpt(pc)) != -1) { switch (opt) { @@ -173,9 +171,6 @@ static int binary_net(int argc, const char **argv) } } - lp_load(dyn_CONFIGFILE,True,False,False); - load_interfaces(); - argv_new = (const char **)poptGetArgs(pc); argc_new = argc; diff --git a/source4/utils/nmblookup.c b/source4/utils/nmblookup.c index fb21cb55296..900d55d6df5 100644 --- a/source4/utils/nmblookup.c +++ b/source4/utils/nmblookup.c @@ -271,8 +271,6 @@ int main(int argc,char *argv[]) { 0, 0, 0, 0 } }; - setup_logging(argv[0], DEBUG_STDOUT); - pc = poptGetContext("nmblookup", argc, (const char **)argv, long_options, POPT_CONTEXT_KEEP_FIRST); @@ -288,9 +286,6 @@ int main(int argc,char *argv[]) exit(1); } - lp_load(dyn_CONFIGFILE,True,False,False); - load_interfaces(); - while (poptPeekArg(pc)) { const char *name = poptGetArg(pc); diff --git a/source4/utils/ntlm_auth.c b/source4/utils/ntlm_auth.c index 4c7286a4c1d..8e858e2970d 100644 --- a/source4/utils/ntlm_auth.c +++ b/source4/utils/ntlm_auth.c @@ -865,13 +865,7 @@ enum { /* Samba client initialisation */ - setup_logging("ntlm_auth", DEBUG_STDERR); - - if (!lp_load(dyn_CONFIGFILE, True, False, False)) { - d_fprintf(stderr, "wbinfo: error opening config file %s. Error was %s\n", - dyn_CONFIGFILE, strerror(errno)); - exit(1); - } + setup_logging(NULL, DEBUG_STDERR); /* Parse options */ |