The branch, master has been updated via 8f0d06f heimdal_build: only enable libintl functions if everything was found via 0c8e9cc param: add const to a local variable to prevent a warning about lp_fstype via 8246e53 param: remove lp_dnsdomain from s3 via a7d2f9a param: change s3_param.h from a generated file to a static one via 0941789 param: remove generated loadparm ctx table file and include it directly via 9780113 param: use loadparm_globals struct instead of lp function pointers in s3_helpers via 12aa85a lib/param: rename lp_string to lpcfg_string via 1fb1f6b lib/param: handle non-constant strings properly by passing in a memory context via bce62e6 s4: pass down a memory context when performing share_string_option, to allow substitutions from 497f032 build: check for libarchive version via pkgconfig
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 8f0d06fa5e654f647664727db6f12901579ec2c7 Author: Christian Ambach <a...@samba.org> Date: Wed Feb 19 22:17:01 2014 +0100 heimdal_build: only enable libintl functions if everything was found do not rely on intl.h being available but also on the functions being usable This should fix the build on HP-UX Bug: https://bugzilla.samba.org/show_bug.cgi?id=9911 Signed-off-by: Christian Ambach <a...@samba.org> Change-Id: I5dd88d2d5216b778624778455cca99b32d0be58f Reviewed-by: Andrew Bartlett <abart...@samba.org> Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Thu Feb 20 01:28:24 CET 2014 on sn-devel-104 commit 0c8e9cc7570f7498b4ea533325a1d324c3e75be9 Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Feb 14 10:38:55 2014 +1300 param: add const to a local variable to prevent a warning about lp_fstype Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: Idc9217eb812b018fed933f84c2c4f1818f8f9372 Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> commit 8246e53bb693231213d5f9586ff4baefbc3ec6a8 Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Jan 24 17:39:41 2014 +1300 param: remove lp_dnsdomain from s3 With the use of the shared globals structure, lp_dnsdomain is no longer used in the code and removing it would remove a notable special case Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: I59526c40c58e132a134d67fa7944dfeacd05f4c6 Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> commit a7d2f9a08ed11dba157d6fe5c03581114478e3d3 Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Jan 24 16:45:31 2014 +1300 param: change s3_param.h from a generated file to a static one Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: I131e37ec92f7a826caec382023915c5e4b4c52be Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> commit 09417890635423a3a0cdae1617595a7af9a96808 Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Jan 24 15:52:15 2014 +1300 param: remove generated loadparm ctx table file and include it directly Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: I5f1d42e3ae6495accf7a711938cc28c03ab2cd62 Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> commit 9780113846760dd1cafd11e4091aad28f82639d4 Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Jan 24 15:38:59 2014 +1300 param: use loadparm_globals struct instead of lp function pointers in s3_helpers Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: I4507cdbf111b7f9dca3ca18ee2bf242ffdfeb4e7 Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> commit 12aa85a90c5f06e1d585918d8e44ebc45137f89e Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Feb 14 10:23:36 2014 +1300 lib/param: rename lp_string to lpcfg_string This avoids the confusion with lp_string in source3. Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: Ic6df23b9e5986f7d1fd6253e30ebfdc1a3a45a41 Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> commit 1fb1f6bc0dad00d1eb2d1e2aff34e9d3b2714421 Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Jan 17 10:30:37 2014 +1300 lib/param: handle non-constant strings properly by passing in a memory context Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: Ic6bb1c709defd2b0f35fc7b877da0badca385776 Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> commit bce62e600085270f26053882c5a4e35f5fe4fb5e Author: Garming Sam <garm...@catalyst.net.nz> Date: Fri Jan 17 10:16:12 2014 +1300 s4: pass down a memory context when performing share_string_option, to allow substitutions Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Change-Id: I24b36db3ac11834c3268b2da929e214c10268b16 Reviewed-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Nadezhda Ivanova <nivan...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/param/loadparm.c | 60 +++++++------- lib/param/loadparm.h | 3 + lib/param/s3_param.h | 20 +++++ lib/param/wscript_build | 6 -- script/generate_param.py | 112 ++++--------------------- source3/include/proto.h | 1 - source3/param/loadparm.c | 8 ++- source3/param/loadparm_ctx.c | 20 ++++- source3/param/wscript_build | 8 +-- source3/smbd/trans2.c | 2 +- source4/heimdal_build/config.h | 3 +- source4/nbt_server/wins/winsdb.c | 2 +- source4/ntvfs/cifs/vfs_cifs.c | 38 +++++++-- source4/ntvfs/cifs_posix_cli/vfs_cifs_posix.c | 2 +- source4/ntvfs/ipc/rap_server.c | 2 +- source4/ntvfs/posix/vfs_posix.c | 12 ++- source4/ntvfs/simple/vfs_simple.c | 2 +- source4/ntvfs/smb2/vfs_smb2.c | 44 ++++++++-- source4/ntvfs/sysdep/sys_lease.c | 9 ++- source4/ntvfs/sysdep/sys_notify.c | 2 +- source4/param/share.c | 4 +- source4/param/share.h | 4 +- source4/param/share_classic.c | 27 +++--- source4/param/share_ldb.c | 24 ++++-- source4/rpc_server/common/share_info.c | 23 ++++-- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 22 +++--- source4/rpc_server/srvsvc/srvsvc_ntvfs.c | 6 +- source4/smb_server/smb/service.c | 5 +- source4/smb_server/smb2/tcon.c | 5 +- 29 files changed, 252 insertions(+), 224 deletions(-) create mode 100644 lib/param/s3_param.h Changeset truncated at 500 lines: diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 1d5ae9e..51053ba 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -149,7 +149,7 @@ struct loadparm_service *lpcfg_default_service(struct loadparm_context *lp_ctx) * callers without affecting the source string. */ -static const char *lp_string(const char *s) +static const char *lpcfg_string(const char *s) { #if 0 /* until REWRITE done to make thread-safe */ size_t len = s ? strlen(s) : 0; @@ -162,7 +162,7 @@ static const char *lp_string(const char *s) present all the time? */ #if 0 - DEBUG(10, ("lp_string(%s)\n", s)); + DEBUG(10, ("lpcfg_string(%s)\n", s)); #endif #if 0 /* until REWRITE done to make thread-safe */ @@ -207,50 +207,34 @@ static struct loadparm_context *global_loadparm_context; #define lpcfg_global_service(i) global_loadparm_context->services[i] #define FN_GLOBAL_STRING(fn_name,var_name) \ - _PUBLIC_ const char *lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) {\ + _PUBLIC_ char *lpcfg_ ## fn_name(struct loadparm_context *lp_ctx, TALLOC_CTX *ctx) {\ if (lp_ctx == NULL) return NULL; \ if (lp_ctx->s3_fns) { \ - smb_panic( __location__ ": " #fn_name " not implemented because it is an allocated and substiuted string"); \ + return lp_ctx->globals->var_name ? lp_ctx->s3_fns->lp_string(ctx, lp_ctx->globals->var_name) : talloc_strdup(ctx, ""); \ } \ - return lp_ctx->globals->var_name ? lp_string(lp_ctx->globals->var_name) : ""; \ + return lp_ctx->globals->var_name ? talloc_strdup(ctx, lpcfg_string(lp_ctx->globals->var_name)) : talloc_strdup(ctx, ""); \ } #define FN_GLOBAL_CONST_STRING(fn_name,var_name) \ _PUBLIC_ const char *lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) { \ if (lp_ctx == NULL) return NULL; \ - if (lp_ctx->s3_fns) { \ - SMB_ASSERT(lp_ctx->s3_fns->fn_name); \ - return lp_ctx->s3_fns->fn_name(); \ - } \ - return lp_ctx->globals->var_name ? lp_string(lp_ctx->globals->var_name) : ""; \ + return lp_ctx->globals->var_name ? lpcfg_string(lp_ctx->globals->var_name) : ""; \ } #define FN_GLOBAL_LIST(fn_name,var_name) \ _PUBLIC_ const char **lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) { \ if (lp_ctx == NULL) return NULL; \ - if (lp_ctx->s3_fns) { \ - SMB_ASSERT(lp_ctx->s3_fns->fn_name); \ - return lp_ctx->s3_fns->fn_name(); \ - } \ return lp_ctx->globals->var_name; \ } #define FN_GLOBAL_BOOL(fn_name,var_name) \ _PUBLIC_ bool lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) {\ if (lp_ctx == NULL) return false; \ - if (lp_ctx->s3_fns) { \ - SMB_ASSERT(lp_ctx->s3_fns->fn_name); \ - return lp_ctx->s3_fns->fn_name(); \ - } \ return lp_ctx->globals->var_name; \ } #define FN_GLOBAL_INTEGER(fn_name,var_name) \ _PUBLIC_ int lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) { \ - if (lp_ctx->s3_fns) { \ - SMB_ASSERT(lp_ctx->s3_fns->fn_name); \ - return lp_ctx->s3_fns->fn_name(); \ - } \ return lp_ctx->globals->var_name; \ } @@ -258,13 +242,17 @@ static struct loadparm_context *global_loadparm_context; * loadparm_service is shared and lpcfg_service() checks the ->s3_fns * hook */ #define FN_LOCAL_STRING(fn_name,val) \ + _PUBLIC_ char *lpcfg_ ## fn_name(struct loadparm_service *service, \ + struct loadparm_service *sDefault, TALLOC_CTX *ctx) { \ + return(talloc_strdup(ctx, lpcfg_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault->val)))); \ + } + +#define FN_LOCAL_CONST_STRING(fn_name,val) \ _PUBLIC_ const char *lpcfg_ ## fn_name(struct loadparm_service *service, \ struct loadparm_service *sDefault) { \ - return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault->val))); \ + return((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault->val)); \ } -#define FN_LOCAL_CONST_STRING(fn_name,val) FN_LOCAL_STRING(fn_name, val) - #define FN_LOCAL_LIST(fn_name,val) \ _PUBLIC_ const char **lpcfg_ ## fn_name(struct loadparm_service *service, \ struct loadparm_service *sDefault) {\ @@ -450,7 +438,7 @@ const char *lpcfg_parm_string(struct loadparm_context *lp_ctx, const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); if (value) - return lp_string(value); + return lpcfg_string(value); return NULL; } @@ -720,7 +708,7 @@ bool lpcfg_add_home(struct loadparm_context *lp_ctx, || strequal(default_service->path, lp_ctx->sDefault->path)) { service->path = talloc_strdup(service, pszHomedir); } else { - service->path = string_sub_talloc(service, lpcfg_path(default_service, lp_ctx->sDefault), "%H", pszHomedir); + service->path = string_sub_talloc(service, lpcfg_path(default_service, lp_ctx->sDefault, service), "%H", pszHomedir); } if (!(*(service->comment))) { @@ -2398,6 +2386,7 @@ struct loadparm_context *loadparm_init_s3(TALLOC_CTX *mem_ctx, return NULL; } loadparm_context->s3_fns = s3_fns; + loadparm_context->globals = s3_fns->globals; return loadparm_context; } @@ -2421,13 +2410,21 @@ const char *lp_default_path(void) static bool lpcfg_update(struct loadparm_context *lp_ctx) { struct debug_settings settings; - lpcfg_add_auto_services(lp_ctx, lpcfg_auto_services(lp_ctx)); + TALLOC_CTX *tmp_ctx; + + tmp_ctx = talloc_new(lp_ctx); + if (tmp_ctx == NULL) { + return false; + } + + lpcfg_add_auto_services(lp_ctx, lpcfg_auto_services(lp_ctx, tmp_ctx)); if (!lp_ctx->globals->wins_server_list && lp_ctx->globals->we_are_a_wins_server) { lpcfg_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } if (!lp_ctx->global) { + TALLOC_FREE(tmp_ctx); return true; } @@ -2456,6 +2453,7 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx) unsetenv("SOCKET_TESTNONBLOCK"); } + TALLOC_FREE(tmp_ctx); return true; } @@ -2621,7 +2619,7 @@ struct loadparm_service *lpcfg_service(struct loadparm_context *lp_ctx, const char *lpcfg_servicename(const struct loadparm_service *service) { - return lp_string((const char *)service->szService); + return lpcfg_string((const char *)service->szService); } /** @@ -2630,7 +2628,7 @@ const char *lpcfg_servicename(const struct loadparm_service *service) const char *lpcfg_volume_label(struct loadparm_service *service, struct loadparm_service *sDefault) { const char *ret; - ret = lp_string((const char *)((service != NULL && service->volume != NULL) ? + ret = lpcfg_string((const char *)((service != NULL && service->volume != NULL) ? service->volume : sDefault->volume)); if (!*ret) return lpcfg_servicename(service); @@ -2643,7 +2641,7 @@ const char *lpcfg_volume_label(struct loadparm_service *service, struct loadparm const char *lpcfg_printername(struct loadparm_service *service, struct loadparm_service *sDefault) { const char *ret; - ret = lp_string((const char *)((service != NULL && service->_printername != NULL) ? + ret = lpcfg_string((const char *)((service != NULL && service->_printername != NULL) ? service->_printername : sDefault->_printername)); if (ret == NULL || (ret != NULL && *ret == '\0')) ret = lpcfg_servicename(service); diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h index 8a04b3f..60b76c4 100644 --- a/lib/param/loadparm.h +++ b/lib/param/loadparm.h @@ -252,6 +252,9 @@ int lp_find_server_role(int server_role, int security, int domain_logons, int do int lp_find_security(int server_role, int security); bool lp_is_security_and_server_role_valid(int server_role, int security); +struct loadparm_global * get_globals(void); +char * lp_string(TALLOC_CTX *, const char *); + /** * Check if two parameters are equal. */ diff --git a/lib/param/s3_param.h b/lib/param/s3_param.h new file mode 100644 index 0000000..106c480 --- /dev/null +++ b/lib/param/s3_param.h @@ -0,0 +1,20 @@ +#ifndef __S3_PARAM_H__ +#define __S3_PARAM_H__ + +struct loadparm_s3_helpers +{ + const char * (*get_parametric)(struct loadparm_service *, const char *type, const char *option); + 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 (*get_numservices)(void); + bool (*load)(const char *filename); + bool (*set_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); + struct loadparm_global *globals; +}; + +#endif /* __S3_PARAM_H__ */ diff --git a/lib/param/wscript_build b/lib/param/wscript_build index 256dfcb..8fe751c 100644 --- a/lib/param/wscript_build +++ b/lib/param/wscript_build @@ -18,12 +18,6 @@ bld.SAMBA_GENERATOR('param_local.h', group='build_source', rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=PARAMDEFS --scope=LOCAL') -bld.SAMBA_GENERATOR('s3_param.h', - source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml', - target='s3_param.h', - group='build_source', - rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=S3PARAM') - bld.SAMBA_GENERATOR('param_global.h', source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml', target='param_global.h', diff --git a/script/generate_param.py b/script/generate_param.py index 4e04b3a..d79c13c 100644 --- a/script/generate_param.py +++ b/script/generate_param.py @@ -35,8 +35,8 @@ parser.add_option("-f", "--file", dest="filename", help="input file", metavar="FILE") parser.add_option("-o", "--output", dest="output", help='output file', metavar="FILE") -parser.add_option("--mode", type="choice", metavar="<FUNCTIONS|S3PROTO|LIBPROTO|PARAMDEFS|S3PARAM|S3TABLE>", - choices=["FUNCTIONS", "S3PROTO", "LIBPROTO", "PARAMDEFS", "S3PARAM", "S3TABLE"], default="FUNCTIONS") +parser.add_option("--mode", type="choice", metavar="<FUNCTIONS|S3PROTO|LIBPROTO|PARAMDEFS>", + choices=["FUNCTIONS", "S3PROTO", "LIBPROTO", "PARAMDEFS"], default="FUNCTIONS") parser.add_option("--scope", metavar="<GLOBAL|LOCAL>", choices = ["GLOBAL", "LOCAL"], default="GLOBAL") @@ -177,7 +177,7 @@ def make_lib_proto(path_in, path_out): continue output_string = "" - if parameter['constant'] or parameter['type'] == 'string': + if parameter['constant']: output_string += 'const ' param_type = mapping.get(parameter['type']) if param_type is None: @@ -186,12 +186,20 @@ def make_lib_proto(path_in, path_out): output_string += "lpcfg_%s" % parameter['function'] - if parameter['context'] == 'G': - output_string += '(struct loadparm_context *);\n' - elif parameter['context'] == 'S': - output_string += '(struct loadparm_service *, struct loadparm_service *);\n' + if parameter['type'] == 'string' and not parameter['constant']: + if parameter['context'] == 'G': + output_string += '(struct loadparm_context *, TALLOC_CTX *ctx);\n' + elif parameter['context'] == 'S': + output_string += '(struct loadparm_service *, struct loadparm_service *, TALLOC_CTX *ctx);\n' + else: + raise Exception(parameter['name'] + " has an invalid param type " + parameter['type']) else: - raise Exception(parameter['name'] + " has an invalid param type " + parameter['type']) + if parameter['context'] == 'G': + output_string += '(struct loadparm_context *);\n' + elif parameter['context'] == 'S': + output_string += '(struct loadparm_service *, struct loadparm_service *);\n' + else: + raise Exception(parameter['name'] + " has an invalid param type " + parameter['type']) file_out.write(output_string) @@ -250,90 +258,6 @@ def make_param_defs(path_in, path_out, scope): finally: file_out.close() -def make_s3_param(path_in, path_out): - file_out = open(path_out, 'w') - try: - file_out.write('/* This file was automatically generated by generate_param.py. DO NOT EDIT */\n\n') - header = get_header(path_out) - file_out.write("#ifndef %s\n" % header) - file_out.write("#define %s\n\n" % header) - file_out.write("struct loadparm_s3_helpers\n") - file_out.write("{\n") - file_out.write("\tconst char * (*get_parametric)(struct loadparm_service *, const char *type, const char *option);\n") - file_out.write("\tstruct parm_struct * (*get_parm_struct)(const char *param_name);\n") - file_out.write("\tvoid * (*get_parm_ptr)(struct loadparm_service *service, struct parm_struct *parm);\n") - file_out.write("\tstruct loadparm_service * (*get_service)(const char *service_name);\n") - file_out.write("\tstruct loadparm_service * (*get_default_loadparm_service)(void);\n") - file_out.write("\tstruct loadparm_service * (*get_servicebynum)(int snum);\n") - file_out.write("\tint (*get_numservices)(void);\n") - file_out.write("\tbool (*load)(const char *filename);\n") - file_out.write("\tbool (*set_cmdline)(const char *pszParmName, const char *pszParmValue);\n") - file_out.write("\tvoid (*dump)(FILE *f, bool show_defaults, int maxtoprint);\n") - file_out.write("\tconst char * (*dnsdomain)(void);\n") - - for parameter in iterate_all(path_in): - # filter out parameteric options - if ':' in parameter['name']: - continue - if parameter['context'] != 'G': - continue - # STRING isn't handle yet properly - if parameter['type'] == 'string' and not parameter['constant']: - continue - output_string = "\t" - if parameter['constant'] or parameter['type'] == 'string': - output_string += 'const ' - param_type = mapping.get(parameter['type']) - if param_type is None: - raise Exception(parameter['name'] + " has an invalid context " + parameter['context']) - output_string += param_type - - output_string += " (*%s)(void);\n" % parameter['function'] - file_out.write(output_string) - - file_out.write("};\n") - file_out.write("\n#endif /* %s */\n\n" % header) - finally: - file_out.close() - -def make_s3_param_ctx_table(path_in, path_out): - file_out = open(path_out, 'w') - try: - file_out.write('/* This file was automatically generated by generate_param.py. DO NOT EDIT */\n\n') - file_out.write("static const struct loadparm_s3_helpers s3_fns =\n") - file_out.write("{\n") - file_out.write("\t.get_parametric = lp_parm_const_string_service,\n") - file_out.write("\t.get_parm_struct = lp_get_parameter,\n") - file_out.write("\t.get_parm_ptr = lp_parm_ptr,\n") - file_out.write("\t.get_service = lp_service_for_s4_ctx,\n") - file_out.write("\t.get_servicebynum = lp_servicebynum_for_s4_ctx,\n") - file_out.write("\t.get_default_loadparm_service = lp_default_loadparm_service,\n") - file_out.write("\t.get_numservices = lp_numservices,\n") - file_out.write("\t.load = lp_load_for_s4_ctx,\n") - file_out.write("\t.set_cmdline = lp_set_cmdline,\n") - file_out.write("\t.dump = lp_dump,\n") - file_out.write("\t.dnsdomain = lp_dnsdomain,\n") - header = get_header(path_out) - - for parameter in iterate_all(path_in): - # filter out parameteric options - if ':' in parameter['name']: - continue - if parameter['context'] != 'G': - continue - # STRING isn't handle yet properly - if parameter['type'] == 'string' and not parameter['constant']: - continue - output_string = "\t.%s" % parameter['function'] - output_string += " = lp_%s,\n" % parameter['function'] - file_out.write(output_string) - - file_out.write("};") - finally: - file_out.close() - - - if options.mode == 'FUNCTIONS': generate_functions(options.filename, options.output) elif options.mode == 'S3PROTO': @@ -342,7 +266,3 @@ elif options.mode == 'LIBPROTO': make_lib_proto(options.filename, options.output) elif options.mode == 'PARAMDEFS': make_param_defs(options.filename, options.output, options.scope) -elif options.mode == 'S3PARAM': - make_s3_param(options.filename, options.output) -elif options.mode == 'S3TABLE': - make_s3_param_ctx_table(options.filename, options.output) diff --git a/source3/include/proto.h b/source3/include/proto.h index 28c26a9..a6a6815 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -989,7 +989,6 @@ NTSTATUS trust_pw_change(struct netlogon_creds_cli_context *context, char *lp_servicename(TALLOC_CTX *ctx, int); const char *lp_const_servicename(int); bool lp_autoloaded(int); -const char *lp_dnsdomain(void); int lp_winbind_max_domain_connections(void); bool lp_idmap_range(const char *domain_name, uint32_t *low, uint32_t *high); bool lp_idmap_default_range(uint32_t *low, uint32_t *high); diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index f2d1e6b..2114fa3 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -1072,7 +1072,7 @@ static void init_globals(bool reinit_globals) callers without affecting the source string. ********************************************************************/ -static char *lp_string(TALLOC_CTX *ctx, const char *s) +char *lp_string(TALLOC_CTX *ctx, const char *s) { char *ret; @@ -1189,7 +1189,6 @@ FN_LOCAL_CONST_STRING(const_servicename, szService) /* These functions cannot be auto-generated */ FN_LOCAL_BOOL(autoloaded, autoloaded) -FN_GLOBAL_CONST_STRING(dnsdomain, dnsdomain) /* local prototypes */ @@ -5263,3 +5262,8 @@ int lp_security(void) return lp_find_security(lp__server_role(), lp__security()); } + +struct loadparm_global * get_globals(void) +{ + return &Globals; +} diff --git a/source3/param/loadparm_ctx.c b/source3/param/loadparm_ctx.c index 5cbc920..efae8cb 100644 --- a/source3/param/loadparm_ctx.c +++ b/source3/param/loadparm_ctx.c @@ -56,9 +56,25 @@ static bool lp_load_for_s4_ctx(const char *filename) return status; } -#include "loadparm_ctx_table.c" +static struct loadparm_s3_helpers s3_fns = +{ + .get_parametric = lp_parm_const_string_service, + .get_parm_struct = lp_get_parameter, + .get_parm_ptr = lp_parm_ptr, + .get_service = lp_service_for_s4_ctx, + .get_servicebynum = lp_servicebynum_for_s4_ctx, + .get_default_loadparm_service = lp_default_loadparm_service, + .get_numservices = lp_numservices, + .load = lp_load_for_s4_ctx, + .set_cmdline = lp_set_cmdline, + .dump = lp_dump, +}; const struct loadparm_s3_helpers *loadparm_s3_helpers(void) { - return &s3_fns; + struct loadparm_s3_helpers *helpers; + helpers = &s3_fns; + helpers->globals = get_globals(); + helpers->lp_string = lp_string; + return helpers; } diff --git a/source3/param/wscript_build b/source3/param/wscript_build index 34a906e..6c440f1 100644 --- a/source3/param/wscript_build +++ b/source3/param/wscript_build @@ -6,7 +6,7 @@ bld.SAMBA3_SUBSYSTEM('PARAM_UTIL', bld.SAMBA3_SUBSYSTEM('LOADPARM_CTX', source='loadparm_ctx.c', - deps='''talloc s3_param.h param''') + deps='''talloc param''') bld.SAMBA_GENERATOR('s3_param_proto_h', source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml', @@ -14,12 +14,6 @@ bld.SAMBA_GENERATOR('s3_param_proto_h', group='build_source', rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=S3PROTO') -bld.SAMBA_GENERATOR('s3_loadparm_ctx_table_c', - source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml', - target='loadparm_ctx_table.c', - group='build_source', - rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=S3TABLE') - bld.SAMBA3_PYTHON('pys3param', source='pyparam.c', deps='param', diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index aebb58a..4afb27e 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -3077,7 +3077,7 @@ NTSTATUS smbd_do_qfsinfo(connection_struct *conn, int data_len = 0, len; const char *vname = volume_label(talloc_tos(), SNUM(conn)); int snum = SNUM(conn); - char *fstype = lp_fstype(SNUM(conn)); + const char *fstype = lp_fstype(SNUM(conn)); const char *filename = NULL; uint32 additional_flags = 0; -- Samba Shared Repository