From 99c909c2fa2b847e6f55f6f5706d5f46014f8b86 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Sat, 3 Sep 2005 16:38:51 +0000 Subject: r9998: starting content for maintainers file (This used to be commit 554c22faeefe6932a01aa7bd6e2861c5abd37510) --- source3/include/adt_tree.h | 11 +++++---- source3/lib/adt_tree.c | 61 ++++++---------------------------------------- 2 files changed, 13 insertions(+), 59 deletions(-) (limited to 'source3') diff --git a/source3/include/adt_tree.h b/source3/include/adt_tree.h index 2fbfb55e88..51b6fb1c88 100644 --- a/source3/include/adt_tree.h +++ b/source3/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/source3/lib/adt_tree.c b/source3/lib/adt_tree.c index ad763c2be1..05a470bc49 100644 --- a/source3/lib/adt_tree.c +++ b/source3/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,69 +52,26 @@ 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; } -/************************************************************************** - Delete a tree and free all allocated memory - *************************************************************************/ - -static void pathtree_destroy_children( TREE_NODE *root ) -{ - int i; - - if ( !root ) - return; - - for ( i=0; inum_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; -- cgit