summaryrefslogtreecommitdiff
path: root/source3/param
diff options
context:
space:
mode:
authorDerrell Lipman <derrell@samba.org>2006-01-28 22:53:04 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:06:18 -0500
commit9c15bd311db76885b27f30ba92d885833f668550 (patch)
tree20ec704d6d0caa99936d86d32869917592be3b8d /source3/param
parentba611cb0368629dd7b98c20ed88e9394be0c29e5 (diff)
downloadsamba-9c15bd311db76885b27f30ba92d885833f668550.tar.gz
samba-9c15bd311db76885b27f30ba92d885833f668550.tar.bz2
samba-9c15bd311db76885b27f30ba92d885833f668550.zip
r13212: r12414@cabra: derrell | 2006-01-28 17:52:17 -0500
lp_load() could not be called multiple times to modify parameter settings based on reading from multiple configuration settings. Each time, it initialized all of the settings back to their defaults before reading the specified configuration file. This patch adds a parameter to lp_load() specifying whether the settings should be initialized. It does, however, still force the settings to be initialized the first time, even if the request was to not initialize them. (Not doing so could wreak havoc due to uninitialized values.) (This used to be commit f2a24de769d1b2266e576597c57a8e3b1e2a2b51)
Diffstat (limited to 'source3/param')
-rw-r--r--source3/param/loadparm.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 83a5b2fc3c..a2aa851b09 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -1354,11 +1354,17 @@ static void init_printer_values(service *pService)
Initialise the global parameter structure.
***************************************************************************/
-static void init_globals(void)
+static void init_globals(BOOL first_time_only)
{
static BOOL done_init = False;
pstring s;
+ /* If requested to initialize only once and we've already done it... */
+ if (first_time_only && done_init) {
+ /* ... then we have nothing more to do */
+ return;
+ }
+
if (!done_init) {
int i;
@@ -4188,8 +4194,11 @@ static void set_allowed_client_auth(void)
False on failure.
***************************************************************************/
-BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults,
- BOOL add_ipc)
+BOOL lp_load(const char *pszFname,
+ BOOL global_only,
+ BOOL save_defaults,
+ BOOL add_ipc,
+ BOOL initialize_globals)
{
pstring n2;
BOOL bRetval;
@@ -4208,7 +4217,7 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults,
bInGlobalSection = True;
bGlobalOnly = global_only;
- init_globals();
+ init_globals(! initialize_globals);
debug_init();
if (save_defaults) {