-#ifdef SKIPTHIS
- if ( (maxkeys>0) && (firstpp->numKeys > maxkeys) )
- { /* time to increase block size */
- newcat++;
- maxsize = is->method->filecat[newcat].bsize;
- pp->buf=xrealloc(pp->buf,maxsize);
- if (pp->is->method->debug > 2)
- logf(LOG_LOG,"isamh_append: increased to cat %d ",newcat);
+ newblock = 0;
+ pp->next = 0;
+
+ /* Four possibilities: */
+ if (prevpp!=0)
+ { /* 1: we have a prevpp that can go on the disk */
+ /* reduce pp, set next ptr, and store block */
+ /* set pp up as new last block, and remember the just */
+ /* filled as (pp) the new prev */
+ assert(pp!=firstpp);
+ isamh_reduceblock(is,pp,firstpp->numKeys);
+ prevpp->next=isamh_addr(pp->pos,pp->cat);
+ isamh_buildlaterblock(prevpp);
+ isamh_write_block(is,prevpp->cat,prevpp->pos,prevpp->buf);
+ if (pp->is->method->debug > 2)
+ logf(LOG_LOG,"isamh_append N1: Wrote prevpp (%d:%d) -> %d:%d",
+ prevpp->pos, prevpp->cat, pp->pos, pp->cat);
+ isamh_pp_close(prevpp); /* it's done its job */
+ prevpp = pp;
+ pp=isamh_pp_open(is,isamh_addr(0,maxcat)); /* start a large one */
+ pp->size=pp->offset=ISAMH_BLOCK_OFFSET_N ;
+ pp->next=0;
+ pp->lastblock=0;