svn commit: samba r26095 - in branches/SAMBA_4_0: . source/param
jelmer at samba.org
jelmer at samba.org
Wed Nov 21 14:49:28 GMT 2007
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 */
More information about the samba-cvs
mailing list