Zebra with full functionality
[idzebra-moved-to-github.git] / index / invstat.c
index d1c8fe2..b810496 100644 (file)
 #include <string.h>
 
 #include "index.h"
-#include "recindex.h"
-#if ZMBOL
 #include "../isamc/isamd-p.h"
-#endif
 
 struct inv_stat_info {
     ISAMS isams;
-#if ZMBOL
     ISAM isam;
     ISAMC isamc;
     ISAMD isamd;
-#endif
     int no_isam_entries[9];
     int no_dict_entries;
     int no_dict_bytes;
@@ -64,7 +59,6 @@ static int inv_stat_handle (char *name, const char *info, int pos,
        stat_info->no_isam_entries[0] += occur;
         isams_pp_close (pp);
     }
-#if ZMBOL
     if (stat_info->isam)
     {
         ISPT ispt;
@@ -121,31 +115,35 @@ static int inv_stat_handle (char *name, const char *info, int pos,
            stat_info->no_isam_entries[isamd_type(isam_p)] += occur;
         isamd_pp_close (pp);
     }
-#endif
     while (occur > stat_info->isam_bounds[i] && stat_info->isam_bounds[i])
         i++;
     ++(stat_info->isam_occurrences[i]);
     return 0;
 }
 
-void inv_prstat (BFiles bfs)
+void inv_prstat (ZebraHandle zh)
 {
+    Res res = zh->res;
+    BFiles bfs;
     Dict dict;
     ISAMS isams = NULL;
-#if ZMBOL
     ISAM  isam  = NULL;
     ISAMC isamc = NULL;
     ISAMD isamd = NULL;
-#endif
+    int blocks;
+    int size;
+    int count;
     Records records;
     int i, prev;
     int before = 0;
     int after = 1000000000;
     struct inv_stat_info stat_info;
     char term_dict[2*IT_MAX_WORD+2];
-    int blocks;
-    int size;
-    int count;
+
+    if (!res || !zh->reg)
+        return;
+
+    bfs = zh->reg->bfs;
         
     term_dict[0] = 1;
     term_dict[1] = 0;
@@ -156,51 +154,49 @@ void inv_prstat (BFiles bfs)
         logf (LOG_FATAL, "dict_open fail");
         exit (1);
     }
-    if (res_get_match (common_resource, "isam", "s", ISAM_DEFAULT))
+    if (res_get_match (res, "isam", "s", ISAM_DEFAULT))
     {
        struct ISAMS_M_s isams_m;
         isams = isams_open (bfs, FNAME_ISAMS, 0,
-                           key_isams_m(common_resource, &isams_m));
+                           key_isams_m(res, &isams_m));
         if (!isams)
         {
             logf (LOG_FATAL, "isams_open fail");
             exit (1);
         }
     }
-#if ZMBOL
-    else if (res_get_match (common_resource, "isam", "i", ISAM_DEFAULT))
+    else if (res_get_match (res, "isam", "i", ISAM_DEFAULT))
     {
         isam = is_open (bfs, FNAME_ISAM, key_compare, 0,
-                       sizeof(struct it_key), common_resource);
+                       sizeof(struct it_key), res);
         if (!isam)
         {
             logf (LOG_FATAL, "is_open fail");
             exit (1);
         }
     }
-    else if (res_get_match (common_resource, "isam", "d", ISAM_DEFAULT))
+    else if (res_get_match (res, "isam", "d", ISAM_DEFAULT))
     {
        struct ISAMD_M_s isamd_m;
         isamd = isamd_open (bfs, FNAME_ISAMD, 0, 
-                            key_isamd_m(common_resource,&isamd_m));
+                            key_isamd_m(res,&isamd_m));
         if (!isamd)
         {
             logf (LOG_FATAL, "isamd_open fail");
             exit (1);
         }
     }
-    else if (res_get_match (common_resource, "isam", "c", ISAM_DEFAULT))
+    else if (res_get_match (res, "isam", "c", ISAM_DEFAULT))
     {
        struct ISAMC_M_s isamc_m;
         isamc = isc_open (bfs, FNAME_ISAMC, 0,
-                         key_isamc_m (common_resource, &isamc_m));
+                         key_isamc_m (res, &isamc_m));
         if (!isamc)
         {
             logf (LOG_FATAL, "isc_open fail");
             exit (1);
         }
     }
-#endif
     records = rec_open (bfs, 0, 0);
 
     for (i = 0; i<=SINGLETON_TYPE; i++)
@@ -208,11 +204,9 @@ void inv_prstat (BFiles bfs)
     stat_info.no_dict_entries = 0;
     stat_info.no_dict_bytes = 0;
     stat_info.isams = isams;
-#if ZMBOL
     stat_info.isam = isam;
     stat_info.isamc = isamc;
     stat_info.isamd = isamd;
-#endif
     stat_info.isam_bounds[0] = 1;
     stat_info.isam_bounds[1] = 2;
     stat_info.isam_bounds[2] = 3;
@@ -238,7 +232,6 @@ void inv_prstat (BFiles bfs)
 
     dict_scan (dict, term_dict, &before, &after, &stat_info, inv_stat_handle);
 
-#if ZMBOL
     if (isamc)
     {
        fprintf (stderr, "   Blocks    Occur  Size KB   Bytes/Entry\n");
@@ -290,7 +283,6 @@ void inv_prstat (BFiles bfs)
     if ( (isamd) && (isamd->method->debug>0))
         fprintf (stderr, "\n%d words using %d bytes\n",
              stat_info.no_dict_entries, stat_info.no_dict_bytes);
-#endif
     fprintf (stderr, "    Occurrences     Words\n");
     prev = 1;
     for (i = 0; stat_info.isam_bounds[i]; i++)
@@ -307,15 +299,12 @@ void inv_prstat (BFiles bfs)
 
     if (isams)
         isams_close (isams);
-#if ZMBOL
     if (isam)
         is_close (isam);
     if (isamc)
         isc_close (isamc);
     if (isamd)
         isamd_close (isamd);
-#endif
-
     xmalloc_trav("unfreed"); /*! while hunting memory leaks */    
 }
 
@@ -323,7 +312,19 @@ void inv_prstat (BFiles bfs)
 /*
  *
  * $Log: invstat.c,v $
- * Revision 1.20  1999-12-01 13:30:30  adam
+ * Revision 1.24  2002-04-05 08:46:26  adam
+ * Zebra with full functionality
+ *
+ * Revision 1.23  2002/04/04 14:14:13  adam
+ * Multiple registers (alpha early)
+ *
+ * Revision 1.22  2002/02/20 17:30:01  adam
+ * Work on new API. Locking system re-implemented
+ *
+ * Revision 1.21  2000/07/13 10:14:20  heikki
+ * Removed compiler warnings when making zebra
+ *
+ * Revision 1.20  1999/12/01 13:30:30  adam
  * Updated configure for Zmbol/Zebra dependent settings.
  *
  * Revision 1.19  1999/11/30 13:48:03  adam