At file:///home/jelmer/bzr.samba/SAMBA_4_0/ ------------------------------------------------------------ revno: 12124 revision-id: [EMAIL PROTECTED] parent: [EMAIL PROTECTED] committer: Jelmer Vernooij <[EMAIL PROTECTED]> branch nick: SAMBA_4_0 timestamp: Wed 2007-05-09 12:46:52 +0200 message: Get rid of a couple more references to global_params. modified: source/param/loadparm.c svn-v2:[EMAIL PROTECTED] === modified file 'source/param/loadparm.c' --- a/source/param/loadparm.c 2007-05-09 01:11:50 +0000 +++ b/source/param/loadparm.c 2007-05-09 10:46:52 +0000 @@ -10,6 +10,7 @@ Copyright (C) Stefan (metze) Metzmacher 2002 Copyright (C) Jim McDonough ([EMAIL PROTECTED]) 2003. Copyright (C) James Myers 2003 <[EMAIL PROTECTED]> + Copyright (C) Jelmer Vernooij 2007 <[EMAIL PROTECTED]> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,13 +65,11 @@ #include "lib/util/dlinklist.h" #include "param/loadparm.h" -static BOOL bLoaded = false; - #define standard_sub_basic(str,len) /* some helpful bits */ -#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < global_params.iNumServices) && global_params.ServicePtrs[(i)]->valid) -#define VALID(i) global_params.ServicePtrs[i]->valid +#define LP_SNUM_OK(ctx, i) (((i) >= 0) && ((i) < (ctx)->iNumServices) && (ctx)->ServicePtrs[(i)]->valid) +#define VALID(ctx, i) ctx->ServicePtrs[i]->valid static BOOL do_parameter_var(struct loadparm_context *, const char *pszParmName, const char *fmt, ...); @@ -103,7 +102,6 @@ char *szPidDir; char *szSetupDir; char *szServerString; - char *szAutoServices; char *szPasswdChat; char *szConfigFile; char *szShareBackend; @@ -255,15 +253,15 @@ True, /* bAvailable */ True, /* bBrowseable */ True, /* bRead_only */ - False, /* bPrint_ok */ - False, /* bMap_system */ - False, /* bMap_hidden */ + false, /* bPrint_ok */ + false, /* bMap_system */ + false, /* bMap_hidden */ True, /* bMap_archive */ True, /* bStrictLocking */ NULL, /* copymap */ - False, /* bMSDfsRoot */ - False, /* bStrictSync */ - False, /* bCIFileSystem */ + false, /* bMSDfsRoot */ + false, /* bStrictSync */ + false, /* bCIFileSystem */ NULL, /* Parametric options */ "" /* dummy */ @@ -276,11 +274,20 @@ struct loadparm_context { int iNumServices; service **ServicePtrs; + + /* Files used by this loadparm context */ + struct file_lists { + struct file_lists *next; + char *name; + char *subfname; + time_t modtime; + } *file_lists; }; struct loadparm_context global_params = { .iNumServices = 0, .ServicePtrs = NULL, + .file_lists = NULL, }; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) @@ -539,8 +546,6 @@ {"config file", P_STRING, P_GLOBAL, GLOBALS_OFFSET(szConfigFile), NULL, NULL, FLAG_HIDE}, {"share backend", P_STRING, P_GLOBAL, GLOBALS_OFFSET(szShareBackend), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"preload", P_STRING, P_GLOBAL, GLOBALS_OFFSET(szAutoServices), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"auto services", P_STRING, P_GLOBAL, GLOBALS_OFFSET(szAutoServices), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"lock dir", P_STRING, P_GLOBAL, GLOBALS_OFFSET(szLockDir), NULL, NULL, FLAG_HIDE}, {"lock directory", P_STRING, P_GLOBAL, GLOBALS_OFFSET(szLockDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"modules dir", P_STRING, P_GLOBAL, GLOBALS_OFFSET(szModulesDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -815,19 +820,19 @@ int fn_name(void) {return(*(int *)(ptr));} #define FN_LOCAL_STRING(fn_name,val) \ - const char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && global_params.ServicePtrs[(i)]->val) ? global_params.ServicePtrs[(i)]->val : sDefault.val));} + const char *fn_name(int i) {return(lp_string((LP_SNUM_OK(&global_params, i) && global_params.ServicePtrs[(i)]->val) ? global_params.ServicePtrs[(i)]->val : sDefault.val));} #define FN_LOCAL_CONST_STRING(fn_name,val) \ - const char *fn_name(int i) {return (const char *)((LP_SNUM_OK(i) && global_params.ServicePtrs[(i)]->val) ? global_params.ServicePtrs[(i)]->val : sDefault.val);} + const char *fn_name(int i) {return (const char *)((LP_SNUM_OK(&global_params, i) && global_params.ServicePtrs[(i)]->val) ? global_params.ServicePtrs[(i)]->val : sDefault.val);} #define FN_LOCAL_LIST(fn_name,val) \ - const char **fn_name(int i) {return(const char **)(LP_SNUM_OK(i)? global_params.ServicePtrs[(i)]->val : sDefault.val);} + const char **fn_name(int i) {return(const char **)(LP_SNUM_OK(&global_params, i)? global_params.ServicePtrs[(i)]->val : sDefault.val);} #define FN_LOCAL_BOOL(fn_name,val) \ - BOOL fn_name(int i) {return(LP_SNUM_OK(i)? global_params.ServicePtrs[(i)]->val : sDefault.val);} + BOOL fn_name(int i) {return(LP_SNUM_OK(&global_params, i)? global_params.ServicePtrs[(i)]->val : sDefault.val);} #if 0 /* unused */ #define FN_LOCAL_CHAR(fn_name,val) \ char fn_name(int i) {return(LP_SNUM_OK(i)? global_params.ServicePtrs[(i)]->val : sDefault.val);} #endif #define FN_LOCAL_INTEGER(fn_name,val) \ - int fn_name(int i) {return(LP_SNUM_OK(i)? global_params.ServicePtrs[(i)]->val : sDefault.val);} + int fn_name(int i) {return(LP_SNUM_OK(&global_params, i)? global_params.ServicePtrs[(i)]->val : sDefault.val);} _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, &Globals.server_role) _PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) @@ -867,7 +872,6 @@ _PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) _PUBLIC_ FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) _PUBLIC_ FN_GLOBAL_STRING(lp_ntptr_providor, &Globals.ntptr_providor) -_PUBLIC_ FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) _PUBLIC_ FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) _PUBLIC_ FN_GLOBAL_LIST(lp_passwordserver, &Globals.szPasswordServers) _PUBLIC_ FN_GLOBAL_LIST(lp_name_resolve_order, &Globals.szNameResolveOrder) @@ -1454,7 +1458,7 @@ int iService; for (iService = ctx->iNumServices - 1; iService >= 0; iService--) - if (VALID(iService) && + if (VALID(ctx, iService) && strwicmp(ctx->ServicePtrs[iService]->szService, pszServiceName) == 0) { if (pserviceDest != NULL) copy_service(pserviceDest, ctx->ServicePtrs[iService], NULL); @@ -1588,21 +1592,15 @@ return (bRetval); } -static struct file_lists { - struct file_lists *next; - char *name; - char *subfname; - time_t modtime; -} *file_lists = NULL; - /******************************************************************* Keep a linked list of all config files so we know when one has changed it's date and needs to be reloaded. ********************************************************************/ -static void add_to_file_list(const char *fname, const char *subfname) +static void add_to_file_list(struct loadparm_context *ctx, + const char *fname, const char *subfname) { - struct file_lists *f = file_lists; + struct file_lists *f = ctx->file_lists; while (f) { if (f->name && !strcmp(f->name, fname)) @@ -1614,7 +1612,7 @@ f = malloc_p(struct file_lists); if (!f) return; - f->next = file_lists; + f->next = ctx->file_lists; f->name = strdup(fname); if (!f->name) { SAFE_FREE(f); @@ -1625,7 +1623,7 @@ SAFE_FREE(f); return; } - file_lists = f; + ctx->file_lists = f; f->modtime = file_modtime(subfname); } else { time_t t = file_modtime(subfname); @@ -1638,12 +1636,12 @@ Check if a config file has changed date. ********************************************************************/ -BOOL lp_file_list_changed(void) +BOOL lp_file_list_changed(struct loadparm_context *ctx) { - struct file_lists *f = file_lists; + struct file_lists *f; DEBUG(6, ("lp_file_list_changed()\n")); - while (f) { + for (f = ctx->file_lists; f; f = f->next) { pstring n2; time_t mod_time; @@ -1662,11 +1660,10 @@ f->modtime = mod_time; SAFE_FREE(f->subfname); f->subfname = strdup(n2); - return (True); + return true; } - f = f->next; } - return (False); + return false; } /*************************************************************************** @@ -1681,7 +1678,7 @@ standard_sub_basic(fname,sizeof(fname)); - add_to_file_list(pszParmValue, fname); + add_to_file_list(ctx, pszParmValue, fname); string_set(ptr, fname); @@ -1727,14 +1724,14 @@ } free_service(&serviceTemp); - return (bRetval); + return bRetval; } /*************************************************************************** Initialise a copymap. ***************************************************************************/ -static void init_copymap(service * pservice) +static void init_copymap(service *pservice) { int i; SAFE_FREE(pservice->copymap); @@ -1748,18 +1745,6 @@ pservice->copymap[i] = true; } -#if 0 /* not used anywhere */ -/*************************************************************************** - Return the local pointer to a parameter given the service number and the - pointer into the default structure. -***************************************************************************/ - -void *lp_local_ptr(int snum, void *ptr) -{ - return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault)); -} -#endif - /*************************************************************************** Process a parametric option ***************************************************************************/ @@ -2219,7 +2204,7 @@ static BOOL is_default(int i) { if (!defaults_saved) - return False; + return false; switch (parm_table[i].type) { case P_LIST: return str_list_equal((const char **)parm_table[i].def.lvalue, @@ -2239,7 +2224,7 @@ case P_SEP: break; } - return False; + return false; } /*************************************************************************** @@ -2327,7 +2312,7 @@ parm = lp_parm_struct(parm_name); if (!parm) { - return False; + return false; } if (isGlobal) @@ -2408,25 +2393,7 @@ BOOL lp_snum_ok(struct loadparm_context *ctx, int iService) { - return (LP_SNUM_OK(iService) && ctx->ServicePtrs[iService]->bAvailable); -} - -/*************************************************************************** - Auto-load some home services. -***************************************************************************/ - -static void lp_add_auto_services(const char *str) -{ - return; -} - -/*************************************************************************** - Have we loaded a services file yet? -***************************************************************************/ - -BOOL lp_loaded(void) -{ - return (bLoaded); + return (LP_SNUM_OK(ctx, iService) && ctx->ServicePtrs[iService]->bAvailable); } /*************************************************************************** @@ -2439,7 +2406,7 @@ { int i; for (i = 0; i < global_params.iNumServices; i++) { - if (!VALID(i)) + if (!VALID(ctx, i)) continue; if (!snumused || !snumused(smb, i)) { @@ -2455,7 +2422,7 @@ void lp_killservice(struct loadparm_context *ctx, int iServiceIn) { - if (VALID(iServiceIn)) { + if (VALID(ctx, iServiceIn)) { ctx->ServicePtrs[iServiceIn]->valid = false; free_service(ctx->ServicePtrs[iServiceIn]); } @@ -2495,7 +2462,7 @@ standard_sub_basic(n2,sizeof(n2)); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); - add_to_file_list(lp_configfile(), n2); + add_to_file_list(ctx, lp_configfile(), n2); /* We get sections first, so have to start 'behind' to make up */ iServiceIndex = -1; @@ -2507,13 +2474,9 @@ if (iServiceIndex >= 0) bRetval = service_ok(ctx, iServiceIndex); - lp_add_auto_services(lp_auto_services()); - lp_add_hidden(ctx, "IPC$", "IPC"); lp_add_hidden(ctx, "ADMIN$", "DISK"); - bLoaded = true; - if (!Globals.szWINSservers && Globals.bWINSsupport) { lp_do_parameter(ctx, -1, "wins server", "127.0.0.1"); } @@ -2568,7 +2531,7 @@ void lp_dump_one(struct loadparm_context *ctx, FILE * f, BOOL show_defaults, int snum) { - if (VALID(snum)) { + if (VALID(ctx, snum)) { if (ctx->ServicePtrs[snum]->szService[0] == '\0') return; dump_a_service(ctx->ServicePtrs[snum], f); @@ -2589,7 +2552,7 @@ for (iService = ctx->iNumServices - 1; iService >= 0; iService--) { - if (VALID(iService) && ctx->ServicePtrs[iService]->szService) { + if (VALID(ctx, iService) && ctx->ServicePtrs[iService]->szService) { /* * The substitution here is used to support %U is * service names @@ -2688,7 +2651,7 @@ int lp_maxprintjobs(struct loadparm_context *ctx, int snum) { - int maxjobs = LP_SNUM_OK(snum) ? ctx->ServicePtrs[snum]->iMaxPrintJobs : sDefault.iMaxPrintJobs; + int maxjobs = LP_SNUM_OK(ctx, snum) ? ctx->ServicePtrs[snum]->iMaxPrintJobs : sDefault.iMaxPrintJobs; if (maxjobs <= 0 || maxjobs >= PRINT_MAX_JOBID) maxjobs = PRINT_MAX_JOBID - 1;