projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
On Unix, zebra/z'mbol uses automake.
[idzebra-moved-to-github.git]
/
index
/
recindex.c
diff --git
a/index/recindex.c
b/index/recindex.c
index
81e390b
..
29006d7
100644
(file)
--- a/
index/recindex.c
+++ b/
index/recindex.c
@@
-4,7
+4,13
@@
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: recindex.c,v $
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: recindex.c,v $
- * Revision 1.27 1999-10-29 10:02:33 adam
+ * Revision 1.29 2000-04-05 09:49:35 adam
+ * On Unix, zebra/z'mbol uses automake.
+ *
+ * Revision 1.28 1999/12/08 22:44:45 adam
+ * Zebra/Z'mbol dependencies added.
+ *
+ * Revision 1.27 1999/10/29 10:02:33 adam
* Fixed decompression buffer overflow.
*
* Revision 1.26 1999/07/06 13:34:57 adam
* Fixed decompression buffer overflow.
*
* Revision 1.26 1999/07/06 13:34:57 adam
@@
-393,6
+399,7
@@
Records rec_open (BFiles bfs, int rw, int compression_method)
p->cache_cur = 0;
p->record_cache = (struct record_cache_entry *)
xmalloc (sizeof(*p->record_cache)*p->cache_max);
p->cache_cur = 0;
p->record_cache = (struct record_cache_entry *)
xmalloc (sizeof(*p->record_cache)*p->cache_max);
+ zebra_mutex_init (&p->mutex);
return p;
}
return p;
}
@@
-632,6
+639,7
@@
void rec_close (Records *pp)
assert (p);
assert (p);
+ zebra_mutex_destroy (&p->mutex);
rec_cache_flush (p, 0);
xfree (p->record_cache);
rec_cache_flush (p, 0);
xfree (p->record_cache);
@@
-652,8
+660,7
@@
void rec_close (Records *pp)
*pp = NULL;
}
*pp = NULL;
}
-
-Record rec_get (Records p, int sysno)
+static Record rec_get_int (Records p, int sysno)
{
int i, in_size, r;
Record rec, *recp;
{
int i, in_size, r;
Record rec, *recp;
@@
-788,7
+795,17
@@
Record rec_get (Records p, int sysno)
return rec;
}
return rec;
}
-Record rec_new (Records p)
+Record rec_get (Records p, int sysno)
+{
+ Record rec;
+ zebra_mutex_lock (&p->mutex);
+
+ rec = rec_get_int (p, sysno);
+ zebra_mutex_unlock (&p->mutex);
+ return rec;
+}
+
+static Record rec_new_int (Records p)
{
int sysno, i;
Record rec;
{
int sysno, i;
Record rec;
@@
-805,6
+822,14
@@
Record rec_new (Records p)
sysno = p->head.index_free;
p->head.index_free = entry.next;
}
sysno = p->head.index_free;
p->head.index_free = entry.next;
}
+#if ZMBOL
+#else
+ if (sysno > 100000)
+ {
+ logf (LOG_FATAL, "100,000 record limit reached");
+ exit (1);
+ }
+#endif
(p->head.no_records)++;
rec->sysno = sysno;
for (i = 0; i < REC_NO_INFO; i++)
(p->head.no_records)++;
rec->sysno = sysno;
for (i = 0; i < REC_NO_INFO; i++)
@@
-816,10
+841,21
@@
Record rec_new (Records p)
return rec;
}
return rec;
}
+Record rec_new (Records p)
+{
+ Record rec;
+ zebra_mutex_lock (&p->mutex);
+
+ rec = rec_new_int (p);
+ zebra_mutex_unlock (&p->mutex);
+ return rec;
+}
+
void rec_del (Records p, Record *recpp)
{
Record *recp;
void rec_del (Records p, Record *recpp)
{
Record *recp;
+ zebra_mutex_lock (&p->mutex);
(p->head.no_records)--;
if ((recp = rec_cache_lookup (p, (*recpp)->sysno, recordFlagDelete)))
{
(p->head.no_records)--;
if ((recp = rec_cache_lookup (p, (*recpp)->sysno, recordFlagDelete)))
{
@@
-831,6
+867,7
@@
void rec_del (Records p, Record *recpp)
rec_cache_insert (p, *recpp, recordFlagDelete);
rec_rm (recpp);
}
rec_cache_insert (p, *recpp, recordFlagDelete);
rec_rm (recpp);
}
+ zebra_mutex_unlock (&p->mutex);
*recpp = NULL;
}
*recpp = NULL;
}
@@
-838,6
+875,7
@@
void rec_put (Records p, Record *recpp)
{
Record *recp;
{
Record *recp;
+ zebra_mutex_lock (&p->mutex);
if ((recp = rec_cache_lookup (p, (*recpp)->sysno, recordFlagWrite)))
{
rec_rm (recp);
if ((recp = rec_cache_lookup (p, (*recpp)->sysno, recordFlagWrite)))
{
rec_rm (recp);
@@
-848,6
+886,7
@@
void rec_put (Records p, Record *recpp)
rec_cache_insert (p, *recpp, recordFlagWrite);
rec_rm (recpp);
}
rec_cache_insert (p, *recpp, recordFlagWrite);
rec_rm (recpp);
}
+ zebra_mutex_unlock (&p->mutex);
*recpp = NULL;
}
*recpp = NULL;
}