Author: jelmer Date: 2007-11-21 14:49:27 +0000 (Wed, 21 Nov 2007) New Revision: 26095
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26095 Log: Add function for import a generic configuration file in a loadparm context. Modified: branches/SAMBA_4_0/ branches/SAMBA_4_0/source/param/generic.c branches/SAMBA_4_0/source/param/loadparm.c branches/SAMBA_4_0/source/param/param.h Changeset: Property changes on: branches/SAMBA_4_0 ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:file-ids ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Modified: branches/SAMBA_4_0/source/param/generic.c =================================================================== --- branches/SAMBA_4_0/source/param/generic.c 2007-11-21 13:47:39 UTC (rev 26094) +++ branches/SAMBA_4_0/source/param/generic.c 2007-11-21 14:49:27 UTC (rev 26095) @@ -64,6 +64,9 @@ struct param_section *section; struct param_opt *p; + SMB_ASSERT(section_name != NULL); + SMB_ASSERT(name != NULL); + section = param_get_section(ctx, section_name); if (section == NULL) { @@ -72,7 +75,7 @@ return NULL; section->name = talloc_strdup(section, section_name); - DLIST_ADD(ctx->sections, section); + DLIST_ADD_END(ctx->sections, section, struct param_section *); } p = param_section_get(section, name); @@ -82,7 +85,7 @@ return NULL; p->key = talloc_strdup(p, name); - DLIST_ADD(section->parameters, p); + DLIST_ADD_END(section->parameters, p, struct param_opt *); } return p; @@ -185,7 +188,7 @@ section->name = talloc_strdup(section, name); - DLIST_ADD(ctx->sections, section); + DLIST_ADD_END(ctx->sections, section, struct param_section *); } /* Make sure this section is on top of the list for param_pfunc */ @@ -235,6 +238,32 @@ return 0; } +int param_use(struct loadparm_context *lp_ctx, struct param_context *ctx) +{ + struct param_section *section; + + for (section = ctx->sections; section; section = section->next) { + struct param_opt *param; + bool isglobal = strcmp(section->name, "global") == 0; + for (param = section->parameters; param; param = param->next) { + if (isglobal) + lp_do_global_parameter(lp_ctx, param->key, + param->value); + else { + struct loadparm_service *service = + lp_service(lp_ctx, section->name); + if (service == NULL) + service = lp_add_service(lp_ctx, &sDefault, section->name); + lp_do_service_parameter(lp_ctx, + service, + param->key, + param->value); + } + } + } + return 0; +} + int param_write(struct param_context *ctx, const char *fn) { int file; Modified: branches/SAMBA_4_0/source/param/loadparm.c =================================================================== --- branches/SAMBA_4_0/source/param/loadparm.c 2007-11-21 13:47:39 UTC (rev 26094) +++ branches/SAMBA_4_0/source/param/loadparm.c 2007-11-21 14:49:27 UTC (rev 26095) @@ -222,7 +222,7 @@ /* This is a default service used to prime a services structure */ -static struct loadparm_service sDefault = { +struct loadparm_service sDefault = { .szService = NULL, .szPath = NULL, .szCopy = NULL, @@ -1031,7 +1031,7 @@ service. ***************************************************************************/ -static struct loadparm_service *add_a_service(struct loadparm_context *lp_ctx, +struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, const struct loadparm_service *pservice, const char *name) { @@ -1073,7 +1073,7 @@ num_to_alloc); if (!tsp) { - DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); + DEBUG(0,("lp_add_service: failed to enlarge ServicePtrs!\n")); return NULL; } else { @@ -1086,7 +1086,7 @@ lp_ctx->ServicePtrs[i] = init_service(talloc_autofree_context()); if (lp_ctx->ServicePtrs[i] == NULL) { - DEBUG(0,("add_a_service: out of memory!\n")); + DEBUG(0,("lp_add_service: out of memory!\n")); return NULL; } copy_service(lp_ctx->ServicePtrs[i], &tservice, NULL); @@ -1107,7 +1107,7 @@ { struct loadparm_service *service; - service = add_a_service(lp_ctx, default_service, pszHomename); + service = lp_add_service(lp_ctx, default_service, pszHomename); if (service == NULL) return false; @@ -1132,24 +1132,13 @@ } /*************************************************************************** - Add a new service, based on an old one. -***************************************************************************/ - -struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, - const char *pszService, - struct loadparm_service *default_service) -{ - return add_a_service(lp_ctx, default_service, pszService); -} - -/*************************************************************************** Add the IPC service. ***************************************************************************/ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, const char *fstype) { - struct loadparm_service *service = add_a_service(lp_ctx, &sDefault, name); + struct loadparm_service *service = lp_add_service(lp_ctx, &sDefault, name); if (service == NULL) return false; @@ -1185,7 +1174,7 @@ { const char *comment = "From Printcap"; struct loadparm_service *service; - service = add_a_service(lp_ctx, default_service, pszPrintername); + service = lp_add_service(lp_ctx, default_service, pszPrintername); if (service == NULL) return false; @@ -2024,7 +2013,7 @@ /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((lp_ctx->currentService = add_a_service(lp_ctx, &sDefault, + if ((lp_ctx->currentService = lp_add_service(lp_ctx, &sDefault, pszSectionName)) == NULL) { DEBUG(0, ("Failed to add a new service\n")); Modified: branches/SAMBA_4_0/source/param/param.h =================================================================== --- branches/SAMBA_4_0/source/param/param.h 2007-11-21 13:47:39 UTC (rev 26094) +++ branches/SAMBA_4_0/source/param/param.h 2007-11-21 14:49:27 UTC (rev 26095) @@ -63,5 +63,6 @@ #include "param/proto.h" extern struct loadparm_context *global_loadparm; +extern struct loadparm_service sDefault; #endif /* _PARAM_H */
