-/* $Id: recindex.c,v 1.35 2004-08-04 08:35:23 adam Exp $
+/* $Id: recindex.c,v 1.37 2004-08-18 17:02:05 adam Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
Index Data Aps
/*
* Format of first block
- * next (4 bytes)
- * ref_count (4 bytes)
- * block (504 bytes)
+ * next (8 bytes)
+ * ref_count (2 bytes)
+ * block (500 bytes)
*
* Format of subsequent blocks
- * next (4 bytes)
- * block (508 bytes)
+ * next (8 bytes)
+ * block (502 bytes)
*
* Format of each record
* sysno
int r;
zint pos = (sysno-1)*itemsize;
- r = bf_read (p->index_BFile, 1+pos/128, pos%128, itemsize, buf);
+ r = bf_read (p->index_BFile, 1+pos/128, (int) (pos%128), itemsize, buf);
if (r != 1 && !ignoreError)
{
logf (LOG_FATAL|LOG_ERRNO, "read in %s at pos %ld",
{
zint pos = (sysno-1)*itemsize;
- bf_write (p->index_BFile, 1+pos/128, pos%128, itemsize, buf);
+ bf_write (p->index_BFile, 1+pos/128, (int) (pos%128), itemsize, buf);
}
static void rec_release_blocks (Records p, SYSNO sysno)
{
struct record_index_entry entry;
zint freeblock;
- char block_and_ref[sizeof(short) + sizeof(zint)];
+ char block_and_ref[sizeof(zint) + sizeof(short)];
int dst_type;
int first = 1;
freeblock = entry.next;
assert (freeblock > 0);
- dst_type = freeblock & 7;
+ dst_type = (int) (freeblock & 7);
assert (dst_type < REC_BLOCK_TYPES);
freeblock = freeblock / 8;
while (freeblock)
{
if (bf_read (p->data_BFile[dst_type], freeblock, 0,
- sizeof(block_and_ref), block_and_ref) != 1)
+ first ? sizeof(block_and_ref) : sizeof(zint),
+ block_and_ref) != 1)
{
logf (LOG_FATAL|LOG_ERRNO, "read in rec_del_single");
exit (1);
(*len) = 0;
while (n > 127)
{
- buf[*len] = 128 + (n & 127);
+ buf[*len] = (unsigned) (128 + (n & 127));
n = n >> 7;
(*len)++;
}
- buf[*len] = n;
+ buf[*len] = (unsigned) n;
(*len)++;
}
if (!entry.size)
return NULL; /* record is deleted */
- dst_type = entry.next & 7;
+ dst_type = (int) (entry.next & 7);
assert (dst_type < REC_BLOCK_TYPES);
freeblock = entry.next / 8;