+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
#include "portable.h"
#include <stdio.h>
-#include <stdlib.h>
+
+#include <ac/stdlib.h>
#include <ac/ctype.h>
#include <ac/socket.h>
file_read( char *path, struct berval *bv )
{
FILE *fp;
- long rlen;
+ ber_slen_t rlen;
int eof;
if (( fp = fopen( path, "r" )) == NULL ) {
eof = feof( fp );
fclose( fp );
- if ( (unsigned long) rlen != bv->bv_len ) {
+ if ( (ber_len_t) rlen != bv->bv_len ) {
perror( path );
free( bv->bv_val );
return( -1 );
}
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
static int
bind_prompt( LDAP *ld, char **dnp, char **passwdp, int *authmethodp,
int freeit )
return( LDAP_SUCCESS );
}
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
int
case 'd':
#ifdef LDAP_DEBUG
ldap_debug = atoi( optarg );
+#ifdef LBER_DEBUG
if ( ldap_debug & LDAP_DEBUG_PACKETS ) {
- lber_debug = ldap_debug;
+ ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &ldap_debug );
}
+#endif
#else
printf( "Compile with -DLDAP_DEBUG for debugging\n" );
#endif
if ( errflg || optind < argc - 1 ) {
fprintf( stderr, usage, argv[ 0 ] );
- exit( 1 );
+ exit( EXIT_FAILURE );
}
- printf( "%sldap_open( %s, %d )\n", cldapflg ? "c" : "",
+ printf( "%s( %s, %d )\n",
+ cldapflg ? "cldap_open" : "ldap_init",
host == NULL ? "(null)" : host, port );
if ( cldapflg ) {
ld = cldap_open( host, port );
#endif /* LDAP_CONNECTIONLESS */
} else {
- ld = ldap_open( host, port );
+ ld = ldap_init( host, port );
}
if ( ld == NULL ) {
- perror( "ldap_open" );
- exit(1);
+ perror( cldapflg ? "cldap_open" : "ldap_init" );
+ exit( EXIT_FAILURE );
}
if ( copyfname != NULL ) {
if ( (ld->ld_sb.sb_fd = open( copyfname, O_WRONLY | O_CREAT,
0600 )) == -1 ) {
perror( copyfname );
- exit ( 1 );
+ exit ( EXIT_FAILURE );
}
ld->ld_sb.sb_options = copyoptions;
}
#ifdef LDAP_DEBUG
getline( line, sizeof(line), stdin, "debug level? " );
ldap_debug = atoi( line );
+#ifdef LBER_DEBUG
if ( ldap_debug & LDAP_DEBUG_PACKETS ) {
- lber_debug = ldap_debug;
+ ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &ldap_debug );
}
+#endif
#else
printf( "Compile with -DLDAP_DEBUG for debugging\n" );
#endif
if ( cldapflg )
cldap_close( ld );
#endif /* LDAP_CONNECTIONLESS */
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
- if ( !cldapflg )
-#else /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
- if ( !cldapflg && bound )
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
+
+ if ( !cldapflg ) {
ldap_unbind( ld );
- exit( 0 );
+ }
+ exit( EXIT_SUCCESS );
break;
case 'r': /* result or remove */
printf( "\nresult: msgtype %d msgid %d\n",
msgtype, res->lm_msgid );
handle_result( ld, res );
- res = NULLMSG;
+ res = NULL;
break;
case 'm': /* remove */
printf( "\nresult: msgid %d\n",
res->lm_msgid );
handle_result( ld, res );
- res = NULLMSG;
+ res = NULL;
}
#endif /* LDAP_CONNECTIONLESS */
} else {
else {
printf( "\nresult: err %d\n", id );
handle_result( ld, res );
- res = NULLMSG;
+ res = NULL;
}
free_list( types );
break;
}
#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
getline( line, sizeof(line), stdin,
"Recognize and chase referrals (0=no, 1=yes)?" );
if ( atoi( line ) != 0 ) {
ldap_set_rebind_proc( ld, bind_prompt );
}
}
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
break;
case 'O': /* set cache options */
break;
default:
- printf( "Unknown result type 0x%x\n", lm->lm_msgtype );
+ printf( "Unknown result type 0x%lx\n",
+ (unsigned long) lm->lm_msgtype );
print_ldap_result( ld, lm, "unknown" );
}
}
/*
if ( ld->ld_error != NULL && *ld->ld_error != '\0' )
fprintf( stderr, "Additional info: %s\n", ld->ld_error );
- if ( NAME_ERROR( ld->ld_errno ) && ld->ld_matched != NULL )
+ if ( LDAP_NAME_ERROR( ld->ld_errno ) && ld->ld_matched != NULL )
fprintf( stderr, "Matched DN: %s\n", ld->ld_matched );
*/
}
static void
print_search_entry( LDAP *ld, LDAPMessage *res )
{
- BerElement *ber;
- char *a, *dn, *ufn;
- struct berval **vals;
- int i;
LDAPMessage *e;
- for ( e = ldap_first_entry( ld, res ); e != NULLMSG;
- e = ldap_next_entry( ld, e ) ) {
+ for ( e = ldap_first_entry( ld, res ); e != NULL;
+ e = ldap_next_entry( ld, e ) )
+ {
+ BerElement *ber = NULL;
+ char *a, *dn, *ufn;
+
if ( e->lm_msgtype == LDAP_RES_SEARCH_RESULT )
break;
free( ufn );
for ( a = ldap_first_attribute( ld, e, &ber ); a != NULL;
- a = ldap_next_attribute( ld, e, ber ) ) {
+ a = ldap_next_attribute( ld, e, ber ) )
+ {
+ struct berval **vals;
+
printf( "\t\tATTR: %s\n", a );
if ( (vals = ldap_get_values_len( ld, e, a ))
== NULL ) {
printf( "\t\t\t(no values)\n" );
} else {
+ int i;
for ( i = 0; vals[i] != NULL; i++ ) {
int j, nonascii;
nonascii = 0;
- for ( j = 0; (unsigned long) j < vals[i]->bv_len; j++ )
+ for ( j = 0; (ber_len_t) j < vals[i]->bv_len; j++ )
if ( !isascii( vals[i]->bv_val[j] ) ) {
nonascii = 1;
break;
if ( nonascii ) {
printf( "\t\t\tlength (%ld) (not ascii)\n", vals[i]->bv_len );
#ifdef BPRINT_NONASCII
- lber_bprint( vals[i]->bv_val,
+ ber_bprint( vals[i]->bv_val,
vals[i]->bv_len );
#endif /* BPRINT_NONASCII */
continue;
ber_bvecfree( vals );
}
}
+
+ if(ber != NULL) {
+ ber_free( ber, 0 );
+ }
}
if ( res->lm_msgtype == LDAP_RES_SEARCH_RESULT
- || res->lm_chain != NULLMSG )
+ || res->lm_chain != NULL )
print_ldap_result( ld, res, "search" );
}