X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Fliblber%2Fdtest.c;h=8297d6a881586104802145a4fe427eda7ea38ab4;hb=afa2cd1893875266c58677cc640514c1d9eef41f;hp=82fc6461dfe36470c5b1c5535fcad7e82f32ad09;hpb=0e2af54a3ffdeebe3901370683be56fcc53023b0;p=openldap diff --git a/libraries/liblber/dtest.c b/libraries/liblber/dtest.c index 82fc6461df..8297d6a881 100644 --- a/libraries/liblber/dtest.c +++ b/libraries/liblber/dtest.c @@ -1,7 +1,7 @@ /* dtest.c - lber decoding test program */ /* $OpenLDAP$ */ /* - * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ /* Portions @@ -24,6 +24,7 @@ #include #include #include +#include #ifdef HAVE_CONSOLE_H #include @@ -40,7 +41,6 @@ int main( int argc, char **argv ) { char *s; - int rc; ber_tag_t tag; ber_len_t len; @@ -68,18 +68,25 @@ main( int argc, char **argv ) ber_sockbuf_add_io( sb, &ber_sockbuf_io_fd, LBER_SBIOD_LEVEL_PROVIDER, (void *)&fd ); - if( (ber = ber_alloc_t(LBER_USE_DER)) == NULL ) { + ber = ber_alloc_t(LBER_USE_DER); + if( ber == NULL ) { perror( "ber_alloc_t" ); return( EXIT_FAILURE ); } - if(( tag = ber_get_next( sb, &len, ber) ) == LBER_ERROR ) { + for (;;) { + tag = ber_get_next( sb, &len, ber); + if( tag != LBER_ERROR ) break; + + if( errno == EWOULDBLOCK ) continue; + if( errno == EAGAIN ) continue; + perror( "ber_get_next" ); return( EXIT_FAILURE ); } printf("decode: message tag 0x%lx and length %ld\n", - (unsigned long) tag, (long) len ); + (unsigned long) tag, (long) len ); for( s = argv[1]; *s; s++ ) { char buf[128]; @@ -89,9 +96,9 @@ main( int argc, char **argv ) printf("decode: format %s\n", fmt ); len = sizeof(buf); - rc = ber_scanf( ber, fmt, &buf[0], &len ); + tag = ber_scanf( ber, fmt, &buf[0], &len ); - if( rc == LBER_ERROR ) { + if( tag == LBER_ERROR ) { perror( "ber_scanf" ); return( EXIT_FAILURE ); }