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;
 

Reply via email to