The branch, master has been updated
       via  e17c241 param: Add errors for when an s3 context is used incorrectly
       via  72642f1 param: get rid of unnecessary get_default_loadparm_service 
pointer
       via  bb8fa51 param: remove unused lp_do_parameter from s3 helpers
       via  0693b5d param: remove unnecessary lp_do_parameter call
       via  47f10ac param: remove lp_get_parameter
       via  0796dc6 s3:param: move all lp context setup to a single function
       via  adeb284 s3:param: Ensure that the service pointers are not used 
directly.
       via  71eb592 param: remove init printer values from s3-helpers
       via  f605832 param: move init_printer_values to lib/param
       via  397a3ec param: change init_printer_values to take an lp ctx
       via  308d802 param: add the necessary new line for the debug message in 
handle_copy
       via  0b6bf02 param: add missing talloc_free in lpcfg_file_list_changed 
which are present in s3
       via  2aedc10 param: make is_default method static again
       via  42f21ad param: remove unused dump_globals
       via  26a6f05 param: use lpcfg_dump_globals in s3 loadparm
       via  6f9a0b8 param: rename dump_globals
       via  a348fa9 param: allow dump_globals to check the actual defaults
       via  a7c4446 param: remove is_default method in s3
       via  6edf710 param: make is_default more generic
       via  a1d2e52 param: remove unused service_ok function
       via  bc46178 param: use lpcfg_service_ok in s3 loadparm
       via  ad7be09 param: add extra condition in lpcfg_service_ok
       via  611a402 s3:param: remove lp_string_set from the s3_fns.
       via  cf2aa92 param: remove unnecessary uses of lp_string_set
       via  3377c0f s3:param: add lp_ctx as a parameter to init_globals
       via  0864d49 s3:param: use lpcfg_do_*_paramter instead of 
lp_do_parameter in do_parameter
       via  622e54f param: Use the correct flag locations with 
lpcfg_parm_is_cmdline
       via  4fa9873 s3:param: simplify lp_do_parameter to use lpcfg functions
      from  9ee7b02 smbd: Change logging level for denied share access

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e17c241711487cd2d203b50fceda83f745b97dc4
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Jul 11 14:01:33 2014 +1200

    param: Add errors for when an s3 context is used incorrectly
    
    Change-Id: I176b4413769f41739639875ab874a3e340b6a184
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>
    
    Autobuild-User(master): Michael Adam <ob...@samba.org>
    Autobuild-Date(master): Thu Jul 31 10:41:58 CEST 2014 on sn-devel-104

commit 72642f126086f89ba3e1e42992718f6db22f0831
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Wed Jul 9 13:04:00 2014 +1200

    param: get rid of unnecessary get_default_loadparm_service pointer
    
    Change-Id: I9f512be671e5cd738c43fd97c9c3e0b4ee7a2736
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit bb8fa510b4e573b2ade9ed134e56de425ae22427
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Apr 17 13:59:30 2014 +1200

    param: remove unused lp_do_parameter from s3 helpers
    
    Change-Id: I0de55ee30beb6b94350700afcdb85155e913bda8
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 0693b5d77bb9cd70e10a9f90682c78964904f541
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Apr 17 13:49:05 2014 +1200

    param: remove unnecessary lp_do_parameter call
    
    Change-Id: I0cd1842bac3fcb6dde7236b87d5d235f10277e60
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 47f10ac65c2df3034ae5e943a396d86aa201667a
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Wed Jul 9 12:25:36 2014 +1200

    param: remove lp_get_parameter
    
    Ensure lpcfg_parm_struct, its counterpart is equivalent
    
    Change-Id: I127ce5d3cf7fe02ebf161aa011ec3b41bc32a656
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 0796dc6fe009ec5305f1e748f00a1f305080e10d
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Apr 17 13:48:24 2014 +1200

    s3:param: move all lp context setup to a single function
    
    Change-Id: Ife53e3946a4958d81cbe892bc554520561058c65
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit adeb284a7f397ad2d730d276e56809dc5d4d1b41
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Mon Jul 7 15:40:45 2014 +1200

    s3:param: Ensure that the service pointers are not used directly.
    
    Change-Id: I750301d80981546a84f17995883fae26398d17b8
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 71eb59200a8969d4a6c4f968478fd987f257490c
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 27 15:32:42 2014 +1300

    param: remove init printer values from s3-helpers
    
    Change-Id: I2c4a85b4f5039158924982a277be20ebc2d6302e
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit f605832d8eb26f6823799bddf81cedae843fd3ca
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 27 15:27:40 2014 +1300

    param: move init_printer_values to lib/param
    
    Change-Id: I45df7d589c742d6e5572b0950daed563533cca3c
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 397a3ece0bcb0b932817643878dcd669668d31ec
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 27 15:03:37 2014 +1300

    param: change init_printer_values to take an lp ctx
    
    Change-Id: I55cda94bbf1daf276ec0c45b056bd81645eaa25f
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 308d802f62839c7df27fd6384f33e36f4273f02a
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 27 14:22:41 2014 +1300

    param: add the necessary new line for the debug message in handle_copy
    
    Change-Id: Ia6fc12b9d85032b6f501395cd82c31bcfe229822
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 0b6bf024bb79bfdbd821368c7662a120588380fe
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Tue May 6 16:04:01 2014 +1200

    param: add missing talloc_free in lpcfg_file_list_changed which are present 
