]> git.sur5r.net Git - openldap/blobdiff - libraries/libavl/testavl.c
Add security checks to root DSE searches.
[openldap] / libraries / libavl / testavl.c
index 71939f4985d0d6a4213cbead4d71682c7fa67b40..de948d8bcd48193942f8e7bffeaa6cd9d3867b33 100644 (file)
@@ -1,54 +1,60 @@
 /* testavl.c - Test Tim Howes AVL code */
-#include <sys/types.h>
-#include <stdio.h>
-#include "avl.h"
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 
-char *strdup( s )
-char   *s;
-{
-       char    *new;
+#include "portable.h"
+
+#include <stdio.h>
 
-       if ( (new = (char *) malloc( strlen( s ) + 1 )) == NULL )
-               return( NULL );
+#include <ac/stdlib.h>
+#include <ac/string.h>
 
-       strcpy( new, s );
+#define AVL_INTERNAL
+#define AVL_NONREENTRANT 
+#include "avl.h"
 
-       return( new );
-}
+static void ravl_print LDAP_P(( Avlnode *root, int depth ));
+static void myprint LDAP_P(( Avlnode *root ));
 
-main( argc, argv )
-int    argc;
-char   **argv;
+int
+main( int argc, char **argv )
 {
-       Avlnode *tree = NULLAVL;
+       Avlnode *tree = NULL;
        char    command[ 10 ];
        char    name[ 80 ];
        char    *p;
-       int     free(), strcmp();
 
        printf( "> " );
        while ( fgets( command, sizeof( command ), stdin ) != NULL ) {
                switch( *command ) {
                case 'n':       /* new tree */
-                       ( void ) avl_free( tree, free );
-                       tree = NULLAVL;
+                       ( void ) avl_free( tree, (AVL_FREE) free );
+                       tree = NULL;
                        break;
                case 'p':       /* print */
                        ( void ) myprint( tree );
                        break;
                case 't':       /* traverse with first, next */
+#ifdef AVL_NONREENTRANT
                        printf( "***\n" );
                        for ( p = (char * ) avl_getfirst( tree );
-                           p != NULL; p = (char *) avl_getnext( tree, p ) )
+                           p != NULL;
+                               p = (char *) avl_getnext())
                                printf( "%s\n", p );
                        printf( "***\n" );
+#else
+                       printf( "*** reentrant interface not implemented ***" );
+#endif
                        break;
                case 'f':       /* find */
                        printf( "data? " );
                        if ( fgets( name, sizeof( name ), stdin ) == NULL )
-                               exit( 0 );
+                               exit( EXIT_SUCCESS );
                        name[ strlen( name ) - 1 ] = '\0';
-                       if ( (p = (char *) avl_find( tree, name, strcmp ))
+                       if ( (p = (char *) avl_find( tree, name, (AVL_CMP) strcmp ))
                            == NULL )
                                printf( "Not found.\n\n" );
                        else
@@ -57,22 +63,22 @@ char        **argv;
                case 'i':       /* insert */
                        printf( "data? " );
                        if ( fgets( name, sizeof( name ), stdin ) == NULL )
-                               exit( 0 );
+                               exit( EXIT_SUCCESS );
                        name[ strlen( name ) - 1 ] = '\0';
-                       if ( avl_insert( &tree, strdup( name ), strcmp, 
-                           avl_dup_error ) != OK )
+                       if ( avl_insert( &tree, strdup( name ), (AVL_CMP) strcmp, 
+                           avl_dup_error ) != 0 )
                                printf( "\nNot inserted!\n" );
                        break;
                case 'd':       /* delete */
                        printf( "data? " );
                        if ( fgets( name, sizeof( name ), stdin ) == NULL )
-                               exit( 0 );
+                               exit( EXIT_SUCCESS );
                        name[ strlen( name ) - 1 ] = '\0';
-                       if ( avl_delete( &tree, name, strcmp ) == NULL )
+                       if ( avl_delete( &tree, name, (AVL_CMP) strcmp ) == NULL )
                                printf( "\nNot found!\n" );
                        break;
                case 'q':       /* quit */
-                       exit( 0 );
+                       exit( EXIT_SUCCESS );
                        break;
                case '\n':
                        break;
@@ -82,12 +88,11 @@ char        **argv;
 
                printf( "> " );
        }
-       /* NOTREACHED */
+
+       return( 0 );
 }
 
-static ravl_print( root, depth )
-Avlnode        *root;
-int    depth;
+static void ravl_print( Avlnode *root, int depth )
 {
        int     i;
 
@@ -98,20 +103,19 @@ int        depth;
 
        for ( i = 0; i < depth; i++ )
                printf( "   " );
-       printf( "%s %d\n", root->avl_data, root->avl_bf );
+       printf( "%s %d\n", (char *) root->avl_data, root->avl_bf );
 
        ravl_print( root->avl_left, depth+1 );
 }
 
-myprint( root )
-Avlnode        *root;
+static void myprint( Avlnode *root )
 {
        printf( "********\n" );
 
        if ( root == 0 )
                printf( "\tNULL\n" );
        else
-               ( void ) ravl_print( root, 0 );
+               ravl_print( root, 0 );
 
        printf( "********\n" );
 }