fix temp fname for null path
[idzebra-moved-to-github.git] / index / invstat.c
index 5a23007..b810496 100644 (file)
 #include <string.h>
 
 #include "index.h"
-#include "recindex.h"
-#if ZMBOL
 #include "../isamc/isamd-p.h"
-#endif
-#include "zserver.h"
 
 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;
@@ -65,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;
@@ -122,7 +115,6 @@ 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]);
@@ -131,23 +123,27 @@ static int inv_stat_handle (char *name, const char *info, int pos,
 
 void inv_prstat (ZebraHandle zh)
 {
-    BFiles bfs = zh->service->bfs;
+    Res res = zh->res;
+    BFiles bfs;
     Dict dict;
     ISAMS isams = NULL;
-#if ZMBOL
     ISAM  isam  = NULL;
     ISAMC isamc = NULL;
     ISAMD isamd = NULL;
     int blocks;
     int size;
     int count;
-#endif
     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];
+
+    if (!res || !zh->reg)
+        return;
+
+    bfs = zh->reg->bfs;
         
     term_dict[0] = 1;
     term_dict[1] = 0;
@@ -158,51 +154,49 @@ void inv_prstat (ZebraHandle zh)
         logf (LOG_FATAL, "dict_open fail");
         exit (1);
     }
-    if (res_get_match (zh->service->res, "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(zh->service->res, &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 (zh->service->res, "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), zh->service->res);
+                       sizeof(struct it_key), res);
         if (!isam)
         {
             logf (LOG_FATAL, "is_open fail");
             exit (1);
         }
     }
-    else if (res_get_match (zh->service->res, "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(zh->service->res,&isamd_m));
+                            key_isamd_m(res,&isamd_m));
         if (!isamd)
         {
             logf (LOG_FATAL, "isamd_open fail");
             exit (1);
         }
     }
-    else if (res_get_match (zh->service->res, "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 (zh->service->res, &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++)
@@ -210,11 +204,9 @@ void inv_prstat (ZebraHandle zh)
     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;
@@ -240,7 +232,6 @@ void inv_prstat (ZebraHandle zh)
 
     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");
@@ -292,7 +283,6 @@ void inv_prstat (ZebraHandle zh)
     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++)
@@ -309,15 +299,12 @@ void inv_prstat (ZebraHandle zh)
 
     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 */    
 }
 
@@ -325,7 +312,13 @@ void inv_prstat (ZebraHandle zh)
 /*
  *
  * $Log: invstat.c,v $
- * Revision 1.22  2002-02-20 17:30:01  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