+void isamh_pp_dump (ISAMH is, ISAMH_P ipos)
+{
+ ISAMH_PP pp;
+ ISAMH_P oldaddr=0;
+ struct it_key key;
+ int i,n;
+ int occur =0;
+ int oldoffs;
+ char hexbuff[64];
+
+ logf(LOG_LOG,"dumping isamh block %d (%d:%d)",
+ (int)ipos, isamh_type(ipos), isamh_block(ipos) );
+ pp=isamh_pp_open(is,ipos);
+ logf(LOG_LOG,"numKeys=%d, last=%d (%d:%d) ofs=%d ",
+ pp->numKeys,
+ pp->lastblock,
+ isamh_type(pp->lastblock), isamh_block(pp->lastblock),
+ pp->offset);
+ oldoffs= pp->offset;
+ while(isamh_pp_read(pp, &key))
+ {
+ if (oldaddr != isamh_addr(pp->pos,pp->cat) )
+ {
+ oldaddr = isamh_addr(pp->pos,pp->cat);
+ logf(LOG_LOG,"block %d (%d:%d) sz=%d nx=%d (%d:%d) ofs=%d",
+ isamh_addr(pp->pos,pp->cat),
+ pp->cat, pp->pos, pp->size,
+ pp->next, isamh_type(pp->next), isamh_block(pp->next),
+ pp->offset);
+ i=0;
+ while (i<pp->size) {
+ n=pp->size-i;
+ if (n>8) n=8;
+ logf(LOG_LOG," %05x: %s",i,hexdump(pp->buf+i,n,hexbuff));
+ i+=n;
+ }
+ if (oldoffs > ISAMH_BLOCK_OFFSET_N)
+ oldoffs=ISAMH_BLOCK_OFFSET_N;
+ } /* new block */
+ occur++;
+ logf (LOG_LOG," got %d:%d=%x:%x from %s at %d=%x",
+ key.sysno, key.seqno,
+ key.sysno, key.seqno,
+ hexdump(pp->buf+oldoffs, pp->offset-oldoffs, hexbuff),
+ oldoffs, oldoffs);
+ oldoffs = pp->offset;
+ }
+ isamh_pp_close(pp);
+} /* dump */