Moved loggin utilities to Yaz. Was implemented in file zlogs.c.
[idzebra-moved-to-github.git] / index / zrpn.c
index 710a699..9dd7d2d 100644 (file)
@@ -4,7 +4,20 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: zrpn.c,v $
- * Revision 1.86  1998-09-22 10:48:20  adam
+ * Revision 1.90  1998-11-16 16:03:43  adam
+ * Moved loggin utilities to Yaz. Was implemented in file zlogs.c.
+ *
+ * Revision 1.89  1998/11/16 10:11:55  adam
+ * Added addtional info for error 114 - unsupported use attribute.
+ *
+ * Revision 1.88  1998/10/18 07:54:52  adam
+ * Additional info added for diagnostics 114 (Unsupported use attribute) and
+ * 121 (Unsupported attribute set).
+ *
+ * Revision 1.87  1998/09/28 11:19:12  adam
+ * Fix for Compiled ASN.1.
+ *
+ * Revision 1.86  1998/09/22 10:48:20  adam
  * Minor changes in search API.
  *
  * Revision 1.85  1998/09/22 10:03:43  adam
@@ -917,7 +930,8 @@ static int string_relation (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
 
 static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
                        const char **term_sub, 
-                       oid_value attributeSet, struct grep_info *grep_info,
+                       oid_value attributeSet, NMEM stream,
+                       struct grep_info *grep_info,
                        int reg_type, int complete_flag,
                        int num_bases, char **basenames,
                        char *term_dst)
@@ -956,9 +970,25 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
             logf (LOG_DEBUG, "att_getentbyatt fail. set=%d use=%d r=%d",
                   curAttributeSet, use_value, r);
            if (r == -1)
+           {
+               char val_str[32];
+               sprintf (val_str, "%d", use_value);
                zh->errCode = 114;
+               zh->errString = nmem_strdup (stream, val_str);
+           }
            else
+           {
+               int oid[OID_SIZE];
+               struct oident oident;
+
+               oident.proto = PROTO_Z3950;
+               oident.oclass = CLASS_ATTSET;
+               oident.value = curAttributeSet;
+               oid_ent_to_oid (&oident, oid);
+
                zh->errCode = 121;
+               zh->errString = nmem_strdup (stream, oident.desc);
+           }
             return -1;
         }
         if (zebraExplain_curDatabase (zh->zei, basenames[base_no]))
@@ -992,7 +1022,10 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
         }
         if (!prefix_len)
         {
-            zh->errCode = 114;
+           char val_str[32];
+           sprintf (val_str, "%d", use_value);
+           zh->errCode = 114;
+           zh->errString = nmem_strdup (stream, val_str);
             return -1;
         }
         term_dict[prefix_len++] = ')';        
@@ -1346,6 +1379,7 @@ static RSET rpn_search_APT_phrase (ZebraHandle zh,
                                    Z_AttributesPlusTerm *zapt,
                                   const char *termz,
                                    oid_value attributeSet,
+                                  NMEM stream,
                                   int reg_type, int complete_flag,
                                   const char *rank_type,
                                   int num_bases, char **basenames)
