Add member addinfo for recRetrieveCtrl to throw better diagnostics
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 29 Nov 2004 21:45:11 +0000 (21:45 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 29 Nov 2004 21:45:11 +0000 (21:45 +0000)
include/idzebra/recctrl.h
index/index.h
index/retrieve.c
index/zebraapi.c
index/zserver.c
recctrl/recgrs.c

index dbba8a5..de543f4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: recctrl.h,v 1.3 2004-09-28 13:31:18 adam Exp $
+/* $Id: recctrl.h,v 1.4 2004-11-29 21:45:11 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -86,7 +86,7 @@ struct recRetrieveCtrl {
     void       *rec_buf;
     int        rec_len;
     int        diagnostic;
-    char *message;
+    char       *addinfo;
 };
 
 typedef struct recType *RecType;
index 39ad880..2af7982 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: index.h,v 1.124 2004-10-26 15:32:11 heikki Exp $
+/* $Id: index.h,v 1.125 2004-11-29 21:45:11 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -410,7 +410,8 @@ extern struct rank_control *rankliv_class;
 int zebra_record_fetch (ZebraHandle zh, SYSNO sysno, int score, ODR stream,
                        oid_value input_format, Z_RecordComposition *comp,
                        oid_value *output_format, char **rec_bufp,
-                       int *rec_lenp, char **basenamep);
+                       int *rec_lenp, char **basenamep,
+                       char **addinfo);
 
 void extract_get_fname_tmp (ZebraHandle zh, char *fname, int no);
 
index b25a3ae..a029fce 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: retrieve.c,v 1.26 2004-11-19 10:27:03 heikki Exp $
+/* $Id: retrieve.c,v 1.27 2004-11-29 21:45:11 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -85,7 +85,8 @@ void zebra_record_int_end (void *fh, off_t off)
 int zebra_record_fetch (ZebraHandle zh, SYSNO sysno, int score, ODR stream,
                        oid_value input_format, Z_RecordComposition *comp,
                        oid_value *output_format, char **rec_bufp,
-                       int *rec_lenp, char **basenamep)
+                       int *rec_lenp, char **basenamep,
+                       char **addinfo)
 {
     Record rec;
     char *fname, *file_type, *basename;
@@ -96,6 +97,7 @@ int zebra_record_fetch (ZebraHandle zh, SYSNO sysno, int score, ODR stream,
     void *clientData;
     int raw_mode = 0;
 
+    *addinfo = 0;
     rec = rec_get (zh->reg->records, sysno);
     if (!rec)
     {
@@ -192,6 +194,7 @@ int zebra_record_fetch (ZebraHandle zh, SYSNO sysno, int score, ODR stream,
     retrieveCtrl.comp = comp;
     retrieveCtrl.encoding = zh->record_encoding;
     retrieveCtrl.diagnostic = 0;
+    retrieveCtrl.addinfo = 0;
     retrieveCtrl.dh = zh->reg->dh;
     retrieveCtrl.res = zh->res;
     retrieveCtrl.rec_buf = 0;
@@ -205,5 +208,6 @@ int zebra_record_fetch (ZebraHandle zh, SYSNO sysno, int score, ODR stream,
         close (fc.fd);
     rec_rm (&rec);
 
+    *addinfo = retrieveCtrl.addinfo;
     return retrieveCtrl.diagnostic;
 }
index 3ede064..0bd24c2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zebraapi.c,v 1.140 2004-11-19 10:27:03 heikki Exp $
+/* $Id: zebraapi.c,v 1.141 2004-11-29 21:45:11 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -904,8 +904,8 @@ int zebra_records_retrieve (ZebraHandle zh, ODR stream,
                                        stream, input_format, comp,
                                        &recs[i].format, &recs[i].buf,
                                        &recs[i].len,
-                                       &recs[i].base);
-               recs[i].errString = NULL;
+                                       &recs[i].base,
+                                       &recs[i].errString);
                 recs[i].score=poset[i].score;
                 recs[i].sysno=poset[i].sysno;
            }
@@ -2008,10 +2008,10 @@ void api_records_retrieve (ZebraHandle zh, ODR stream,
                                        &recs[i].format, 
                                        &b,
                                        &recs[i].len,
-                                       &recs[i].base);
+                                       &recs[i].base,
+                                       &recs[i].errString);
                recs[i].buf = (char *) odr_malloc(stream,recs[i].len);
                memcpy(recs[i].buf, b, recs[i].len);
-               recs[i].errString = 0; /* Hmmm !!! we should get this */ 
                recs[i].sysno = poset[i].sysno;
                recs[i].score = poset[i].score;
            }
index 600248a..3537873 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zserver.c,v 1.123 2004-11-19 10:27:08 heikki Exp $
+/* $Id: zserver.c,v 1.124 2004-11-29 21:45:11 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -271,7 +271,7 @@ int bend_search (void *handle, bend_search_rr *r)
         zebra_result (zh, &r->errcode, &r->errstring);
         return 0;
     }
-    yaz_log (YLOG_LOG, "ResultSet '%s'", r->setname);
+    yaz_log (YLOG_DEBUG, "ResultSet '%s'", r->setname);
     switch (r->query->which)
     {
     case Z_Query_type_1: case Z_Query_type_101:
index 41b873c..b1e714d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: recgrs.c,v 1.93 2004-11-19 10:27:12 heikki Exp $
+/* $Id: recgrs.c,v 1.94 2004-11-29 21:45:12 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -900,7 +900,8 @@ int zebra_grs_extract(void *clientData, struct recExtractCtrl *p,
 /*
  * Return: -1: Nothing done. 0: Ok. >0: Bib-1 diagnostic.
  */
-static int process_comp(data1_handle dh, data1_node *n, Z_RecordComposition *c)
+static int process_comp(data1_handle dh, data1_node *n, Z_RecordComposition *c,
+                       char **addinfo, ODR o)
 {
     data1_esetname *eset;
     Z_Espec1 *espec = 0;
@@ -915,6 +916,7 @@ static int process_comp(data1_handle dh, data1_node *n, Z_RecordComposition *c)
                                         c->u.simple->u.generic)))
        {
            yaz_log(YLOG_LOG, "Unknown esetname '%s'", c->u.simple->u.generic);
+           *addinfo = odr_strdup(o, c->u.simple->u.generic);
            return 25; /* invalid esetname */
        }
        yaz_log(YLOG_DEBUG, "Esetname '%s' in simple compspec",
@@ -934,8 +936,9 @@ static int process_comp(data1_handle dh, data1_node *n, Z_RecordComposition *c)
                          data1_getesetbyname(dh, n->u.root.absyn,
                                              p->u.elementSetName)))
                    {
-                       yaz_log(YLOG_LOG, "Unknown esetname '%s'",
+                       yaz_log(YLOG_DEBUG, "Unknown esetname '%s'",
                             p->u.elementSetName);
+                       *addinfo = odr_strdup(o, p->u.elementSetName);
                        return 25; /* invalid esetname */
                    }
                    yaz_log(YLOG_DEBUG, "Esetname '%s' in complex compspec",
@@ -1213,7 +1216,8 @@ int zebra_grs_retrieve(void *clientData, struct recRetrieveCtrl *p,
     }
 
     yaz_log(YLOG_DEBUG, "grs_retrieve: element spec");
-    if (p->comp && (res = process_comp(p->dh, node, p->comp)) > 0)
+    if (p->comp && (res = process_comp(p->dh, node, p->comp, &p->addinfo,
+                                      p->odr)) > 0)
     {
        p->diagnostic = res;
        if (onode)