From: Kurt Zeilenga Date: Mon, 25 Jan 1999 22:55:00 +0000 (+0000) Subject: Add support for LBER_OPT_LOG_PRINT_FN option. X-Git-Tag: OPENLDAP_SLAPD_BACK_LDAP~700 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d7079a10c38e1e64d5ceded11a6e284da8c78617;p=openldap Add support for LBER_OPT_LOG_PRINT_FN option. --- diff --git a/include/lber.h b/include/lber.h index 6c5f532e77..c82a8c7614 100644 --- a/include/lber.h +++ b/include/lber.h @@ -76,7 +76,11 @@ typedef int (*BERTranslateProc) LDAP_P(( char **bufp, /* get/set options for BerElement */ #define LBER_OPT_BER_OPTIONS 0x01 #define LBER_OPT_BER_DEBUG 0x02 + #define LBER_OPT_DEBUG_LEVEL LBER_OPT_BER_DEBUG +#define LBER_OPT_LOG_PRINT_FN 0x8001 + +typedef void (*BER_LOG_PRINT_FN) LDAP_P(( char *buf )); /* LBER Sockbuf options */ #define LBER_TO_FILE 0x01 /* to a file referenced by sb_fd */ diff --git a/libraries/liblber/bprint.c b/libraries/liblber/bprint.c index d8a8c3783d..12ae005678 100644 --- a/libraries/liblber/bprint.c +++ b/libraries/liblber/bprint.c @@ -17,12 +17,14 @@ * Print stuff */ static void -lber_print_error( char *data ) +lber_error_print( char *data ) { fputs( data, stderr ); fflush( stderr ); } +BER_LOG_PRINT_FN lber_log_print = lber_error_print; + /* * lber log */ @@ -72,7 +74,7 @@ va_dcl va_end(ap); - lber_print_error( buf ); + (*lber_log_print)( buf ); return 1; } @@ -82,7 +84,7 @@ static int lber_log_puts(int errlvl, int loglvl, char *buf) return 0; } - lber_print_error( buf ); + (*lber_log_print)( buf ); return 1; } @@ -114,7 +116,7 @@ ber_bprint(char *data, int len ) for ( ;; ) { if ( len < 1 ) { sprintf( buf, "\t%s\n", ( i == 0 ) ? "(end)" : out ); - lber_print_error( buf ); + (*lber_log_print)( buf ); break; } @@ -136,7 +138,7 @@ ber_bprint(char *data, int len ) if ( i > BPLEN - 2 ) { char data[128 + BPLEN]; sprintf( data, "\t%s\n", out ); - lber_print_error(data); + (*lber_log_print)(data); memset( out, 0, BPLEN ); i = 0; continue; @@ -166,7 +168,7 @@ ber_dump( BerElement *ber, int inout ) (long) ber->ber_ptr, (long) ber->ber_end ); - lber_print_error( buf ); + (*lber_log_print)( buf ); if ( inout == 1 ) { sprintf( buf, " current len %ld, contents:\n", @@ -197,22 +199,22 @@ ber_sos_dump( Seqorset *sos ) { char buf[132]; - lber_print_error( "*** sos dump ***\n" ); + (*lber_log_print)( "*** sos dump ***\n" ); while ( sos != NULLSEQORSET ) { sprintf( buf, "ber_sos_dump: clen %ld first 0x%lx ptr 0x%lx\n", (long) sos->sos_clen, (long) sos->sos_first, (long) sos->sos_ptr ); - lber_print_error( buf ); + (*lber_log_print)( buf ); sprintf( buf, " current len %ld contents:\n", (long) (sos->sos_ptr - sos->sos_first) ); - lber_print_error( buf ); + (*lber_log_print)( buf ); ber_bprint( sos->sos_first, sos->sos_ptr - sos->sos_first ); sos = sos->sos_next; } - lber_print_error( "*** end dump ***\n" ); + (*lber_log_print)( "*** end dump ***\n" ); } diff --git a/libraries/liblber/options.c b/libraries/liblber/options.c index 54be5c3d2f..5e882dbeb3 100644 --- a/libraries/liblber/options.c +++ b/libraries/liblber/options.c @@ -71,6 +71,12 @@ lber_set_option( if(option == LBER_OPT_BER_DEBUG) { lber_int_debug = * (int *) invalue; return LBER_OPT_SUCCESS; + + } else if(option == LBER_OPT_LOG_PRINT_FN) { + extern BER_LOG_PRINT_FN lber_log_print; + + lber_log_print = (BER_LOG_PRINT_FN) invalue; + return LBER_OPT_SUCCESS; } return LBER_OPT_ERROR;