diff options
41 files changed, 56 insertions, 47 deletions
diff --git a/source3/client/client.c b/source3/client/client.c index 7ac64970f8..403074b22b 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -3449,7 +3449,7 @@ static int do_message_op(void) if ( override_logfile ) setup_logging( lp_logfile(), False ); - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { + if (!lp_load(dyn_CONFIGFILE,True,False,False,True)) { fprintf(stderr, "%s: Can't load %s - run testparm to debug it\n", argv[0], dyn_CONFIGFILE); } diff --git a/source3/client/smbctool.c b/source3/client/smbctool.c index db938dd809..439345ca6d 100644 --- a/source3/client/smbctool.c +++ b/source3/client/smbctool.c @@ -3654,7 +3654,7 @@ static int do_message_op(void) if ( override_logfile ) setup_logging( lp_logfile(), False ); - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { + if (!lp_load(dyn_CONFIGFILE,True,False,False,True)) { fprintf(stderr, "%s: Can't load %s - run testparm to debug it\n", argv[0], dyn_CONFIGFILE); } diff --git a/source3/client/smbmount.c b/source3/client/smbmount.c index d8254ef23a..21882ab2e9 100644 --- a/source3/client/smbmount.c +++ b/source3/client/smbmount.c @@ -910,7 +910,7 @@ static void parse_mount_smb(int argc, char **argv) pstrcpy(username,getenv("LOGNAME")); } - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { + if (!lp_load(dyn_CONFIGFILE,True,False,False,True)) { fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); } diff --git a/source3/client/smbspool.c b/source3/client/smbspool.c index 7fe918413d..d7a02b76f9 100644 --- a/source3/client/smbspool.c +++ b/source3/client/smbspool.c @@ -214,7 +214,7 @@ static int smb_print(struct cli_state *, char *, FILE *); in_client = True; /* Make sure that we tell lp_load we are */ - if (!lp_load(dyn_CONFIGFILE, True, False, False)) + if (!lp_load(dyn_CONFIGFILE, True, False, False, True)) { fprintf(stderr, "ERROR: Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); return (1); diff --git a/source3/libsmb/libsmbclient.c b/source3/libsmb/libsmbclient.c index 51f94e42e3..fda619c529 100644 --- a/source3/libsmb/libsmbclient.c +++ b/source3/libsmb/libsmbclient.c @@ -6025,7 +6025,7 @@ smbc_init_context(SMBCCTX *context) home = getenv("HOME"); if (home) { slprintf(conf, sizeof(conf), "%s/.smb/smb.conf", home); - if (lp_load(conf, True, False, False)) { + if (lp_load(conf, True, False, False, True)) { conf_loaded = True; } else { DEBUG(5, ("Could not load config file: %s\n", @@ -6041,7 +6041,7 @@ smbc_init_context(SMBCCTX *context) * defaults ... */ - if (!lp_load(dyn_CONFIGFILE, True, False, False)) { + if (!lp_load(dyn_CONFIGFILE, True, False, False, False)) { DEBUG(5, ("Could not load config file: %s\n", dyn_CONFIGFILE)); } else if (home) { @@ -6052,7 +6052,7 @@ smbc_init_context(SMBCCTX *context) */ slprintf(conf, sizeof(conf), "%s/.smb/smb.conf.append", home); - if (!lp_load(conf, True, False, False)) { + if (!lp_load(conf, True, False, False, False)) { DEBUG(10, ("Could not append config file: " "%s\n", diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c index ea7e9a5288..f69cc32ff6 100644 --- a/source3/nmbd/nmbd.c +++ b/source3/nmbd/nmbd.c @@ -291,7 +291,7 @@ static BOOL reload_nmbd_services(BOOL test) if ( test && !lp_file_list_changed() ) return(True); - ret = lp_load( dyn_CONFIGFILE, True , False, False); + ret = lp_load( dyn_CONFIGFILE, True , False, False, True); /* perhaps the config filename is now set */ if ( !test ) { diff --git a/source3/nsswitch/wbinfo.c b/source3/nsswitch/wbinfo.c index f3819b6f51..b7c3b0a98c 100644 --- a/source3/nsswitch/wbinfo.c +++ b/source3/nsswitch/wbinfo.c @@ -1024,7 +1024,7 @@ int main(int argc, char **argv) /* Samba client initialisation */ load_case_tables(); - if (!lp_load(dyn_CONFIGFILE, True, False, False)) { + if (!lp_load(dyn_CONFIGFILE, True, False, False, True)) { d_fprintf(stderr, "wbinfo: error opening config file %s. Error was %s\n", dyn_CONFIGFILE, strerror(errno)); exit(1); diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c index e9b9ed42c4..bbcf2b5e88 100644 --- a/source3/nsswitch/winbindd.c +++ b/source3/nsswitch/winbindd.c @@ -47,7 +47,7 @@ static BOOL reload_services_file(void) } reopen_logs(); - ret = lp_load(dyn_CONFIGFILE,False,False,True); + ret = lp_load(dyn_CONFIGFILE,False,False,True,True); reopen_logs(); load_interfaces(); diff --git a/source3/nsswitch/wins.c b/source3/nsswitch/wins.c index ac5b0f1157..f871a53982 100644 --- a/source3/nsswitch/wins.c +++ b/source3/nsswitch/wins.c @@ -80,7 +80,7 @@ static void nss_wins_init(void) TimeInit(); setup_logging("nss_wins",False); - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); } diff --git a/source3/pam_smbpass/support.c b/source3/pam_smbpass/support.c index 82d51103d2..3f2c638816 100644 --- a/source3/pam_smbpass/support.c +++ b/source3/pam_smbpass/support.c @@ -167,7 +167,7 @@ int set_ctrl( int flags, int argc, const char **argv ) /* Read some options from the Samba config. Can be overridden by the PAM config. */ - if(lp_load(service_file,True,False,False) == False) { + if(lp_load(service_file,True,False,False,True) == False) { _log_err( LOG_ERR, "Error loading service file %s", service_file ); } 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) { diff --git a/source3/python/py_common.c b/source3/python/py_common.c index 66f35759c3..70d478b979 100644 --- a/source3/python/py_common.c +++ b/source3/python/py_common.c @@ -47,7 +47,7 @@ void py_samba_init(void) /* Load configuration file */ - if (!lp_load(dyn_CONFIGFILE, True, False, False)) + if (!lp_load(dyn_CONFIGFILE, True, False, False, True)) fprintf(stderr, "Can't load %s\n", dyn_CONFIGFILE); /* Misc other stuff */ diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index 5bca67d7a6..5e66b18263 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -757,7 +757,7 @@ out_free: /* Load smb.conf file */ - if (!lp_load(dyn_CONFIGFILE,True,False,False)) + if (!lp_load(dyn_CONFIGFILE,True,False,False,True)) fprintf(stderr, "Can't load %s\n", dyn_CONFIGFILE); /* diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 620bf3ebbd..3e970ec16c 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -529,7 +529,7 @@ BOOL reload_services(BOOL test) lp_killunused(conn_snum_used); - ret = lp_load(dyn_CONFIGFILE, False, False, True); + ret = lp_load(dyn_CONFIGFILE, False, False, True, True); reload_printers(); diff --git a/source3/smbwrapper/smbw.c b/source3/smbwrapper/smbw.c index edcc7a5c2f..d4a5b51af4 100644 --- a/source3/smbwrapper/smbw.c +++ b/source3/smbwrapper/smbw.c @@ -76,7 +76,7 @@ void smbw_init(void) pstrcpy(dyn_CONFIGFILE, p); } - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); if (!init_names()) exit(1); diff --git a/source3/torture/locktest.c b/source3/torture/locktest.c index c8336ebaf6..913df885ba 100644 --- a/source3/torture/locktest.c +++ b/source3/torture/locktest.c @@ -586,7 +586,7 @@ static void usage(void) argc -= NSERVERS; argv += NSERVERS; - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); if (getenv("USER")) { diff --git a/source3/torture/locktest2.c b/source3/torture/locktest2.c index fc180bfafe..519acebe8e 100644 --- a/source3/torture/locktest2.c +++ b/source3/torture/locktest2.c @@ -498,7 +498,7 @@ static void usage(void) argc -= 4; argv += 4; - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); if (getenv("USER")) { diff --git a/source3/torture/masktest.c b/source3/torture/masktest.c index 07bfe69121..ffc9a20e71 100644 --- a/source3/torture/masktest.c +++ b/source3/torture/masktest.c @@ -454,7 +454,7 @@ static void usage(void) argc -= 1; argv += 1; - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); if (getenv("USER")) { diff --git a/source3/torture/msgtest.c b/source3/torture/msgtest.c index d691ab32f1..f7c47ddbbf 100644 --- a/source3/torture/msgtest.c +++ b/source3/torture/msgtest.c @@ -41,7 +41,7 @@ void pong_message(int msg_type, struct process_id src, void *buf, size_t len) setup_logging(argv[0],True); - lp_load(dyn_CONFIGFILE,False,False,False); + lp_load(dyn_CONFIGFILE,False,False,False,True); message_init(); diff --git a/source3/torture/rpctorture.c b/source3/torture/rpctorture.c index 28067c1a0a..d69cc8eb8d 100644 --- a/source3/torture/rpctorture.c +++ b/source3/torture/rpctorture.c @@ -242,7 +242,7 @@ enum client_action *term_code = 0; #endif /* KANJI */ - if (!lp_load(dyn_CONFIGFILE,True, False, False)) + if (!lp_load(dyn_CONFIGFILE,True, False, False, True)) { fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); } diff --git a/source3/torture/t_push_ucs2.c b/source3/torture/t_push_ucs2.c index 8bfc6f7ad9..8d327acfa5 100644 --- a/source3/torture/t_push_ucs2.c +++ b/source3/torture/t_push_ucs2.c @@ -33,7 +33,7 @@ int main(int argc, char *argv[]) int count = 1; /* Needed to initialize character set */ - lp_load("/dev/null", True, False, False); + lp_load("/dev/null", True, False, False, True); if (argc < 2) { fprintf(stderr, "usage: %s STRING1 [COUNT]\n" diff --git a/source3/torture/t_strcmp.c b/source3/torture/t_strcmp.c index bc8640ee55..318423b8be 100644 --- a/source3/torture/t_strcmp.c +++ b/source3/torture/t_strcmp.c @@ -12,7 +12,7 @@ int main(int argc, char *argv[]) int iters = 1; /* Needed to initialize character set */ - lp_load("/dev/null", True, False, False); + lp_load("/dev/null", True, False, False, True); if (argc < 3) { fprintf(stderr, "usage: %s STRING1 STRING2 [ITERS]\n" diff --git a/source3/torture/t_strstr.c b/source3/torture/t_strstr.c index 7b928fb26b..49180b219f 100644 --- a/source3/torture/t_strstr.c +++ b/source3/torture/t_strstr.c @@ -14,7 +14,7 @@ int main(int argc, char *argv[]) const char *ret = NULL; /* Needed to initialize character set */ - lp_load("/dev/null", True, False, False); + lp_load("/dev/null", True, False, False, True); if (argc < 3) { fprintf(stderr, "usage: %s STRING1 STRING2 [ITERS]\n" diff --git a/source3/torture/torture.c b/source3/torture/torture.c index e995c3cc58..0b3bfc18f4 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -4916,7 +4916,7 @@ static void usage(void) load_case_tables(); - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); if (argc < 2) { diff --git a/source3/torture/vfstest.c b/source3/torture/vfstest.c index 1914a4acb5..023e656c67 100644 --- a/source3/torture/vfstest.c +++ b/source3/torture/vfstest.c @@ -113,7 +113,7 @@ static NTSTATUS cmd_conf(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, return NT_STATUS_OK; } - if (!lp_load(argv[1], False, True, False)) { + if (!lp_load(argv[1], False, True, False, True)) { printf("Error loading \"%s\"\n", argv[1]); return NT_STATUS_OK; } @@ -448,7 +448,7 @@ BOOL reload_services(BOOL test) lp_killunused(conn_snum_used); - ret = lp_load(dyn_CONFIGFILE, False, False, True); + ret = lp_load(dyn_CONFIGFILE, False, False, True, True); /* perhaps the config filename is now set */ if (!test) diff --git a/source3/utils/eventlogadm.c b/source3/utils/eventlogadm.c index eef7cde377..8cf79fcf14 100644 --- a/source3/utils/eventlogadm.c +++ b/source3/utils/eventlogadm.c @@ -170,7 +170,7 @@ int main( int argc, char *argv[] ) opt_debug = 0; /* todo set this from getopts */ - lp_load( dyn_CONFIGFILE, True, False, False ); + lp_load( dyn_CONFIGFILE, True, False, False, True); exename = argv[0]; srcname = NULL; diff --git a/source3/utils/net.c b/source3/utils/net.c index a2a9ac6a39..25e10c6a31 100644 --- a/source3/utils/net.c +++ b/source3/utils/net.c @@ -825,7 +825,7 @@ static struct functable net_func[] = { * set by cmdline arg or remain default (0) */ AllowDebugChange = False; - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); argv_new = (const char **)poptGetArgs(pc); diff --git a/source3/utils/nmblookup.c b/source3/utils/nmblookup.c index e88d786290..12ac1beb7b 100644 --- a/source3/utils/nmblookup.c +++ b/source3/utils/nmblookup.c @@ -248,7 +248,7 @@ int main(int argc,char *argv[]) exit(1); } - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { + if (!lp_load(dyn_CONFIGFILE,True,False,False,True)) { fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); } diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c index 65dbfb7165..4759aec0cc 100644 --- a/source3/utils/ntlm_auth.c +++ b/source3/utils/ntlm_auth.c @@ -1758,7 +1758,7 @@ enum { /* Samba client initialisation */ - if (!lp_load(dyn_CONFIGFILE, True, False, False)) { + if (!lp_load(dyn_CONFIGFILE, True, False, False, True)) { d_fprintf(stderr, "ntlm_auth: error opening config file %s. Error was %s\n", dyn_CONFIGFILE, strerror(errno)); exit(1); diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c index 53d3b17d06..f41bbb8caa 100644 --- a/source3/utils/pdbedit.c +++ b/source3/utils/pdbedit.c @@ -795,7 +795,7 @@ int main (int argc, char **argv) if (user_name == NULL) user_name = poptGetArg(pc); - if (!lp_load(dyn_CONFIGFILE,True,False,False)) { + if (!lp_load(dyn_CONFIGFILE,True,False,False,True)) { fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); exit(1); } diff --git a/source3/utils/smbcacls.c b/source3/utils/smbcacls.c index cbbd7adaab..26362c6270 100644 --- a/source3/utils/smbcacls.c +++ b/source3/utils/smbcacls.c @@ -830,7 +830,7 @@ static struct cli_state *connect_one(const char *share) setlinebuf(stdout); - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); pc = poptGetContext("smbcacls", argc, argv, long_options, 0); diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c index b8f7c2f2b5..a4d2766b13 100644 --- a/source3/utils/smbcontrol.c +++ b/source3/utils/smbcontrol.c @@ -827,7 +827,7 @@ int main(int argc, const char **argv) if (argc == 1) usage(&pc); - lp_load(dyn_CONFIGFILE,False,False,False); + lp_load(dyn_CONFIGFILE,False,False,False,True); /* Need to invert sense of return code -- samba * routines mostly return True==1 for success, but diff --git a/source3/utils/smbcquotas.c b/source3/utils/smbcquotas.c index f8e3313155..b1a14685f5 100644 --- a/source3/utils/smbcquotas.c +++ b/source3/utils/smbcquotas.c @@ -435,7 +435,7 @@ FSQFLAGS:QUOTA_ENABLED/DENY_DISK/LOG_SOFTLIMIT/LOG_HARD_LIMIT", "SETSTRING" }, fault_setup(NULL); - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); pc = poptGetContext("smbcquotas", argc, argv, long_options, 0); diff --git a/source3/utils/smbfilter.c b/source3/utils/smbfilter.c index 3665647905..97d22230c4 100644 --- a/source3/utils/smbfilter.c +++ b/source3/utils/smbfilter.c @@ -236,7 +236,7 @@ int main(int argc, char *argv[]) netbiosname = argv[2]; } - if (!lp_load(configfile,True,False,False)) { + if (!lp_load(configfile,True,False,False,True)) { d_printf("Unable to load config file\n"); } diff --git a/source3/utils/smbpasswd.c b/source3/utils/smbpasswd.c index 29189c5feb..7eb11137d7 100644 --- a/source3/utils/smbpasswd.c +++ b/source3/utils/smbpasswd.c @@ -187,7 +187,7 @@ static int process_options(int argc, char **argv, int local_flags) usage(); } - if (!lp_load(configfile,True,False,False)) { + if (!lp_load(configfile,True,False,False,True)) { fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); exit(1); diff --git a/source3/utils/smbtree.c b/source3/utils/smbtree.c index 3755b7f8e5..853a46f379 100644 --- a/source3/utils/smbtree.c +++ b/source3/utils/smbtree.c @@ -216,7 +216,7 @@ static BOOL print_tree(struct user_auth_info *user_info) while(poptGetNextOpt(pc) != -1); poptFreeContext(pc); - lp_load(dyn_CONFIGFILE,True,False,False); + lp_load(dyn_CONFIGFILE,True,False,False,True); load_interfaces(); /* Parse command line args */ diff --git a/source3/utils/smbw_sample.c b/source3/utils/smbw_sample.c index 5cd792df7a..ba78eb22fc 100644 --- a/source3/utils/smbw_sample.c +++ b/source3/utils/smbw_sample.c @@ -33,7 +33,7 @@ int main(int argc, char *argv[]) extern int optind; char *path; - lp_load(dyn_CONFIGFILE,1,0,0); + lp_load(dyn_CONFIGFILE,1,0,0,1); smbw_setup_shared(); while ((opt = getopt(argc, argv, "W:U:R:d:P:l:hL:")) != EOF) { diff --git a/source3/utils/status.c b/source3/utils/status.c index eeaf83d177..2aed68be89 100644 --- a/source3/utils/status.c +++ b/source3/utils/status.c @@ -648,7 +648,7 @@ static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, vo d_printf("using configfile = %s\n", dyn_CONFIGFILE); } - if (!lp_load(dyn_CONFIGFILE,False,False,False)) { + if (!lp_load(dyn_CONFIGFILE,False,False,False,True)) { fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); return (-1); } diff --git a/source3/utils/testparm.c b/source3/utils/testparm.c index 11ce960e55..8b9ff4710e 100644 --- a/source3/utils/testparm.c +++ b/source3/utils/testparm.c @@ -266,7 +266,7 @@ via the %%o substitution. With encrypted passwords this is not possible.\n", lp_ fprintf(stderr,"Load smb config files from %s\n",config_file); - if (!lp_load(config_file,False,True,False)) { + if (!lp_load(config_file,False,True,False,True)) { fprintf(stderr,"Error loading services.\n"); return(1); } diff --git a/source3/web/swat.c b/source3/web/swat.c index 372d473bdb..63253e41c4 100644 --- a/source3/web/swat.c +++ b/source3/web/swat.c @@ -422,7 +422,7 @@ static void show_parameters(int snum, int allparameters, unsigned int parm_filte static BOOL load_config(BOOL save_def) { lp_resetnumservices(); - return lp_load(dyn_CONFIGFILE,False,save_def,False); + return lp_load(dyn_CONFIGFILE,False,save_def,False,True); } /**************************************************************************** diff --git a/source3/wrepld/server.c b/source3/wrepld/server.c index 5ac78a2474..754bad01b0 100644 --- a/source3/wrepld/server.c +++ b/source3/wrepld/server.c @@ -64,7 +64,7 @@ BOOL reload_services(BOOL test) if (test && !lp_file_list_changed()) return(True); - ret = lp_load(dyn_CONFIGFILE,False,False,True); + ret = lp_load(dyn_CONFIGFILE,False,False,True,True); /* perhaps the config filename is now set */ |