Add rec_get_next
[idzebra-moved-to-github.git] / index / records.c
index d1f99a3..d63aac6 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the Zebra server.
-   Copyright (C) 1994-2009 Index Data
+   Copyright (C) 1994-2010 Index Data
 
 Zebra is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -280,6 +280,28 @@ static ZEBRA_RES rec_write_tmp_buf(Records p, int size, zint *sysnos)
     return ZEBRA_OK;
 }
 
+int rec_check_compression_method(int compression_method)
+{
+    switch(compression_method)
+    {
+    case REC_COMPRESS_ZLIB:
+#if HAVE_ZLIB_H
+        return 1;
+#else
+        return 0;
+#endif
+    case REC_COMPRESS_BZIP2:
+#if HAVE_BZLIB_H
+        return 1;
+#else
+        return 0;
+#endif
+    case REC_COMPRESS_NONE:
+        return 1;
+    }
+    return 0;
+}
+
 Records rec_open(BFiles bfs, int rw, int compression_method)
 {
     Records p;
@@ -912,6 +934,21 @@ Record rec_get_root(Records p)
     return rec_get(p, rec_sysno_to_ext(1));
 }
 
+Record rec_get_next(Records p, Record rec)
+{
+    Record next = 0;
+    zint next_sysno_int = rec_sysno_to_int(rec->sysno);
+
+    while (!next)
+    {
+         ++next_sysno_int;
+        if (next_sysno_int == p->head.index_last)
+            break;
+        next = rec_get(p, rec_sysno_to_ext(next_sysno_int));
+    }
+    return next;
+}
+
 static Record rec_new_int(Records p)
 {
     int i;