summaryrefslogtreecommitdiff
path: root/source4/param
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-02-04 04:58:48 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:32 -0500
commitdb4ba6e6909b4cf80b2b18f1a0d34b613de4be25 (patch)
treedb881cfc782a369ba4d80b8500b24c0c164b2578 /source4/param
parent567b7a90f6c968bbe09115bb38da9c781c669a50 (diff)
downloadsamba-db4ba6e6909b4cf80b2b18f1a0d34b613de4be25.tar.gz
samba-db4ba6e6909b4cf80b2b18f1a0d34b613de4be25.tar.bz2
samba-db4ba6e6909b4cf80b2b18f1a0d34b613de4be25.zip
r5221: replace the str_list_*() code with new code based on talloc(). This is
a precursor to adding the wins client code in the nbt server. (This used to be commit e8e499755ab667015740b35a7787134ebe852954)
Diffstat (limited to 'source4/param')
-rw-r--r--source4/param/loadparm.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c
index 90f8c682fd..f837545999 100644
--- a/source4/param/loadparm.c
+++ b/source4/param/loadparm.c
@@ -1437,7 +1437,7 @@ char **lp_parm_string_list(int lookup_service, const char *type, const char *opt
const char *value = get_parametrics(lookup_service, type, option);
if (value)
- return str_list_make(value, separator);
+ return str_list_make(NULL, value, separator);
return NULL;
}
@@ -1513,15 +1513,17 @@ static void free_service(service *pservice)
for (i = 0; parm_table[i].label; i++) {
if ((parm_table[i].type == P_STRING ||
parm_table[i].type == P_USTRING) &&
- parm_table[i].class == P_LOCAL)
+ parm_table[i].class == P_LOCAL) {
string_free((char **)
(((char *)pservice) +
PTR_DIFF(parm_table[i].ptr, &sDefault)));
- else if (parm_table[i].type == P_LIST &&
- parm_table[i].class == P_LOCAL)
- str_list_free((char ***)
- (((char *)pservice) +
- PTR_DIFF(parm_table[i].ptr, &sDefault)));
+ } else if (parm_table[i].type == P_LIST &&
+ parm_table[i].class == P_LOCAL) {
+ char ***listp = (char ***)(((char *)pservice) +
+ PTR_DIFF(parm_table[i].ptr, &sDefault));
+ talloc_free(*listp);
+ *listp = NULL;
+ }
}
DEBUG(5,("Freeing parametrics:\n"));
@@ -1853,7 +1855,7 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL
strupper(*(char **)dest_ptr);
break;
case P_LIST:
- str_list_copy((char ***)dest_ptr, *(const char ***)src_ptr);
+ *(char ***)dest_ptr = str_list_copy(NULL, *(const char ***)src_ptr);
break;
default:
break;
@@ -2365,7 +2367,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
break;
case P_LIST:
- *(char ***)parm_ptr = str_list_make(pszParmValue, NULL);
+ *(char ***)parm_ptr = str_list_make(NULL, pszParmValue, NULL);
break;
case P_STRING:
@@ -2588,7 +2590,8 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2)
return (*((char *)ptr1) == *((char *)ptr2));
case P_LIST:
- return str_list_compare(*(char ***)ptr1, *(char ***)ptr2);
+ return str_list_equal((const char **)(*(char ***)ptr1),
+ (const char **)(*(char ***)ptr2));
case P_STRING:
case P_USTRING:
@@ -2664,8 +2667,8 @@ static BOOL is_default(int i)
return False;
switch (parm_table[i].type) {
case P_LIST:
- return str_list_compare (parm_table[i].def.lvalue,
- *(char ***)parm_table[i].ptr);
+ return str_list_equal((const char **)parm_table[i].def.lvalue,
+ (const char **)(*(char ***)parm_table[i].ptr));
case P_STRING:
case P_USTRING:
return strequal(parm_table[i].def.svalue,
@@ -2922,8 +2925,8 @@ static void lp_save_defaults(void)
continue;
switch (parm_table[i].type) {
case P_LIST:
- str_list_copy(&(parm_table[i].def.lvalue),
- *(const char ***)parm_table[i].ptr);
+ parm_table[i].def.lvalue = str_list_copy(NULL,
+ *(const char ***)parm_table[i].ptr);
break;
case P_STRING:
case P_USTRING: