X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Fliblber%2Foptions.c;h=d2371567e706a781d6b6ecc4c063bb26967e2c18;hb=afa2cd1893875266c58677cc640514c1d9eef41f;hp=afeeafbae4ca20ed6750d4975cf1caa8a3e34721;hpb=d37f3e6ee2e39c44dfb19b47174ecf182d233b1e;p=openldap diff --git a/libraries/liblber/options.c b/libraries/liblber/options.c index afeeafbae4..d2371567e7 100644 --- a/libraries/liblber/options.c +++ b/libraries/liblber/options.c @@ -1,20 +1,19 @@ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ #include "portable.h" #include #include - +#include #include "lber-int.h" -extern void * ber_pvt_err_file; /* bprint.c */ -extern BER_LOG_FN ber_int_log_proc; +char ber_pvt_opt_on; /* used to get a non-NULL address for *_OPT_ON */ struct lber_options ber_int_options = { - LBER_UNINITIALIZED, 0, 0 }; + LBER_UNINITIALIZED, 0, 0, 0 }; int ber_get_option( @@ -22,8 +21,8 @@ ber_get_option( int option, void *outvalue) { - LDAP_CONST BerElement *ber; - LDAP_CONST Sockbuf *sb; + const BerElement *ber; + const Sockbuf *sb; ber_int_options.lbo_valid = LBER_INITIALIZED; @@ -65,30 +64,35 @@ ber_get_option( switch(option) { case LBER_OPT_BER_OPTIONS: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); * (int *) outvalue = ber->ber_options; return LBER_OPT_SUCCESS; case LBER_OPT_BER_DEBUG: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); * (int *) outvalue = ber->ber_debug; return LBER_OPT_SUCCESS; case LBER_OPT_BER_REMAINING_BYTES: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); *((ber_len_t *) outvalue) = ber_pvt_ber_remaining(ber); return LBER_OPT_SUCCESS; case LBER_OPT_BER_TOTAL_BYTES: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); *((ber_len_t *) outvalue) = ber_pvt_ber_total(ber); return LBER_OPT_SUCCESS; case LBER_OPT_BER_BYTES_TO_WRITE: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); *((ber_len_t *) outvalue) = ber_pvt_ber_write(ber); return LBER_OPT_SUCCESS; + case LBER_OPT_BER_MEMCTX: + assert( LBER_VALID( ber ) ); + *((void **) outvalue) = ber->ber_memctx; + return LBER_OPT_SUCCESS; + default: /* bad param */ ber_errno = LBER_ERROR_PARAM; @@ -124,7 +128,7 @@ ber_set_option( } ber_int_memory_fns = (BerMemoryFunctions *) - (*(f->bmf_malloc))(sizeof(BerMemoryFunctions)); + (*(f->bmf_malloc))(sizeof(BerMemoryFunctions), NULL); if ( ber_int_memory_fns == NULL ) { ber_errno = LBER_ERROR_MEMORY; @@ -183,30 +187,35 @@ ber_set_option( switch(option) { case LBER_OPT_BER_OPTIONS: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); ber->ber_options = * (const int *) invalue; return LBER_OPT_SUCCESS; case LBER_OPT_BER_DEBUG: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); ber->ber_debug = * (const int *) invalue; return LBER_OPT_SUCCESS; case LBER_OPT_BER_REMAINING_BYTES: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); ber->ber_end = &ber->ber_ptr[* (const ber_len_t *) invalue]; return LBER_OPT_SUCCESS; case LBER_OPT_BER_TOTAL_BYTES: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); ber->ber_end = &ber->ber_buf[* (const ber_len_t *) invalue]; return LBER_OPT_SUCCESS; case LBER_OPT_BER_BYTES_TO_WRITE: - assert( BER_VALID( ber ) ); + assert( LBER_VALID( ber ) ); ber->ber_ptr = &ber->ber_buf[* (const ber_len_t *) invalue]; return LBER_OPT_SUCCESS; + case LBER_OPT_BER_MEMCTX: + assert( LBER_VALID( ber ) ); + ber->ber_memctx = *(void **)invalue; + return LBER_OPT_SUCCESS; + default: /* bad param */ ber_errno = LBER_ERROR_PARAM;