X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=perl%2Fzebra_api_ext.c;h=32289e98fc34e96d2c34f5088e0b3ef0f5486fb8;hb=a1dba281bafc701a7e958d6e7512a2dbb3027191;hp=94f65eda891c9b00443647201e1c2786bf90257d;hpb=0a34a94a93dc7d594d0f6a7f359a63dbc1297775;p=idzebra-moved-to-github.git diff --git a/perl/zebra_api_ext.c b/perl/zebra_api_ext.c index 94f65ed..32289e9 100644 --- a/perl/zebra_api_ext.c +++ b/perl/zebra_api_ext.c @@ -228,22 +228,22 @@ int zebra_cql2pqf (cql_transform_t ct, const char *query, char *res, int len) { int status; - const char *addinfo; + const char *addinfo = ""; CQL_parser cp = cql_parser_create(); - if (status = cql_transform_error(ct, &addinfo)) { - logf (LOG_WARN,"Transform error %d %s\n", status, addinfo ? addinfo : ""); + if (status = cql_parser_string(cp, query)) { + cql_parser_destroy(cp); return (status); } - if (status = cql_parser_string(cp, query)) - return (status); - - if (status = cql_transform_buf(ct, cql_parser_result(cp), res, len)) { + if (cql_transform_buf(ct, cql_parser_result(cp), res, len)) { + status = cql_transform_error(ct, &addinfo); logf (LOG_WARN,"Transform error %d %s\n", status, addinfo ? addinfo : ""); + cql_parser_destroy(cp); return (status); } + cql_parser_destroy(cp); return (0); } @@ -311,13 +311,20 @@ void record_retrieve(RetrievalObj *ro, (RetrievalRecordBuf *) odr_malloc(stream, sizeof(*buf)); res->errCode = ro->records[i].errCode; - res->errString = ro->records[i].errString; + if (ro->records[i].errString) { + res->errString = odr_strdup(stream, ro->records[i].errString); + } else { + res->errString = ""; + } res->position = ro->records[i].position; res->base = ro->records[i].base; - res->format = ro->records[i].format; + res->format = (char *) + yaz_z3950_oid_value_to_str(ro->records[i].format, CLASS_RECSYN); res->buf = buf; res->buf->len = ro->records[i].len; res->buf->buf = ro->records[i].buf; + res->score = ro->records[i].score; + res->sysno = ro->records[i].sysno; } @@ -489,6 +496,7 @@ void api_records_retrieve (ZebraHandle zh, ODR stream, recs[i].len = strlen(poset[i].term); recs[i].buf = poset[i].term; recs[i].base = poset[i].db; + recs[i].sysno = 0; } else if (poset[i].sysno) @@ -504,7 +512,9 @@ void api_records_retrieve (ZebraHandle zh, ODR stream, &recs[i].base); recs[i].buf = (char *) odr_malloc(stream,recs[i].len); memcpy(recs[i].buf, b, recs[i].len); - recs[i].errString = NULL; + recs[i].errString = 0; /* Hmmm !!! we should get this */ + recs[i].sysno = poset[i].sysno; + recs[i].score = poset[i].score; } else {