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