+}
+
+int
+lber_log_dump( int errlvl, int loglvl, BerElement *ber, int inout )
+{
+ if ( !lber_log_check( errlvl, loglvl )) {
+ return 0;
+ }
+
+ ber_dump(ber, inout);
+ return 1;
+}
+
+void
+ber_dump( BerElement *ber, int inout )
+{
+ char buf[132];
+
+ sprintf( buf, "ber_dump: buf 0x%lx, ptr 0x%lx, end 0x%lx\n",
+ (long) ber->ber_buf,
+ (long) ber->ber_ptr,
+ (long) ber->ber_end );
+
+ (*lber_pvt_log_print)( buf );
+
+ if ( inout == 1 ) {
+ sprintf( buf, " current len %ld, contents:\n",
+ (long) (ber->ber_end - ber->ber_ptr) );
+ ber_bprint( ber->ber_ptr, ber->ber_end - ber->ber_ptr );
+
+ } else {
+ sprintf( buf, " current len %ld, contents:\n",
+ (long) (ber->ber_ptr - ber->ber_buf) );
+
+ ber_bprint( ber->ber_buf, ber->ber_ptr - ber->ber_buf );
+ }
+}
+
+int
+lber_log_sos_dump( int errlvl, int loglvl, Seqorset *sos )
+{
+ if ( !lber_log_check( errlvl, loglvl )) {
+ return 0;
+ }
+
+ ber_sos_dump( sos );
+ return 1;
+}
+
+void
+ber_sos_dump( Seqorset *sos )
+{
+ char buf[132];
+
+ (*lber_pvt_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_pvt_log_print)( buf );
+
+ sprintf( buf, " current len %ld contents:\n",
+ (long) (sos->sos_ptr - sos->sos_first) );
+ (*lber_pvt_log_print)( buf );
+
+ ber_bprint( sos->sos_first, sos->sos_ptr - sos->sos_first );
+
+ sos = sos->sos_next;
+ }