-/* $Id: recindex.c,v 1.35 2004-08-04 08:35:23 adam Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
+/* $Id: recindex.c,v 1.34.2.1 2004-08-18 16:17:13 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
Index Data Aps
This file is part of the Zebra server.
*/
+
+
/*
* Format of first block
* next (4 bytes)
- * ref_count (4 bytes)
- * block (504 bytes)
+ * ref_count (2 bytes)
+ * block (506 bytes)
*
* Format of subsequent blocks
* next (4 bytes)
}
}
-static int read_indx (Records p, SYSNO sysno, void *buf, int itemsize,
+static int read_indx (Records p, int sysno, void *buf, int itemsize,
int ignoreError)
{
int r;
- zint pos = (sysno-1)*itemsize;
+ int pos = (sysno-1)*itemsize;
r = bf_read (p->index_BFile, 1+pos/128, pos%128, itemsize, buf);
if (r != 1 && !ignoreError)
return r;
}
-static void write_indx (Records p, SYSNO sysno, void *buf, int itemsize)
+static void write_indx (Records p, int sysno, void *buf, int itemsize)
{
- zint pos = (sysno-1)*itemsize;
+ int pos = (sysno-1)*itemsize;
bf_write (p->index_BFile, 1+pos/128, pos%128, itemsize, buf);
}
-static void rec_release_blocks (Records p, SYSNO sysno)
+static void rec_release_blocks (Records p, int sysno)
{
struct record_index_entry entry;
- zint freeblock;
- char block_and_ref[sizeof(short) + sizeof(zint)];
+ int freeblock;
+ char block_and_ref[sizeof(int) + sizeof(short)];
int dst_type;
int first = 1;
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(int),
+ block_and_ref) != 1)
{
logf (LOG_FATAL|LOG_ERRNO, "read in rec_del_single");
exit (1);
if (first)
{
short ref;
- memcpy (&ref, block_and_ref + sizeof(freeblock), sizeof(ref));
+ memcpy (&ref, block_and_ref + sizeof(int), sizeof(ref));
--ref;
- memcpy (block_and_ref + sizeof(freeblock), &ref, sizeof(ref));
+ memcpy (block_and_ref + sizeof(int), &ref, sizeof(ref));
if (ref)
{
if (bf_write (p->data_BFile[dst_type], freeblock, 0,
exit (1);
}
p->head.block_free[dst_type] = freeblock;
- memcpy (&freeblock, block_and_ref, sizeof(freeblock));
+ memcpy (&freeblock, block_and_ref, sizeof(int));
p->head.block_used[dst_type]--;
}
write_indx (p, rec->sysno, &entry, sizeof(entry));
}
-static void rec_write_tmp_buf (Records p, int size, SYSNO *sysnos)
+static void rec_write_tmp_buf (Records p, int size, int *sysnos)
{
struct record_index_entry entry;
int no_written = 0;
char *cptr = p->tmp_buf;
- zint block_prev = -1, block_free;
+ int block_prev = -1, block_free;
int dst_type = 0;
int i;
block_free, 0, sizeof(*p->head.block_free),
&p->head.block_free[dst_type]) != 1)
{
- logf (LOG_FATAL|LOG_ERRNO, "read in %s at free block " ZINT_FORMAT,
+ logf (LOG_FATAL|LOG_ERRNO, "read in %s at free block %d",
p->data_fname[dst_type], block_free);
exit (1);
}
}
else
{
- memcpy (cptr, &block_free, sizeof(block_free));
+ memcpy (cptr, &block_free, sizeof(int));
bf_write (p->data_BFile[dst_type], block_prev, 0, 0, cptr);
cptr = p->tmp_buf + no_written;
}
block_prev = block_free;
- no_written += p->head.block_size[dst_type] - sizeof(zint);
+ no_written += p->head.block_size[dst_type] - sizeof(int);
p->head.block_used[dst_type]++;
}
assert (block_prev != -1);
block_free = 0;
- memcpy (cptr, &block_free, sizeof(block_free));
+ memcpy (cptr, &block_free, sizeof(int));
bf_write (p->data_BFile[dst_type], block_prev, 0,
- sizeof(block_free) + (p->tmp_buf+size) - cptr, cptr);
+ sizeof(int) + (p->tmp_buf+size) - cptr, cptr);
}
Records rec_open (BFiles bfs, int rw, int compression_method)
*np = n;
}
-static void rec_encode_zint (zint n, unsigned char *buf, int *len)
-{
- (*len) = 0;
- while (n > 127)
- {
- buf[*len] = 128 + (n & 127);
- n = n >> 7;
- (*len)++;
- }
- buf[*len] = n;
- (*len)++;
-}
-
-static void rec_decode_zint(zint *np, unsigned char *buf, int *len)
-{
- zint n = 0;
- zint w = 1;
- (*len) = 0;
-
- while (buf[*len] > 127)
- {
- n += w*(buf[*len] & 127);
- w = w << 7;
- (*len)++;
- }
- n += w * buf[*len];
- (*len)++;
- *np = n;
-}
-
static void rec_cache_flush_block1 (Records p, Record rec, Record last_rec,
char **out_buf, int *out_size,
int *out_offset)
}
if (i == 0)
{
- rec_encode_zint (rec->sysno, *out_buf + *out_offset, &len);
+ rec_encode_unsigned (rec->sysno, *out_buf + *out_offset, &len);
(*out_offset) += len;
}
if (rec->size[i] == 0)
int out_size = 1000;
int out_offset = 0;
char *out_buf = (char *) xmalloc (out_size);
- SYSNO *sysnos = (SYSNO *) xmalloc (sizeof(*sysnos) * (p->cache_cur + 1));
- SYSNO *sysnop = sysnos;
+ int *sysnos = (int *) xmalloc (sizeof(*sysnos) * (p->cache_cur + 1));
+ int *sysnop = sysnos;
for (i = 0; i<p->cache_cur - saveCount; i++)
{
#else
i = bzBuffToBuffCompress
#endif
- (p->tmp_buf+sizeof(zint)+sizeof(short)+
+ (p->tmp_buf+sizeof(int)+sizeof(short)+
sizeof(char),
&csize, out_buf, out_offset, 1, 0, 30);
if (i != BZ_OK)
/* either no compression or compression not supported ... */
csize = out_offset;
rec_tmp_expand (p, csize);
- memcpy (p->tmp_buf + sizeof(zint) + sizeof(short) + sizeof(char),
+ memcpy (p->tmp_buf + sizeof(int) + sizeof(short) + sizeof(char),
out_buf, out_offset);
csize = out_offset;
compression_method = REC_COMPRESS_NONE;
}
- memcpy (p->tmp_buf + sizeof(zint), &ref_count, sizeof(ref_count));
- memcpy (p->tmp_buf + sizeof(zint)+sizeof(short),
+ memcpy (p->tmp_buf + sizeof(int), &ref_count, sizeof(ref_count));
+ memcpy (p->tmp_buf + sizeof(int)+sizeof(short),
&compression_method, sizeof(compression_method));
/* -------- compression */
p->cache_cur = saveCount;
}
-static Record *rec_cache_lookup (Records p, SYSNO sysno,
+static Record *rec_cache_lookup (Records p, int sysno,
enum recordCacheFlag flag)
{
int i;
*pp = NULL;
}
-static Record rec_get_int (Records p, SYSNO sysno)
+static Record rec_get_int (Records p, int sysno)
{
int i, in_size, r;
Record rec, *recp;
struct record_index_entry entry;
- zint freeblock;
- int dst_type;
+ int freeblock, dst_type;
char *nptr, *cptr;
char *in_buf = 0;
char *bz_buf = 0;
while (freeblock)
{
- zint tmp;
+ int tmp;
cptr += p->head.block_size[dst_type] - sizeof(freeblock);
rec = (Record) xmalloc (sizeof(*rec));
rec->sysno = sysno;
- memcpy (&compression_method, p->tmp_buf + sizeof(zint) + sizeof(short),
+ memcpy (&compression_method, p->tmp_buf + sizeof(int) + sizeof(short),
sizeof(compression_method));
- in_buf = p->tmp_buf + sizeof(zint) + sizeof(short) + sizeof(char);
+ in_buf = p->tmp_buf + sizeof(int) + sizeof(short) + sizeof(char);
in_size = entry.size - sizeof(short) - sizeof(char);
switch (compression_method)
{
nptr = in_buf; /* skip ref count */
while (nptr < in_buf + in_size)
{
- zint this_sysno;
+ int this_sysno;
int len;
- rec_decode_zint (&this_sysno, nptr, &len);
+ rec_decode_unsigned (&this_sysno, nptr, &len);
nptr += len;
for (i = 0; i < REC_NO_INFO; i++)
return rec;
}
-Record rec_get (Records p, SYSNO sysno)
+Record rec_get (Records p, int sysno)
{
Record rec;
zebra_mutex_lock (&p->mutex);
static Record rec_new_int (Records p)
{
- int i;
- SYSNO sysno;
+ int sysno, i;
Record rec;
assert (p);