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