summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2005-09-03 16:38:51 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:03:30 -0500
commit554c22faeefe6932a01aa7bd6e2861c5abd37510 (patch)
treea7a95d5c121fc129a7b472163b02695cca3707e7 /source
parentcc680bbe22b8bfc5a1900f11c2cbaeca3a9f9922 (diff)
downloadsamba-554c22faeefe6932a01aa7bd6e2861c5abd37510.tar.gz
samba-554c22faeefe6932a01aa7bd6e2861c5abd37510.tar.xz
samba-554c22faeefe6932a01aa7bd6e2861c5abd37510.zip
r9998: starting content for maintainers file
Diffstat (limited to 'source')
-rw-r--r--source/include/adt_tree.h11
-rw-r--r--source/lib/adt_tree.c61
2 files changed, 13 insertions, 59 deletions
diff --git a/source/include/adt_tree.h b/source/include/adt_tree.h
index 2fbfb55e889..51b6fb1c88b 100644
--- a/source/include/adt_tree.h
+++ b/source/include/adt_tree.h
@@ -1,7 +1,7 @@
/*
* Unix SMB/CIFS implementation.
* Generic Abstract Data Types
- * Copyright (C) Gerald Carter 2002.
+ * Copyright (C) Gerald Carter 2002-2005.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,17 +39,18 @@ typedef struct _tree_node {
typedef struct _tree_root {
TREE_NODE *root;
+
+ /* not used currently (is it needed?) */
int (*compare)(void* x, void *y);
- void (*free_func)(void *p);
} SORTED_TREE;
/*
* API
*/
-/* initializer and desctrutor */
-SORTED_TREE* pathtree_init( void *data_p, int (cmp_fn)(void*, void*), void (free_fn)(void*) );
-void pathtree_destroy( SORTED_TREE *tree );
+/* create a new tree, talloc_free() to throw it away */
+
+SORTED_TREE* pathtree_init( void *data_p, int (cmp_fn)(void*, void*) );
/* add a new path component */
diff --git a/source/lib/adt_tree.c b/source/lib/adt_tree.c
index ad763c2be19..05a470bc49e 100644
--- a/source/lib/adt_tree.c
+++ b/source/lib/adt_tree.c
@@ -23,8 +23,6 @@
/**************************************************************************
- Initialize the tree's root. The cmp_fn is a callback function used
- for comparision of two children
*************************************************************************/
static BOOL trim_tree_keypath( char *path, char **base, char **new_path )
@@ -54,26 +52,20 @@ static BOOL trim_tree_keypath( char *path, char **base, char **new_path )
for comparision of two children
*************************************************************************/
- SORTED_TREE* pathtree_init( void *data_p,
- int (cmp_fn)(void*, void*),
- void (free_fn)(void*) )
+ SORTED_TREE* pathtree_init( void *data_p, int (cmp_fn)(void*, void*) )
{
SORTED_TREE *tree = NULL;
- if ( !(tree = SMB_MALLOC_P(SORTED_TREE)) )
+ if ( !(tree = TALLOC_ZERO_P(NULL, SORTED_TREE)) )
return NULL;
- ZERO_STRUCTP( tree );
-
tree->compare = cmp_fn;
- tree->free_func = free_fn;
- if ( !(tree->root = SMB_MALLOC_P(TREE_NODE)) ) {
- SAFE_FREE( tree );
+ if ( !(tree->root = TALLOC_ZERO_P(tree, TREE_NODE)) ) {
+ TALLOC_FREE( tree );
return NULL;
}
- ZERO_STRUCTP( tree->root );
tree->root->data_p = data_p;
return tree;
@@ -81,43 +73,6 @@ static BOOL trim_tree_keypath( char *path, char **base, char **new_path )
/**************************************************************************
- Delete a tree and free all allocated memory
- *************************************************************************/
-
-static void pathtree_destroy_children( TREE_NODE *root )
-{
- int i;
-
- if ( !root )
- return;
-
- for ( i=0; i<root->num_children; i++ )
- {
- pathtree_destroy_children( root->children[i] );
- }
-
- SAFE_FREE( root->children );
- SAFE_FREE( root->key );
-
- return;
-}
-
-/**************************************************************************
- Delete a tree and free all allocated memory
- *************************************************************************/
-
- void pathtree_destroy( SORTED_TREE *tree )
-{
- if ( tree->root )
- pathtree_destroy_children( tree->root );
-
- if ( tree->free_func )
- tree->free_func( tree->root );
-
- SAFE_FREE( tree );
-}
-
-/**************************************************************************
Find the next child given a key string
*************************************************************************/
@@ -127,15 +82,13 @@ static TREE_NODE* pathtree_birth_child( TREE_NODE *node, char* key )
TREE_NODE **siblings;
int i;
- if ( !(infant = SMB_MALLOC_P(TREE_NODE)) )
+ if ( !(infant = TALLOC_ZERO_P( node, TREE_NODE)) )
return NULL;
- ZERO_STRUCTP( infant );
-
- infant->key = SMB_STRDUP( key );
+ infant->key = talloc_strdup( infant, key );
infant->parent = node;
- siblings = SMB_REALLOC_ARRAY( node->children, TREE_NODE *, node->num_children+1 );
+ siblings = TALLOC_REALLOC_ARRAY( node, node->children, TREE_NODE *, node->num_children+1 );
if ( siblings )
node->children = siblings;