mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
r12576: r12115@cabra: derrell | 2005-12-29 11:16:03 -0500
bug (enhancement) #2651: add option to log debug messages to stderr instead of stdout
(This used to be commit 4182eb99af
)
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
7919fd0ec8
commit
e13d0cb3ec
@ -29,6 +29,7 @@ int
|
||||
main(int argc, char * argv[])
|
||||
{
|
||||
int debug = 0;
|
||||
int debug_stderr = 0;
|
||||
int scan = 0;
|
||||
int iterations = -1;
|
||||
int again;
|
||||
@ -37,6 +38,7 @@ main(int argc, char * argv[])
|
||||
char * q;
|
||||
char buf[1024];
|
||||
poptContext pc;
|
||||
SMBCCTX * context;
|
||||
struct poptOption long_options[] =
|
||||
{
|
||||
POPT_AUTOHELP
|
||||
@ -44,6 +46,10 @@ main(int argc, char * argv[])
|
||||
"debug", 'd', POPT_ARG_INT, &debug,
|
||||
0, "Set debug level", "integer"
|
||||
},
|
||||
{
|
||||
"stderr", 'e', POPT_ARG_NONE, &debug_stderr,
|
||||
0, "Debug log to stderr instead of stdout", "integer"
|
||||
},
|
||||
{
|
||||
"scan", 's', POPT_ARG_NONE, &scan,
|
||||
0, "Scan for servers and shares", "integer"
|
||||
@ -69,14 +75,36 @@ main(int argc, char * argv[])
|
||||
}
|
||||
}
|
||||
|
||||
/* Allocate a new context */
|
||||
context = smbc_new_context();
|
||||
if (!context) {
|
||||
printf("Could not allocate new smbc context\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Set mandatory options (is that a contradiction in terms?) */
|
||||
context->debug = debug;
|
||||
context->callbacks.auth_fn = (scan ? no_auth_data_fn : get_auth_data_fn);
|
||||
|
||||
/* If we've been asked to log to stderr instead of stdout... */
|
||||
if (debug_stderr) {
|
||||
/* ... then set the option to do so */
|
||||
smbc_option_set(context, "debug_stderr", NULL);
|
||||
}
|
||||
|
||||
/* Initialize the context using the previously specified options */
|
||||
if (!smbc_init_context(context)) {
|
||||
smbc_free_context(context, 0);
|
||||
printf("Could not initialize smbc context\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Tell the compatibility layer to use this context */
|
||||
smbc_set_context(context);
|
||||
|
||||
|
||||
if (scan)
|
||||
{
|
||||
if (smbc_init(no_auth_data_fn, debug) != 0)
|
||||
{
|
||||
printf("Could not initialize smbc_ library\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (;
|
||||
iterations == -1 || iterations > 0;
|
||||
iterations = (iterations == -1 ? iterations : --iterations))
|
||||
@ -87,12 +115,6 @@ main(int argc, char * argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
if (smbc_init(get_auth_data_fn, debug) != 0)
|
||||
{
|
||||
printf("Could not initialize smbc_ library\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (;
|
||||
iterations == -1 || iterations > 0;
|
||||
iterations = (iterations == -1 ? iterations : --iterations))
|
||||
|
@ -47,11 +47,12 @@ struct _SMBCFILE {
|
||||
|
||||
struct smbc_internal_data {
|
||||
|
||||
/** INTERNAL: is this handle initialized ?
|
||||
/*
|
||||
* Is this handle initialized ?
|
||||
*/
|
||||
int _initialized;
|
||||
BOOL _initialized;
|
||||
|
||||
/** INTERNAL: dirent pointer location
|
||||
/* dirent pointer location
|
||||
*
|
||||
* Leave room for any urlencoded filename and the comment field.
|
||||
*
|
||||
@ -64,13 +65,20 @@ struct smbc_internal_data {
|
||||
*/
|
||||
char _dirent[1024];
|
||||
|
||||
/** INTERNAL: server connection list
|
||||
/*
|
||||
* server connection list
|
||||
*/
|
||||
SMBCSRV * _servers;
|
||||
|
||||
/** INTERNAL: open file/dir list
|
||||
/*
|
||||
* open file/dir list
|
||||
*/
|
||||
SMBCFILE * _files;
|
||||
|
||||
/*
|
||||
* Log to standard error instead of the more typical standard output
|
||||
*/
|
||||
BOOL _debug_stderr;
|
||||
};
|
||||
|
||||
|
||||
|
@ -5937,6 +5937,27 @@ smbc_free_context(SMBCCTX *context,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Each time the context structure is changed, we have binary backward
|
||||
* compatibility issues. Instead of modifying the public portions of the
|
||||
* context structure to add new options, instead, we put them in the internal
|
||||
* portion of the context structure and provide a set function for these new
|
||||
* options.
|
||||
*/
|
||||
void
|
||||
smbc_option_set(SMBCCTX *context,
|
||||
char *option_name,
|
||||
void *option_value)
|
||||
{
|
||||
if (strcmp(option_name, "debug_stderr") == 0) {
|
||||
/*
|
||||
* Log to standard error instead of standard output.
|
||||
*/
|
||||
context->internal->_debug_stderr = True;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialise the library etc
|
||||
*
|
||||
@ -5982,7 +6003,12 @@ smbc_init_context(SMBCCTX *context)
|
||||
DEBUGLEVEL = context->debug;
|
||||
|
||||
load_case_tables();
|
||||
setup_logging( "libsmbclient", True);
|
||||
|
||||
setup_logging("libsmbclient", True);
|
||||
if (context->internal->_debug_stderr) {
|
||||
dbf = x_stderr;
|
||||
x_setbuf(x_stderr, NULL);
|
||||
}
|
||||
|
||||
/* Here we would open the smb.conf file if needed ... */
|
||||
|
||||
@ -6099,7 +6125,7 @@ smbc_init_context(SMBCCTX *context)
|
||||
* FIXME: Should we check the function pointers here?
|
||||
*/
|
||||
|
||||
context->internal->_initialized = 1;
|
||||
context->internal->_initialized = True;
|
||||
|
||||
return context;
|
||||
}
|
||||
|
Reference in New Issue
Block a user