in s3
    
    Change-Id: Ib363069f5ecc4fc743aadf143efd640e00d74543
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 2aedc10e8629f3d6379b79a726b924ee75b02d2c
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Wed Jul 9 11:44:51 2014 +1200

    param: make is_default method static again
    
    Change-Id: Icf509a5a8098efcc94e4372742ca9a20a987ad9e
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 42f21ad65cd8af79e2eeab672821d3e876318aca
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 27 15:04:12 2014 +1300

    param: remove unused dump_globals
    
    Change-Id: Id55884c2809ada9c37a4ae306f3a09ecee0fe992
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 26a6f05f0fe78579baec30d9f8afda923bc35ff0
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 27 08:51:56 2014 +1300

    param: use lpcfg_dump_globals in s3 loadparm
    
    Change-Id: I7f7f5238a47e0c3634757b74f3f852ce36988614
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 6f9a0b81356ad1abad03d8c00ee17c7cf0d6981d
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Mar 21 10:45:51 2014 +1300

    param: rename dump_globals
    
    Change-Id: Ia587b8c968dedfcf9b3374d4a4f87bfaa37b01be
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit a348fa95c12181f31c9a474e13b6715d238ac71c
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Mar 21 10:44:15 2014 +1300

    param: allow dump_globals to check the actual defaults
    
    Change-Id: Ia5f30b6922b2e836d3e93403c61458ee58d993fd
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit a7c4446bef0d2b4e57fba7f3593f8c7379896160
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 27 15:33:03 2014 +1300

    param: remove is_default method in s3
    
    Change-Id: Ia9c7422c5f7b56eb81ad644b369bfa36849e963e
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 6edf710c7b5b8d558ec8065d759f42bbc6ca42a0
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Mar 21 10:27:46 2014 +1300

    param: make is_default more generic
    
    Change-Id: Ie380bb7083d96e4ebb1574b7d1e3df0b34f70352
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit a1d2e52110f0de0a3693312ca49412a7be425e4d
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Mar 21 09:34:18 2014 +1300

    param: remove unused service_ok function
    
    Change-Id: I0736a3b9b73aa80f529327ec70e856dd7fc008c6
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit bc46178831e4bc748862254a6f994ea14d82a877
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Mar 21 09:33:01 2014 +1300

    param: use lpcfg_service_ok in s3 loadparm
    
    Change-Id: Ic157d3f5ec7ac9a72db86239e76cd743149cb8e0
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit ad7be09149ace0d810fe5828ee34e76f92e3dcf1
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Mar 21 09:30:26 2014 +1300

    param: add extra condition in lpcfg_service_ok
    
    Change-Id: Id9a95748904516fd34869fee61b1e85b6d14f083
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 611a402cee9e448e92247384e5702a91075b1108
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Tue Jul 29 12:05:22 2014 +0200

    s3:param: remove lp_string_set from the s3_fns.
    
    This is not used any more.
    
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit cf2aa9251fbf19a0aafc7b9909a2f88b2a0c883f
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Fri Mar 21 09:10:52 2014 +1300

    param: remove unnecessary uses of lp_string_set
    
    Change-Id: I190e8b62dee24c998f388eae1cc9558e6b8bc925
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 3377c0f8a495905e289cf6698aff99d73741eb72
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 20 15:19:15 2014 +1300

    s3:param: add lp_ctx as a parameter to init_globals
    
    Change-Id: I8804923241d782eb82675c5a56d53b5ba720fdf0
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 0864d4945e3c6a4b61cf54250ecb98a7844ee128
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 20 14:38:37 2014 +1300

    s3:param: use lpcfg_do_*_paramter instead of lp_do_parameter in do_parameter
    
    Change-Id: I08ab5d9db9323a2ef4fa2243ff0b0b7efe73a23b
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 622e54fc494e56d32ffe6193e9c83452c816f7d0
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Wed Jul 9 13:15:33 2014 +1200

    param: Use the correct flag locations with lpcfg_parm_is_cmdline
    
    s3 flags are no longer being stored in the param table anymore.
    They shouldn't be used in this manner anymore.
    
    Change-Id: Ib97492fd9149e30d7756ca603f79321d7516f19b
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 4fa98737f4911a539cb0b14b55667015c66a0f52
Author: Garming Sam <garm...@catalyst.net.nz>
Date:   Thu Mar 20 15:16:37 2014 +1300

    s3:param: simplify lp_do_parameter to use lpcfg functions
    
    Change-Id: I907794fbbc15ecc4e88e0f6b0d510788e0fca745
    Signed-off-by: Garming Sam <garm...@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/param/loadparm.c         |  237 ++++++++++++++++++-------
 lib/param/loadparm.h         |    1 -
 lib/param/s3_param.h         |    5 -
 source3/include/proto.h      |    2 -
 source3/param/loadparm.c     |  414 ++++++------------------------------------
 source3/param/loadparm_ctx.c |    5 -
 6 files changed, 234 insertions(+), 430 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index bc96dc3..480f970 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -74,9 +74,6 @@
 
 struct loadparm_service *lpcfg_default_service(struct loadparm_context *lp_ctx)
 {
-       if (lp_ctx->s3_fns) {
-               return lp_ctx->s3_fns->get_default_loadparm_service();
-       }
        return lp_ctx->sDefault;
 }
 