@@ -1368,7 +1402,7 @@ static RSET rpn_search_APT_phrase (ZebraHandle zh,
     { 
        logf (LOG_DEBUG, "APT_phrase termp=%s", termp);
        grep_info.isam_p_indx = 0;
-        r = string_term (zh, zapt, &termp, attributeSet, &grep_info,
+        r = string_term (zh, zapt, &termp, attributeSet, stream, &grep_info,
                        reg_type, complete_flag, num_bases, basenames,
                        term_dst);
         if (r < 1)
@@ -1404,6 +1438,7 @@ static RSET rpn_search_APT_or_list (ZebraHandle zh,
                                     Z_AttributesPlusTerm *zapt,
                                    const char *termz,
                                     oid_value attributeSet,
+                                   NMEM stream,
                                    int reg_type, int complete_flag,
                                    const char *rank_type,
                                    int num_bases, char **basenames)
@@ -1426,7 +1461,7 @@ static RSET rpn_search_APT_or_list (ZebraHandle zh,
     { 
        logf (LOG_DEBUG, "APT_or_list termp=%s", termp);
        grep_info.isam_p_indx = 0;
-        r = string_term (zh, zapt, &termp, attributeSet, &grep_info,
+        r = string_term (zh, zapt, &termp, attributeSet, stream, &grep_info,
                        reg_type, complete_flag, num_bases, basenames,
                        term_dst);
         if (r < 1)
@@ -1468,6 +1503,7 @@ static RSET rpn_search_APT_and_list (ZebraHandle zh,
                                      Z_AttributesPlusTerm *zapt,
                                     const char *termz,
                                      oid_value attributeSet,
+                                    NMEM stream,
                                     int reg_type, int complete_flag,
                                     const char *rank_type,
                                     int num_bases, char **basenames)
@@ -1490,7 +1526,7 @@ static RSET rpn_search_APT_and_list (ZebraHandle zh,
     { 
        logf (LOG_DEBUG, "APT_and_list termp=%s", termp);
        grep_info.isam_p_indx = 0;
-        r = string_term (zh, zapt, &termp, attributeSet, &grep_info,
+        r = string_term (zh, zapt, &termp, attributeSet, stream, &grep_info,
                        reg_type, complete_flag, num_bases, basenames,
                        term_dst);
         if (r < 1)
@@ -1677,6 +1713,7 @@ static RSET rpn_search_APT_numeric (ZebraHandle zh,
                                    Z_AttributesPlusTerm *zapt,
                                    const char *termz,
                                    oid_value attributeSet,
+                                   NMEM stream,
                                    int reg_type, int complete_flag,
                                    const char *rank_type,
                                    int num_bases, char **basenames)
@@ -1740,6 +1777,7 @@ static RSET rpn_search_APT_numeric (ZebraHandle zh,
 static RSET rpn_search_APT_local (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
                                  const char *termz,
                                   oid_value attributeSet,
+                                 NMEM stream,
                                  const char *rank_type)
 {
     RSET result;
@@ -1839,7 +1877,12 @@ static RSET rpn_sort_spec (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
     sks->caseSensitivity = nmem_malloc (stream, sizeof(*sks->caseSensitivity));
     *sks->caseSensitivity = 0;
 
+#ifdef ASN_COMPILED
+    sks->which = Z_SortKeySpec_null;
+    sks->u.null = odr_nullval ();
+#else
     sks->missingValueAction = 0;
+#endif
 
     sort_sequence->specs[i] = sks;
 
@@ -1881,30 +1924,30 @@ static RSET rpn_search_APT (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
 
     if (!strcmp (search_type, "phrase"))
     {
-       return rpn_search_APT_phrase (zh, zapt, termz, attributeSet,
+       return rpn_search_APT_phrase (zh, zapt, termz, attributeSet, stream,
                                      reg_id, complete_flag, rank_type,
                                      num_bases, basenames);
     }
     else if (!strcmp (search_type, "and-list"))
     {
-       return rpn_search_APT_and_list (zh, zapt, termz, attributeSet,
+       return rpn_search_APT_and_list (zh, zapt, termz, attributeSet, stream,
                                        reg_id, complete_flag, rank_type,
                                        num_bases, basenames);
     }
     else if (!strcmp (search_type, "or-list"))
     {
-       return rpn_search_APT_or_list (zh, zapt, termz, attributeSet,
+       return rpn_search_APT_or_list (zh, zapt, termz, attributeSet, stream,
                                       reg_id, complete_flag, rank_type,
                                       num_bases, basenames);
     }
     else if (!strcmp (search_type, "local"))
     {
-        return rpn_search_APT_local (zh, zapt, termz, attributeSet,
+        return rpn_search_APT_local (zh, zapt, termz, attributeSet, stream,
                                     rank_type);
     }
     else if (!strcmp (search_type, "numeric"))
     {
-       return rpn_search_APT_numeric (zh, zapt, termz, attributeSet,
+       return rpn_search_APT_numeric (zh, zapt, termz, attributeSet, stream,
                                       reg_id, complete_flag, rank_type,
                                       num_bases, basenames);
     }
@@ -2176,7 +2219,6 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
     if (attributeset == VAL_NONE)
         attributeset = VAL_BIB1;
 
-    zlog_scan (zapt, attributeset);
     logf (LOG_DEBUG, "position = %d, num = %d", pos, num);
         
     attr_init (&use, zapt, 1);