X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=isam%2Fphysical.c;h=9dccb47b6ee0a01c5dc6243ca46a6adea855a335;hb=e39158d4c6147865c129d2524f1b910e4e7921ed;hp=312d3e24eb18de7a8c60f48048af95f8c73262cc;hpb=260110f86881af35eecd7fe3ac9dfdda5615a365;p=idzebra-moved-to-github.git diff --git a/isam/physical.c b/isam/physical.c index 312d3e2..9dccb47 100644 --- a/isam/physical.c +++ b/isam/physical.c @@ -4,7 +4,13 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: physical.c,v $ - * Revision 1.5 1994-09-28 11:29:33 quinn + * Revision 1.7 1995-12-06 14:48:27 quinn + * Fixed some strange bugs. + * + * Revision 1.6 1995/09/04 12:33:47 adam + * Various cleanup. YAZ util used instead. + * + * Revision 1.5 1994/09/28 11:29:33 quinn * Added cmp parameter. * * Revision 1.4 1994/09/27 20:03:53 quinn @@ -26,6 +32,7 @@ */ #include +#include #include @@ -39,14 +46,14 @@ static int is_freestore_alloc(ISAM is, int type) if (bf_read(is->types[type].bf, tmp, 0, sizeof(tmp), &is->types[type].freelist) <=0) { - log(LOG_FATAL, "Failed to allocate block"); + logf (LOG_FATAL, "Failed to allocate block"); exit(1); } } else tmp = is->types[type].top++; - log(LOG_DEBUG, "Allocating block #%d", tmp); + logf (LOG_DEBUG, "Allocating block #%d", tmp); return tmp; } @@ -54,12 +61,12 @@ static void is_freestore_free(ISAM is, int type, int block) { int tmp; - log(LOG_DEBUG, "Releasing block #%d", block); + logf (LOG_DEBUG, "Releasing block #%d", block); tmp = is->types[type].freelist; is->types[type].freelist = block; if (bf_write(is->types[type].bf, block, 0, sizeof(tmp), &tmp) < 0) { - log(LOG_FATAL, "Failed to deallocate block."); + logf (LOG_FATAL, "Failed to deallocate block."); exit(1); } } @@ -83,7 +90,7 @@ int is_p_read_partial(is_mtable *tab, is_mblock *block) if (bf_read(tab->is->types[tab->pos_type].bf, block->diskpos, 0, toread, buf->data) < 0) { - log(LOG_FATAL, "bfread failed."); + logf (LOG_FATAL, "bfread failed."); return -1; } /* extract header info */ @@ -117,7 +124,7 @@ int is_p_read_full(is_mtable *tab, is_mblock *block) if (block->state == IS_MBSTATE_UNREAD && is_p_read_partial(tab, block) < 0) { - log(LOG_FATAL, "partial read failed."); + logf (LOG_FATAL, "partial read failed."); return -1; } if (block->state == IS_MBSTATE_PARTIAL) @@ -136,7 +143,7 @@ int is_p_read_full(is_mtable *tab, is_mblock *block) if (bf_read(tab->is->types[tab->pos_type].bf, block->diskpos, block->bread, toread * is_keysize(tab->is), buf->data) < 0) { - log(LOG_FATAL, "bfread failed."); + logf (LOG_FATAL, "bfread failed."); return -1; } buf->offset = 0; @@ -144,8 +151,9 @@ int is_p_read_full(is_mtable *tab, is_mblock *block) dread += toread; block->bread += toread * is_keysize(tab->is); } + block->state = IS_MBSTATE_CLEAN; } - log(LOG_DEBUG, "R: Block #%d contains %d records.", block->diskpos, block->num_records); + logf (LOG_DEBUG, "R: Block #%d contains %d records.", block->diskpos, block->num_records); return 0; } @@ -198,10 +206,10 @@ void is_p_sync(is_mtable *tab) } if (bf_write(type->bf, p->diskpos, 0, sum, type->dbuf) < 0) { - log(LOG_FATAL, "Failed to write block."); + logf (LOG_FATAL, "Failed to write block."); exit(1); } - log(LOG_DEBUG, "W: Block #%d contains %d records.", p->diskpos, p->num_records); + logf (LOG_DEBUG, "W: Block #%d contains %d records.", p->diskpos, p->num_records); } } @@ -265,7 +273,7 @@ void is_p_align(is_mtable *tab) is_mbuf *mbufs, *mbp; int blocks, recsblock; - log(LOG_DEBUG, "Realigning table."); + logf (LOG_DEBUG, "Realigning table."); for (mblock = tab->data; mblock; mblock = next) { next = mblock->next; @@ -336,14 +344,14 @@ void is_p_remap(is_mtable *tab) is_mblock *blockp, **blockpp; int recsblock, blocks; - log(LOG_DEBUG, "Remapping table."); + logf (LOG_DEBUG, "Remapping table."); /* collect all data */ bufpp = &mbufs; for (blockp = tab->data; blockp; blockp = blockp->next) { if (blockp->state < IS_MBSTATE_CLEAN && is_m_read_full(tab, blockp) < 0) { - log(LOG_FATAL, "Read-full failed in remap."); + logf (LOG_FATAL, "Read-full failed in remap."); exit(1); } *bufpp = blockp->data;