From 606abdceacfcad19735cd80f59aad975a9e97b7c Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox@samba.org>
Date: Mon, 15 Dec 2008 13:33:24 +0100
Subject: s3:loadparm: fix newly introduced leading whitespaces to tabs

Michael
---
 source3/param/loadparm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'source3/param')

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 7e7a1e505e..c74246c98e 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -425,7 +425,7 @@ struct service {
 	bool bHideUnReadable;
 	bool bHideUnWriteableFiles;
 	bool bBrowseable;
-       bool bAccessBasedShareEnum;
+	bool bAccessBasedShareEnum;
 	bool bAvailable;
 	bool bRead_only;
 	bool bNo_set_dir;
@@ -569,7 +569,7 @@ static struct service sDefault = {
 	False,			/* bHideUnReadable */
 	False,			/* bHideUnWriteableFiles */
 	True,			/* bBrowseable */
-       False,                  /* bAccessBasedShareEnum */
+	False,			/* bAccessBasedShareEnum */
 	True,			/* bAvailable */
 	True,			/* bRead_only */
 	True,			/* bNo_set_dir */
-- 
cgit 


From 91c543f0b5a539da4194f14dee8cad0f980a117e Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox@samba.org>
Date: Mon, 15 Dec 2008 14:16:06 +0100
Subject: s3:loadparm: rename lp_local_ptr() to lp_local_ptr_by_snum()

Michael
---
 source3/param/loadparm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'source3/param')

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index c74246c98e..3600266310 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -4599,7 +4599,7 @@ static void free_parameter(int snum, struct parm_struct parm)
 	} else if (parm.p_class != P_LOCAL) {
 		return;
 	} else {
-		parm_ptr = lp_local_ptr(snum, parm.ptr);
+		parm_ptr = lp_local_ptr_by_snum(snum, parm.ptr);
 	}
 
 	if ((parm.type == P_STRING) ||
@@ -7171,7 +7171,7 @@ static void init_copymap(struct service *pservice)
  pointer into the default structure.
 ***************************************************************************/
 
-void *lp_local_ptr(int snum, void *ptr)
+void *lp_local_ptr_by_snum(int snum, void *ptr)
 {
 	return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault));
 }
@@ -7225,7 +7225,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
 			       pszParmName));
 			return (True);
 		}
-		parm_ptr = lp_local_ptr(snum, def_ptr);
+		parm_ptr = lp_local_ptr_by_snum(snum, def_ptr);
 	}
 
 	if (snum >= 0) {
-- 
cgit 


From 6244194265f7f1027c16664b2701ce114435a59b Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox@samba.org>
Date: Mon, 15 Dec 2008 14:20:16 +0100
Subject: s3:loadparm: add lp_local_ptr() that operates on a service struct

and use this in lp_local_ptr_by_snum().

Michael
---
 source3/param/loadparm.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

(limited to 'source3/param')

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 3600266310..43fd9d9d3a 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -671,6 +671,8 @@ static void set_server_role(void);
 static void set_default_server_announce_type(void);
 static void set_allowed_client_auth(void);
 
+static void *lp_local_ptr(struct service *service, void *ptr);
+
 static const struct enum_list enum_protocol[] = {
 	{PROTOCOL_NT1, "NT1"},
 	{PROTOCOL_LANMAN2, "LANMAN2"},
@@ -7166,6 +7168,16 @@ static void init_copymap(struct service *pservice)
 			bitmap_set(pservice->copymap, i);
 }
 
+/***************************************************************************
+ Return the local pointer to a parameter given a service struct and the
+ pointer into the default structure.
+***************************************************************************/
+
+static void *lp_local_ptr(struct service *service, void *ptr)
+{
+	return (void *)(((char *)service) + PTR_DIFF(ptr, &sDefault));
+}
+
 /***************************************************************************
  Return the local pointer to a parameter given the service number and the 
  pointer into the default structure.
@@ -7173,7 +7185,7 @@ static void init_copymap(struct service *pservice)
 
 void *lp_local_ptr_by_snum(int snum, void *ptr)
 {
-	return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault));
+	return lp_local_ptr(ServicePtrs[snum], ptr);
 }
 
 /***************************************************************************
-- 
cgit 


From 0b0dc506d4b709b6373a19795276351285679eb3 Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox@samba.org>
Date: Mon, 15 Dec 2008 14:28:03 +0100
Subject: s3:loadparm: rename free_parameter() to free_one_parameter_by_snum()

Michael
---
 source3/param/loadparm.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

(limited to 'source3/param')

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 43fd9d9d3a..580136446b 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -4585,10 +4585,12 @@ static void init_printer_values(struct service *pService)
 	}
 }
 
+
 /**
- * Free the allocated data for one parameter for a given share.
+ * Free the allocated data for one parameter for a given share
+ * specified by an snum.
  */
-static void free_parameter(int snum, struct parm_struct parm)
+static void free_one_parameter_by_snum(int snum, struct parm_struct parm)
 {
 	void *parm_ptr;
 
@@ -4621,7 +4623,7 @@ static void free_parameters(int snum)
 	uint32_t i;
 
 	for (i=0; parm_table[i].label; i++) {
-		free_parameter(snum, parm_table[i]);
+		free_one_parameter_by_snum(snum, parm_table[i]);
 	}
 }
 
-- 
cgit 


From 03f19dad795c247878918de95a8c1f63ec259d13 Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox@samba.org>
Date: Mon, 15 Dec 2008 14:29:34 +0100
Subject: s3:loadparm: rename free_parameters() to free_parameters_by_snum()

Michael
---
 source3/param/loadparm.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

(limited to 'source3/param')

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 580136446b..d44d04a7a7 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -4616,9 +4616,10 @@ static void free_one_parameter_by_snum(int snum, struct parm_struct parm)
 }
 
 /**
- * Free the allocated parameter data for a share.
+ * Free the allocated parameter data for a share specified
+ * by an snum.
  */
