Make codec routines static
[idzebra-moved-to-github.git] / index / zrpn.c
index f09278d..2a4b593 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zrpn.c,v 1.135 2004-01-15 13:31:31 adam Exp $
+/* $Id: zrpn.c,v 1.139 2004-06-02 12:29:03 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -941,7 +941,7 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
             zh->errString = basenames[base_no];
             return -1;
         }
-        if (use_value == -2)  /* string attribute (assume IDXPATH/any) */
+        if (xpath_use > 0 && use_value == -2) 
         {
             use_value = xpath_use;
             attp.local_attributes = &id_xpath_attr;
@@ -958,17 +958,23 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
         }
         else
         {
-            if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value)))
+            if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value,
+                                           use_string)))
             {
                 logf (LOG_DEBUG, "att_getentbyatt fail. set=%d use=%d r=%d",
                       curAttributeSet, use_value, r);
                 if (r == -1)
                 {
                     /* set was found, but value wasn't defined */
-                    char val_str[32];
-                    sprintf (val_str, "%d", use_value);
                     errCode = 114;
-                    errString = nmem_strdup (stream, val_str);
+                   if (use_string)
+                       errString = nmem_strdup(stream, use_string);
+                   else
+                    {
+                        char val_str[32];
+                        sprintf (val_str, "%d", use_value);
+                        errString = nmem_strdup (stream, val_str);
+                   }
                 }
                 else
                 {
@@ -1011,10 +1017,14 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
         }
         if (!prefix_len)
         {
+#if 1
+           bases_ok++;
+#else
             char val_str[32];
             sprintf (val_str, "%d", use_value);
             errCode = 114;
             errString = nmem_strdup (stream, val_str);
+#endif
            continue;
         }
        bases_ok++; /* this has OK attributes */
@@ -1676,6 +1686,7 @@ static RSET rpn_search_APT_or_list (ZebraHandle zh,
         bool_parms.rset_r = rset[i];
         bool_parms.key_size = sizeof(struct it_key);
        bool_parms.cmp = key_compare_it;
+       bool_parms.log_item = key_logdump_txt;
         result = rset_create (rset_kind_or, &bool_parms);
     }
     return result;
@@ -1733,6 +1744,7 @@ static RSET rpn_search_APT_and_list (ZebraHandle zh,
         bool_parms.rset_r = rset[i];
         bool_parms.key_size = sizeof(struct it_key);
        bool_parms.cmp = key_compare_it;
+       bool_parms.log_item = key_logdump_txt;
         result = rset_create (rset_kind_and, &bool_parms);
     }
     return result;
@@ -1846,7 +1858,8 @@ static int numeric_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
         }
         else
         {
-            if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value)))
+            if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value,
+                                           use_string)))
             {
                 logf (LOG_DEBUG, "att_getentbyatt fail. set=%d use=%d r=%d",
                       curAttributeSet, use_value, r);
@@ -1976,6 +1989,7 @@ static RSET rpn_search_APT_numeric (ZebraHandle zh,
         bool_parms.rset_r = rset[i];
         bool_parms.key_size = sizeof(struct it_key);
        bool_parms.cmp = key_compare_it;
+       bool_parms.log_item = key_logdump_txt;
         result = rset_create (rset_kind_and, &bool_parms);
     }
     return result;
@@ -2087,11 +2101,11 @@ static RSET rpn_sort_spec (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
     sks->sortRelation = (int *)
        nmem_malloc (stream, sizeof(*sks->sortRelation));
     if (sort_relation_value == 1)
-       *sks->sortRelation = Z_SortRelation_ascending;
+       *sks->sortRelation = Z_SortKeySpec_ascending;
     else if (sort_relation_value == 2)
-       *sks->sortRelation = Z_SortRelation_descending;
+       *sks->sortRelation = Z_SortKeySpec_descending;
     else 
-       *sks->sortRelation = Z_SortRelation_ascending;
+       *sks->sortRelation = Z_SortKeySpec_ascending;
 
     sks->caseSensitivity = (int *)
        nmem_malloc (stream, sizeof(*sks->caseSensitivity));
@@ -2106,33 +2120,6 @@ static RSET rpn_sort_spec (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
     return rset_create (rset_kind_null, &parms);
 }
 
-/* pop - moved to xpath.c */
-#if 0
-
-struct xpath_predicate {
-    int which;
-    union {
-#define XPATH_PREDICATE_RELATION 1
-        struct {
-            char *name;
-            char *op;
-            char *value;
-        } relation;
-#define XPATH_PREDICATE_BOOLEAN 2
-        struct {
-            const char *op;
-            struct xpath_predicate *left;
-            struct xpath_predicate *right;
-        } boolean;
-    } u;
-};
-
-struct xpath_location_step {
-    char *part;
-    struct xpath_predicate *predicate;
-};
-
-#endif
 
 static int parse_xpath(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
                        oid_value attributeSet,
@@ -2473,6 +2460,7 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs,
         }
         bool_parms.key_size = sizeof(struct it_key);
         bool_parms.cmp = key_compare_it;
+       bool_parms.log_item = key_logdump_txt;
 
         switch (zop->which)
         {
@@ -2715,6 +2703,7 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
     char termz[IT_MAX_WORD+20];
     AttrType use;
     int use_value;
+    const char *use_string = 0;
     struct scan_info *scan_info_array;
     ZebraScanEntry *glist;
     int ords[32], ord_no = 0;
@@ -2765,7 +2754,7 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
              pos, num, attributeset);
         
     attr_init (&use, zapt, 1);
-    use_value = attr_find (&use, &attributeset);
+    use_value = attr_find_ex (&use, &attributeset, &use_string);
 
     if (zebra_maps_attr (zh->reg->zebra_maps, zapt, &reg_id, &search_type,
                         rank_type, &complete_flag, &sort_flag))
@@ -2784,7 +2773,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
         attent attp;
         data1_local_attribute *local_attr;
 
-        if ((r=att_getentbyatt (zh, &attp, attributeset, use_value)))
+        if ((r=att_getentbyatt (zh, &attp, attributeset, use_value,
+                               use_string)))
         {
             logf (LOG_DEBUG, "att_getentbyatt fail. set=%d use=%d",
                   attributeset, use_value);
@@ -2919,7 +2909,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
 
                 bool_parms.key_size = sizeof(struct it_key);
                 bool_parms.cmp = key_compare_it;
-                bool_parms.rset_l = rset;
+               bool_parms.log_item = key_logdump_txt;
+               bool_parms.rset_l = rset;
                 bool_parms.rset_r = rset2;
               
                 rset = rset_create (rset_kind_or, &bool_parms);
@@ -2933,7 +2924,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
 
             bool_parms.key_size = sizeof(struct it_key);
             bool_parms.cmp = key_compare_it;
-            bool_parms.rset_l = rset;
+           bool_parms.log_item = key_logdump_txt;
+           bool_parms.rset_l = rset;
             bool_parms.rset_r = rset_dup(limit_set);
 
             rset = rset_create (rset_kind_and, &bool_parms);
@@ -2998,7 +2990,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
 
                 bool_parms.key_size = sizeof(struct it_key);
                 bool_parms.cmp = key_compare_it;
-                bool_parms.rset_l = rset;
+               bool_parms.log_item = key_logdump_txt;
+               bool_parms.rset_l = rset;
                 bool_parms.rset_r = rset2;
               
                 rset = rset_create (rset_kind_or, &bool_parms);
@@ -3012,6 +3005,7 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
 
             bool_parms.key_size = sizeof(struct it_key);
             bool_parms.cmp = key_compare_it;
+           bool_parms.log_item = key_logdump_txt;
             bool_parms.rset_l = rset;
             bool_parms.rset_r = rset_dup(limit_set);