From: Andrew Bartlett Date: Mon, 29 Jun 2009 10:12:23 +0000 (+1000) Subject: Fix ndrdump to use a common setup_logging() API X-Git-Tag: talloc-2.0.0~883 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6e92505080fd6764461563e4fdf1172be1ba2963;p=thirdparty%2Fsamba.git Fix ndrdump to use a common setup_logging() API By adding a new common setup_logging_stdout() API, we no longer need to abuse the ABI compatability between the different setup_logging() calls in Samba3 and Samba4's DEBUG() subsystems. The revert of 49a6d757b4d944cd22c91b2838beb83f04fbe1e9 works with this to fix bug 6211. Andrew Bartlett --- diff --git a/lib/util/debug.c b/lib/util/debug.c index 76178e20746..996efdff7e8 100644 --- a/lib/util/debug.c +++ b/lib/util/debug.c @@ -197,6 +197,14 @@ _PUBLIC_ void setup_logging(const char *prog_name, enum debug_logtype new_logtyp reopen_logs(); } +/** + Just run logging to stdout for this program +*/ +_PUBLIC_ void setup_logging_stdout(void) +{ + setup_logging(NULL, DEBUG_STDOUT); +} + /** return a string constant containing n tabs no more than 10 tabs are returned diff --git a/lib/util/debug.h b/lib/util/debug.h index 7518a64e196..f0d16952a98 100644 --- a/lib/util/debug.h +++ b/lib/util/debug.h @@ -74,7 +74,11 @@ extern int DEBUGLEVEL; */ #define DEBUGTAB(n) do_debug_tab(n) -/** Possible destinations for the debug log */ +/** Possible destinations for the debug log (in order of precedence - + * once set to DEBUG_FILE, it is not possible to reset to DEBUG_STDOUT + * for example. This makes it easy to override for debug to stderr on + * the command line, as the smb.conf cannot reset it back to + * file-based logging */ enum debug_logtype {DEBUG_STDOUT = 0, DEBUG_FILE = 1, DEBUG_STDERR = 2}; /** @@ -101,6 +105,11 @@ _PUBLIC_ void debug_schedule_reopen_logs(void); */ _PUBLIC_ void setup_logging(const char *prog_name, enum debug_logtype new_logtype); +/** + Just run logging to stdout for this program +*/ +_PUBLIC_ void setup_logging_stdout(void); + /** return a string constant containing n tabs no more than 10 tabs are returned diff --git a/librpc/tools/ndrdump.c b/librpc/tools/ndrdump.c index 69b304dc9c0..7126d26c599 100644 --- a/librpc/tools/ndrdump.c +++ b/librpc/tools/ndrdump.c @@ -179,7 +179,7 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force) dbf = x_stderr; - setup_logging(argv[0], true); + setup_logging_stdout(); pc = poptGetContext("ndrdump", argc, argv, long_options, 0); diff --git a/source3/include/proto.h b/source3/include/proto.h index 1a8a9a95382..49afd8c4668 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -466,6 +466,7 @@ void debug_message(struct messaging_context *msg_ctx, void *private_data, uint32 void debug_init(void); void debug_register_msgs(struct messaging_context *msg_ctx); void setup_logging(const char *pname, bool interactive); +void setup_logging_stdout( void ); void debug_set_logfile(const char *name); bool reopen_logs( void ); void force_check_log_size( void ); diff --git a/source3/lib/debug.c b/source3/lib/debug.c index 419af61ef36..e7dcfb4fdf3 100644 --- a/source3/lib/debug.c +++ b/source3/lib/debug.c @@ -605,6 +605,15 @@ void setup_logging(const char *pname, bool interactive) #endif } +/** + Just run logging to stdout for this program +*/ +_PUBLIC_ void setup_logging_stdout(void) +{ + setup_logging(NULL, True); +} + + /*************************************************************************** Set the logfile name. **************************************************************************/