-static void free_parameters(int snum)
+static void free_parameters_by_snum(int snum)
 {
 	uint32_t i;
 
@@ -4632,7 +4633,7 @@ static void free_parameters(int snum)
  */
 static void free_global_parameters(void)
 {
-	free_parameters(GLOBAL_SECTION_SNUM);
+	free_parameters_by_snum(GLOBAL_SECTION_SNUM);
 }
 
 /***************************************************************************
@@ -5743,7 +5744,7 @@ static void free_service(struct service *pservice)
 		DEBUG(5, ("free_service: Freeing service %s\n",
 		       pservice->szService));
 
-	free_parameters(getservicebyname(pservice->szService, NULL));
+	free_parameters_by_snum(getservicebyname(pservice->szService, NULL));
 
 	string_free(&pservice->szService);
 	bitmap_free(pservice->copymap);
-- 
cgit 


From c2bd88f145d73e9a8613d32d313954e3ecdcacd2 Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox@samba.org>
Date: Mon, 15 Dec 2008 14:38:51 +0100
Subject: s3:loadparm: add service-struct based variants of the free-parameter
 routines

and use the abstracted free_one_parameter_common() in old
free_one_parameter_by_snum() as well as in new free_one_parameter()

Michael
---
 source3/param/loadparm.c | 53 +++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 46 insertions(+), 7 deletions(-)

(limited to 'source3/param')

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index d44d04a7a7..f2a39d12de 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -4585,6 +4585,51 @@ static void init_printer_values(struct service *pService)
 	}
 }
 
+/**
+ * Common part of freeing allocated data for one parameter.
+ */
+static void free_one_parameter_common(void *parm_ptr,
+				      struct parm_struct parm)
+{
+	if ((parm.type == P_STRING) ||
+	    (parm.type == P_USTRING))
+	{
+		string_free((char**)parm_ptr);
+	} else if (parm.type == P_LIST) {
+		TALLOC_FREE(*((char***)parm_ptr));
+	}
+}
+
+/**
+ * Free the allocated data for one parameter for a share
+ * given as a service struct.
+ */
+static void free_one_parameter(struct service *service,
+			       struct parm_struct parm)
+{
+	void *parm_ptr;
+
+	if (parm.p_class != P_LOCAL) {
+		return;
+	}
+
+	parm_ptr = lp_local_ptr(service, parm.ptr);
+
+	free_one_parameter_common(parm_ptr, parm);
+}
+
+/**
+ * Free the allocated parameter data of a share given
+ * as a service struct.
+ */
+static void free_parameters(struct service *service)
+{
+	uint32_t i;
+
+	for (i=0; parm_table[i].label; i++) {
+		free_one_parameter(service, parm_table[i]);
+	}
+}
 
 /**
  * Free the allocated data for one parameter for a given share
@@ -4606,13 +4651,7 @@ static void free_one_parameter_by_snum(int snum, struct parm_struct parm)
 		parm_ptr = lp_local_ptr_by_snum(snum, parm.ptr);
 	}
 
-	if ((parm.type == P_STRING) ||
-	    (parm.type == P_USTRING))
-	{
-		string_free((char**)parm_ptr);
-	} else if (parm.type == P_LIST) {
-		TALLOC_FREE(*((char***)parm_ptr));
-	}
+	free_one_parameter_common(parm_ptr, parm);
 }
 
 /**
-- 
cgit 


From 51118b1974fd91d7f60ed1a68e1eb5717690362b Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox@samba.org>
Date: Mon, 15 Dec 2008 14:42:13 +0100
Subject: s3:loadparm: fix copy service error (canonicalize_servicename: NULL
 source name)

this was introduced by commit 3358a139d2dc77eb4c842d41722b1acc24bd2cb2.

Michael
---
 source3/param/loadparm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'source3/param')

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index f2a39d12de..9a55067b01 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -5783,7 +5783,7 @@ static void free_service(struct service *pservice)
 		DEBUG(5, ("free_service: Freeing service %s\n",
 		       pservice->szService));
 
-	free_parameters_by_snum(getservicebyname(pservice->szService, NULL));
+	free_parameters(pservice);
 
 	string_free(&pservice->szService);
 	bitmap_free(pservice->copymap);
-- 
cgit