diff options
author | Gerald Carter <jerry@samba.org> | 2005-09-03 16:38:51 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:03:30 -0500 |
commit | 554c22faeefe6932a01aa7bd6e2861c5abd37510 (patch) | |
tree | a7a95d5c121fc129a7b472163b02695cca3707e7 /source | |
parent | cc680bbe22b8bfc5a1900f11c2cbaeca3a9f9922 (diff) | |
download | samba-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.h | 11 | ||||
-rw-r--r-- | source/lib/adt_tree.c | 61 |
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; |