#include #include "buffer.h" #define CHECK(m,e) {if (e) {printf("Error in %s=%d\n",m,e);return -1;}} main() { int db1,db2; int nb,err; char old; void *ptr; InitBuffer(); db1 = OpenFile("testdb1"); printf("num blocks = %d\n",GetNumBlocks(db1)); err = GetBlock(db1,0,&ptr); printf("GetBlock 0 = %d\n",err); if (!err) { err = ReleaseBlock(db1,0,1); CHECK("ReleaseBlock",err); } err = AppendBlock(db1,&ptr); CHECK("AppendBlock",err); printf("num blocks = %d\n",nb=GetNumBlocks(db1)); memset(ptr,'A',BLOCK_SIZE); err = ReleaseBlock(db1,nb-1,1); CHECK("ReleaseBlock",err); err = AppendBlock(db1,&ptr); CHECK("AppendBlock",err); printf("num blocks = %d\n",nb=GetNumBlocks(db1)); memset(ptr,'B',BLOCK_SIZE); err = ReleaseBlock(db1,nb-1,1); CHECK("ReleaseBlock",err); err = GetBlock(db1,0,&ptr); CHECK("GetBlock",err); old = *(char *)ptr; printf("Block 0 contains %c\n",old); memset(ptr,old+2,BLOCK_SIZE); err = ReleaseBlock(db1,0,1); CHECK("ReleaseBlock",err); printf("num blocks = %d\n",nb=GetNumBlocks(db1)); err = TruncateFile(db1,nb-2); CHECK("TruncateFile",err); printf("num blocks = %d\n",nb=GetNumBlocks(db1)); err = CloseFile(db1); CHECK("CloseFile",err); }