@@ -229,7 +226,6 @@ FN_GLOBAL_CONST_STRING(dnsdomain, dnsdomain)
 /* local prototypes */
 static struct loadparm_service *lpcfg_getservicebyname(struct loadparm_context 
*lp_ctx,
                                        const char *pszServiceName);
-static bool lpcfg_service_ok(struct loadparm_service *service);
 static bool do_section(const char *pszSectionName, void *);
 static bool set_variable_helper(TALLOC_CTX *mem_ctx, int parmnum, void 
*parm_ptr,
                                const char *pszParmName, const char 
*pszParmValue);
@@ -578,6 +574,10 @@ struct loadparm_service *lpcfg_add_service(struct 
loadparm_context *lp_ctx,
        int num_to_alloc = lp_ctx->iNumServices + 1;
        struct parmlist_entry *data, *pdata;
 
+       if (lp_ctx->s3_fns != NULL) {
+               smb_panic("Add a service should not be called on an s3 loadparm 
ctx");
+       }
+
        if (pservice == NULL) {
                pservice = lp_ctx->sDefault;
        }
@@ -731,15 +731,13 @@ int lpcfg_map_parameter(const char *pszParmName)
 */
 struct parm_struct *lpcfg_parm_struct(struct loadparm_context *lp_ctx, const 
char *name)
 {
-       int parmnum;
+       int num = lpcfg_map_parameter(name);
 
-       if (lp_ctx->s3_fns) {
-               return lp_ctx->s3_fns->get_parm_struct(name);
+       if (num < 0) {
+               return NULL;
        }
 
-       parmnum = lpcfg_map_parameter(name);
-       if (parmnum == -1) return NULL;
-       return &parm_table[parmnum];
+       return &parm_table[num];
 }
 
 /**
@@ -770,14 +768,6 @@ bool lpcfg_parm_is_cmdline(struct loadparm_context 
*lp_ctx, const char *name)
 {
        int parmnum;
 
-       if (lp_ctx->s3_fns) {
-               struct parm_struct *parm = 
lp_ctx->s3_fns->get_parm_struct(name);
-               if (parm) {
-                       return parm->flags & FLAG_CMDLINE;
-               }
-               return false;
-       }
-
        parmnum = lpcfg_map_parameter(name);
        if (parmnum == -1) return false;
 
@@ -940,7 +930,7 @@ void copy_service(struct loadparm_service *pserviceDest,
  * Check a service for consistency. Return False if the service is in any way
  * incomplete or faulty, else True.
  */
-static bool lpcfg_service_ok(struct loadparm_service *service)
+bool lpcfg_service_ok(struct loadparm_service *service)
 {
        bool bRetval;
 
@@ -964,6 +954,15 @@ static bool lpcfg_service_ok(struct loadparm_service 
*service)
                        service->browseable = false;
        }
 
+       if (service->path[0] == '\0' &&
+           strwicmp(service->szService, HOMES_NAME) != 0 &&
+           service->msdfs_proxy[0] == '\0')
+       {
+               DEBUG(0, ("WARNING: No path in service %s - making it 
unavailable!\n",
+                       service->szService));
+               service->bAvailable = false;
+       }
+
        /* If a service is flagged unavailable, log the fact at level 0. */
        if (!service->bAvailable)
                DEBUG(1, ("NOTE: Service %s is flagged unavailable.\n",
@@ -1043,8 +1042,10 @@ bool lpcfg_file_list_changed(struct loadparm_context 
*lp_ctx)
                        f->modtime = mod_time;
                        talloc_free(f->subfname);
                        f->subfname = talloc_strdup(f, n2);
+                       TALLOC_FREE(n2);
                        return true;
                }
+               TALLOC_FREE(n2);
        }
        return false;
 }
@@ -1090,15 +1091,9 @@ bool handle_realm(struct loadparm_context *lp_ctx, 
struct loadparm_service *serv
                return false;
        }
 
-       if (lp_ctx->s3_fns != NULL) {
-               lp_ctx->s3_fns->lp_string_set(ptr, pszParmValue);
-               lp_ctx->s3_fns->lp_string_set(&lp_ctx->globals->realm, upper);
-               lp_ctx->s3_fns->lp_string_set(&lp_ctx->globals->dnsdomain, 
lower);
-       } else {
-               lpcfg_string_set(lp_ctx, ptr, pszParmValue);
-               lpcfg_string_set(lp_ctx, &lp_ctx->globals->realm, upper);
-               lpcfg_string_set(lp_ctx, &lp_ctx->globals->dnsdomain, lower);
-       }
+       lpcfg_string_set(lp_ctx->globals->ctx, ptr, pszParmValue);
+       lpcfg_string_set(lp_ctx->globals->ctx, &lp_ctx->globals->realm, upper);
+       lpcfg_string_set(lp_ctx->globals->ctx, &lp_ctx->globals->dnsdomain, 
lower);
 
        return true;
 }
@@ -1147,7 +1142,7 @@ bool handle_copy(struct loadparm_context *lp_ctx, struct 
loadparm_service *servi
        serviceTemp = lpcfg_getservicebyname(lp_ctx, pszParmValue);
 
        if (service == NULL) {
-               DEBUG(0, ("Unable to copy service - invalid service 
destination"));
+               DEBUG(0, ("Unable to copy service - invalid service 
destination.\n"));
                return false;
        }
 
@@ -1174,11 +1169,7 @@ bool handle_copy(struct loadparm_context *lp_ctx, struct 
loadparm_service *servi
 bool handle_debug_list(struct loadparm_context *lp_ctx, struct 
loadparm_service *service,
                        const char *pszParmValue, char **ptr)
 {
-       if (lp_ctx->s3_fns != NULL) {
-               lp_ctx->s3_fns->lp_string_set(ptr, pszParmValue);
-       } else {
-               lpcfg_string_set(lp_ctx, ptr, pszParmValue);
-       }
+       lpcfg_string_set(lp_ctx->globals->ctx, ptr, pszParmValue);
 
        return debug_parse_levels(pszParmValue);
 }
@@ -1186,13 +1177,12 @@ bool handle_debug_list(struct loadparm_context *lp_ctx, 
struct loadparm_service
 bool handle_logfile(struct loadparm_context *lp_ctx, struct loadparm_service 
*service,
                    const char *pszParmValue, char **ptr)
 {
-       if (lp_ctx->s3_fns != NULL) {
-               lp_ctx->s3_fns->lp_string_set(ptr, pszParmValue);
-       } else {
+       if (lp_ctx->s3_fns == NULL) {
                debug_set_logfile(pszParmValue);
-               lpcfg_string_set(lp_ctx, ptr, pszParmValue);
        }
 
+       lpcfg_string_set(lp_ctx->globals->ctx, ptr, pszParmValue);
+
        return true;
 }
 
@@ -1205,16 +1195,14 @@ bool handle_charset(struct loadparm_context *lp_ctx, 
struct loadparm_service *se
 {
        if (lp_ctx->s3_fns) {
                if (*ptr == NULL || strcmp(*ptr, pszParmValue) != 0) {
-                       lp_ctx->s3_fns->lp_string_set(ptr, pszParmValue);
                        global_iconv_handle = smb_iconv_handle_reinit(NULL,
                                                        
lpcfg_dos_charset(lp_ctx),
                                                        
lpcfg_unix_charset(lp_ctx),
                                                        true, 
global_iconv_handle);
                }
 
-               return true;
        }
-       return lpcfg_string_set(lp_ctx, ptr, pszParmValue);
+       return lpcfg_string_set(lp_ctx->globals->ctx, ptr, pszParmValue);
 
 }
 
@@ -1251,23 +1239,20 @@ bool handle_dos_charset(struct loadparm_context 
*lp_ctx, struct loadparm_service
                                        DEFAULT_DOS_CHARSET));
                                pszParmValue = DEFAULT_DOS_CHARSET;
                        }
-                       lp_ctx->s3_fns->lp_string_set(ptr, pszParmValue);
                        global_iconv_handle = smb_iconv_handle_reinit(NULL,
                                                        
lpcfg_dos_charset(lp_ctx),
                                                        
lpcfg_unix_charset(lp_ctx),
                                                        true, 
global_iconv_handle);
                }
-               return true;
        }
 
-       return lpcfg_string_set(lp_ctx, ptr, pszParmValue);
+       return lpcfg_string_set(lp_ctx->globals->ctx, ptr, pszParmValue);
 }
 
 bool handle_printing(struct loadparm_context *lp_ctx, struct loadparm_service 
*service,
                            const char *pszParmValue, char **ptr)
 {
        static int parm_num = -1;
-       struct loadparm_service *s;
 
        if (parm_num == -1) {
                parm_num = lpcfg_map_parameter("printing");
@@ -1279,11 +1264,9 @@ bool handle_printing(struct loadparm_context *lp_ctx, 
struct loadparm_service *s
 
        if (lp_ctx->s3_fns) {
                if (service == NULL) {
-                       s = lp_ctx->sDefault;
-                       
lp_ctx->s3_fns->init_printer_values(lp_ctx->globals->ctx, s);
+                       init_printer_values(lp_ctx, lp_ctx->globals->ctx, 
lp_ctx->sDefault);
                } else {
-                       s = service;
-                       lp_ctx->s3_fns->init_printer_values(s, s);
+                       init_printer_values(lp_ctx, service, service);
                }
        }
 
@@ -1769,14 +1752,8 @@ bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, 
const char *pszParmName,
        /* reset the CMDLINE flag in case this has been called before */
        lp_ctx->flags[parmnum] &= ~FLAG_CMDLINE;
 
-       if (lp_ctx->s3_fns != NULL) {
-               if (!lp_ctx->s3_fns->lp_do_parameter(-1, pszParmName, 
pszParmValue)) {
-                       return false;
-               }
-       } else {
-               if (!lpcfg_do_global_parameter(lp_ctx, pszParmName, 
pszParmValue)) {
-                       return false;
-               }
+       if (!lpcfg_do_global_parameter(lp_ctx, pszParmName, pszParmValue)) {
+               return false;
        }
 
        lp_ctx->flags[parmnum] |= FLAG_CMDLINE;
@@ -2012,9 +1989,9 @@ static bool do_section(const char *pszSectionName, void 
*userdata)
  * Determine if a particular base parameter is currently set to the default 
value.
  */
 
-static bool is_default(struct loadparm_service *sDefault, int i)
+static bool is_default(void *base_structure, int i)
 {
-       void *def_ptr = ((char *)sDefault) + parm_table[i].offset;
+       void *def_ptr = ((char *)base_structure) + parm_table[i].offset;
        switch (parm_table[i].type) {
                case P_CMDLIST:
                case P_LIST:
@@ -2045,7 +2022,7 @@ static bool is_default(struct loadparm_service *sDefault, 
int i)
  *Display the contents of the global structure.
  */
 
-static void dump_globals(struct loadparm_context *lp_ctx, FILE *f,
+void lpcfg_dump_globals(struct loadparm_context *lp_ctx, FILE *f,
                         bool show_defaults)
 {
        int i;
@@ -2056,8 +2033,16 @@ static void dump_globals(struct loadparm_context 
*lp_ctx, FILE *f,
        for (i = 0; parm_table[i].label; i++)
                if (parm_table[i].p_class == P_GLOBAL &&
                    (i == 0 || (parm_table[i].offset != parm_table[i - 
1].offset))) {
-                       if (!show_defaults && (lp_ctx->flags[i] & FLAG_DEFAULT))
-                               continue;
+                       if (!show_defaults) {
+                               if (lp_ctx->flags && (lp_ctx->flags[i] & 
FLAG_DEFAULT)) {
+                                       continue;
+                               }
+
+                               if (is_default(lp_ctx->globals, i)) {
+                                       continue;
+                               }
+                       }
+
                        fprintf(f, "\t%s = ", parm_table[i].label);
                        lpcfg_print_parameter(&parm_table[i], 
lpcfg_parm_ptr(lp_ctx, NULL, &parm_table[i]), f);
                        fprintf(f, "\n");
@@ -2184,6 +2169,127 @@ static void lpcfg_add_auto_services(struct 
loadparm_context *lp_ctx,
        return;
 }
 
+/***************************************************************************
+ Initialise the sDefault parameter structure for the printer values.
+***************************************************************************/
+
+void init_printer_values(struct loadparm_context *lp_ctx, TALLOC_CTX *ctx,
+                        struct loadparm_service *pService)
+{
+       /* choose defaults depending on the type of printing */
+       switch (pService->printing) {
+               case PRINT_BSD:
+               case PRINT_AIX:
+               case PRINT_LPRNT:
+               case PRINT_LPROS2:
+                       lpcfg_string_set(ctx, &pService->lpq_command, "lpq 
-P'%p'");
+                       lpcfg_string_set(ctx, &pService->lprm_command, "lprm 
-P'%p' %j");
+                       lpcfg_string_set(ctx, &pService->print_command, "lpr -r 
-P'%p' %s");
+                       break;
+
+               case PRINT_LPRNG:
+               case PRINT_PLP:
+                       lpcfg_string_set(ctx, &pService->lpq_command, "lpq 
-P'%p'");
+                       lpcfg_string_set(ctx, &pService->lprm_command, "lprm 
-P'%p' %j");
+                       lpcfg_string_set(ctx, &pService->print_command, "lpr -r 
-P'%p' %s");
+                       lpcfg_string_set(ctx, &pService->queuepause_command, 
"lpc stop '%p'");
+                       lpcfg_string_set(ctx, &pService->queueresume_command, 
"lpc start '%p'");
+                       lpcfg_string_set(ctx, &pService->lppause_command, "lpc 
hold '%p' %j");
+                       lpcfg_string_set(ctx, &pService->lpresume_command, "lpc 
release '%p' %j");
+                       break;
+
+               case PRINT_CUPS:
+               case PRINT_IPRINT:
+                       /* set the lpq command to contain the destination 
printer
+                          name only.  This is used by cups_queue_get() */
+                       lpcfg_string_set(ctx, &pService->lpq_command, "%p");
+                       lpcfg_string_set(ctx, &pService->lprm_command, "");
+                       lpcfg_string_set(ctx, &pService->print_command, "");
+                       lpcfg_string_set(ctx, &pService->lppause_command, "");
+                       lpcfg_string_set(ctx, &pService->lpresume_command, "");
+                       lpcfg_string_set(ctx, &pService->queuepause_command, 
"");
+                       lpcfg_string_set(ctx, &pService->queueresume_command, 
"");
+                       break;
+
+               case PRINT_SYSV:
+               case PRINT_HPUX:
+                       lpcfg_string_set(ctx, &pService->lpq_command, "lpstat 
-o%p");
+                       lpcfg_string_set(ctx, &pService->lprm_command, "cancel 
%p-%j");
+                       lpcfg_string_set(ctx, &pService->print_command, "lp -c 
-d%p %s; rm %s");
+                       lpcfg_string_set(ctx, &pService->queuepause_command, 
"disable %p");
+                       lpcfg_string_set(ctx, &pService->queueresume_command, 
"enable %p");
+#ifndef HPUX
+                       lpcfg_string_set(ctx, &pService->lppause_command, "lp 
-i %p-%j -H hold");
+                       lpcfg_string_set(ctx, &pService->lpresume_command, "lp 
-i %p-%j -H resume");
+#endif /* HPUX */
+                       break;
+
+               case PRINT_QNX:
+                       lpcfg_string_set(ctx, &pService->lpq_command, "lpq 
-P%p");
+                       lpcfg_string_set(ctx, &pService->lprm_command, "lprm 
-P%p %j");
+                       lpcfg_string_set(ctx, &pService->print_command, "lp -r 
-P%p %s");
+                       break;
+
+#if defined(DEVELOPER) || defined(ENABLE_SELFTEST)
+
+       case PRINT_TEST:
+       case PRINT_VLP: {
+               const char *tdbfile;
+               TALLOC_CTX *tmp_ctx = talloc_new(ctx);
+               const char *tmp;
+
+               tmp = lpcfg_parm_string(lp_ctx, NULL, "vlp", "tdbfile");
+               if (tmp == NULL) {
+                       tmp = "/tmp/vlp.tdb";
+               }
+
+               tdbfile = talloc_asprintf(tmp_ctx, "tdbfile=%s", tmp);
+               if (tdbfile == NULL) {
+                       tdbfile="tdbfile=/tmp/vlp.tdb";
+               }
+
+               tmp = talloc_asprintf(tmp_ctx, "vlp %s print %%p %%s",
+                                     tdbfile);
+               lpcfg_string_set(ctx, &pService->print_command,
+                          tmp ? tmp : "vlp print %p %s");
+
+               tmp = talloc_asprintf(tmp_ctx, "vlp %s lpq %%p",
+                                     tdbfile);
+               lpcfg_string_set(ctx, &pService->lpq_command,
+                          tmp ? tmp : "vlp lpq %p");
+
+               tmp = talloc_asprintf(tmp_ctx, "vlp %s lprm %%p %%j",
+                                     tdbfile);
+               lpcfg_string_set(ctx, &pService->lprm_command,
+                          tmp ? tmp : "vlp lprm %p %j");
+
+               tmp = talloc_asprintf(tmp_ctx, "vlp %s lppause %%p %%j",
+                                     tdbfile);
+               lpcfg_string_set(ctx, &pService->lppause_command,
+                          tmp ? tmp : "vlp lppause %p %j");
+
+               tmp = talloc_asprintf(tmp_ctx, "vlp %s lpresume %%p %%j",
+                                     tdbfile);
+               lpcfg_string_set(ctx, &pService->lpresume_command,
+                          tmp ? tmp : "vlp lpresume %p %j");
+
+               tmp = talloc_asprintf(tmp_ctx, "vlp %s queuepause %%p",
+                                     tdbfile);
+               lpcfg_string_set(ctx, &pService->queuepause_command,
+                          tmp ? tmp : "vlp queuepause %p");
+
+               tmp = talloc_asprintf(tmp_ctx, "vlp %s queueresume %%p",
+                                     tdbfile);
+               lpcfg_string_set(ctx, &pService->queueresume_command,
+                          tmp ? tmp : "vlp queueresume %p");
+               TALLOC_FREE(tmp_ctx);
+
+               break;
+       }
+#endif /* DEVELOPER */
+
+       }
+}
 
 /**
  * Unload unused services.
@@ -2194,6 +2300,11 @@ void lpcfg_killunused(struct loadparm_context *lp_ctx,
                   bool (*snumused) (struct smbsrv_connection *, int))
 {
        int i;
+
+       if (lp_ctx->s3_fns != NULL) {
+               smb_panic("Cannot be used from an s3 loadparm ctx");
+       }
+
        for (i = 0; i < lp_ctx->iNumServices; i++) {
                if (lp_ctx->services[i] == NULL)
                        continue;
@@ -2854,7 +2965,7 @@ void lpcfg_dump(struct loadparm_context *lp_ctx, FILE *f, 
bool show_defaults,
                return;
        }
 
-       dump_globals(lp_ctx, f, show_defaults);
+       lpcfg_dump_globals(lp_ctx, f, show_defaults);
 
        lpcfg_dump_a_service(lp_ctx->sDefault, lp_ctx->sDefault, f, 
lp_ctx->flags, show_defaults);
 
diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h
index 79f12cb..d4177e5 100644
--- a/lib/param/loadparm.h
+++ b/lib/param/loadparm.h
@@ -284,7 +284,6 @@ bool lp_string_set(char **, const char *);
 int getservicebyname(const char *, struct loadparm_service *);
 bool lp_include(struct loadparm_context *, struct loadparm_service *,
                const char *, char **);
-void init_printer_values(TALLOC_CTX *, struct loadparm_service *);
 bool lp_do_section(const char *pszSectionName, void *userdata);
 bool store_lp_set_cmdline(const char *pszParmName, const char *pszParmValue);
 
diff --git a/lib/param/s3_param.h b/lib/param/s3_param.h
index 1d499cd..f31c5bc 100644
--- a/lib/param/s3_param.h
+++ b/lib/param/s3_param.h
@@ -3,10 +3,8 @@
 
 struct loadparm_s3_helpers
 {
-       struct parm_struct * (*get_parm_struct)(const char *param_name);
        void * (*get_parm_ptr)(struct loadparm_service *service, struct 
parm_struct *parm);
        struct loadparm_service * (*get_service)(const char *service_name);
-       struct loadparm_service * (*get_default_loadparm_service)(void);
        struct loadparm_service * (*get_servicebynum)(int snum);
        int (*getservicebyname)(const char *, struct loadparm_service *);
        int (*get_numservices)(void);
@@ -14,13 +12,10 @@ struct loadparm_s3_helpers
        bool (*store_cmdline)(const char *pszParmName, const char 
*pszParmValue);
        void (*dump)(FILE *f, bool show_defaults, int maxtoprint);
        char * (*lp_string)(TALLOC_CTX *ctx, const char *in);
-       bool (*lp_string_set)(char **dest, const char *src);
        bool (*lp_include)(struct loadparm_context*, struct loadparm_service *,
                        const char *, char **);
-       void (*init_printer_values)(TALLOC_CTX *, struct loadparm_service *);
        void (*init_ldap_debugging)(void);
        bool (*set_netbios_aliases)(const char **);
-       bool (*lp_do_parameter)(int, const char *, const char *);
        bool (*do_section)(const char *pszSectionName, void *userdata);
        struct loadparm_global *globals;
        unsigned int *flags;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 285ec7b..70fa7f7 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1023,7 +1023,6 @@ bool lp_canonicalize_parameter_with_value(const char 
*parm_name,
 void show_parameter_list(void);
 bool lp_invert_boolean(const char *str, const char **inverse_str);
 bool lp_canonicalize_boolean(const char *str, const char**canon_str);
-bool service_ok(int iService);
 bool process_registry_service(const char *service_name);
 bool process_registry_shares(void);
 bool lp_config_backend_is_registry(void);
@@ -1043,7 +1042,6 @@ void *lp_local_ptr_by_snum(int snum, struct parm_struct 
*parm);
 bool lp_do_parameter(int snum, const char *pszParmName, const char 
*pszParmValue);
 bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue);
 bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal);
-struct parm_struct *lp_get_parameter(const char *param_name);
 bool lp_snum_ok(int iService);
 void lp_add_one_printer(const char *name, const char *comment,
                        const char *location, void *pdata);
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 6b3e46e..dee6224 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -306,124 +306,6 @@ bool lp_string_set(char **dest, const char *src) {
        return string_set(Globals.ctx, dest, src);
 }
 
-/***************************************************************************
- Initialise the sDefault parameter structure for the printer values.
-***************************************************************************/
-
-void init_printer_values(TALLOC_CTX *ctx, struct loadparm_service *pService)
-{


-- 
Samba Shared Repository

Reply via email to