X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fseshigh.c;h=a70fbc57a95bcee8ce1b4723808002ed53112a5c;hb=a0c511bee52164f097c30d5e2598c0810605ff55;hp=7c018869602313dc586f888e30dbbed521d4c416;hpb=42ee0e2611083beaa2d206e2039522c187735ffa;p=yaz-moved-to-github.git diff --git a/src/seshigh.c b/src/seshigh.c index 7c01886..a70fbc5 100644 --- a/src/seshigh.c +++ b/src/seshigh.c @@ -1,8 +1,6 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2008 Index Data * See the file LICENSE for details. - * - * $Id: seshigh.c,v 1.128 2007-09-11 08:37:53 adam Exp $ */ /** * \file seshigh.c @@ -737,29 +735,7 @@ static int srw_bend_fetch(association *assoc, int pos, if (rr.errcode && rr.surrogate_flag) { int code = yaz_diag_bib1_to_srw(rr.errcode); - const char *message = yaz_diag_srw_str(code); - int len = 200; - if (message) - len += strlen(message); - if (rr.errstring) - len += strlen(rr.errstring); - - record->recordData_buf = (char *) odr_malloc(o, len); - - sprintf(record->recordData_buf, "\n" - " info:srw/diagnostic/1/%d\n", code); - if (rr.errstring) - sprintf(record->recordData_buf + strlen(record->recordData_buf), - "
%s
\n", rr.errstring); - if (message) - sprintf(record->recordData_buf + strlen(record->recordData_buf), - " %s\n", message); - sprintf(record->recordData_buf + strlen(record->recordData_buf), - "
\n"); - record->recordData_len = strlen(record->recordData_buf); - record->recordPosition = odr_intdup(o, pos); - record->recordSchema = "info:srw/schema/1/diagnostics-v1.1"; + yaz_mk_sru_surrogate(o, record, pos, code, rr.errstring); return 0; } else if (rr.len >= 0) @@ -767,7 +743,8 @@ static int srw_bend_fetch(association *assoc, int pos, record->recordData_buf = rr.record; record->recordData_len = rr.len; record->recordPosition = odr_intdup(o, pos); - record->recordSchema = odr_strdup_null(o, rr.schema); + record->recordSchema = odr_strdup_null( + o, rr.schema ? rr.schema : srw_req->recordSchema); } if (rr.errcode) { @@ -790,8 +767,7 @@ static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, r = cql_parser_string(cp, cql); if (r) { - /* CQL syntax error */ - srw_errcode = 10; + srw_errcode = YAZ_SRW_QUERY_SYNTAX_ERROR; } if (!r) { @@ -800,7 +776,7 @@ static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, cql_parser_result(cp), rpn_buf, sizeof(rpn_buf)-1); if (r) - srw_errcode = cql_transform_error(ct, &add); + srw_errcode = cql_transform_error(ct, &add); } if (!r) { @@ -815,7 +791,7 @@ static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, int code = yaz_pqf_error(pp, &pqf_msg, &off); yaz_log(YLOG_WARN, "PQF Parser Error %s (code %d)", pqf_msg, code); - srw_errcode = 10; + srw_errcode = YAZ_SRW_QUERY_SYNTAX_ERROR; } else { @@ -837,14 +813,14 @@ static int cql2pqf_scan(ODR odr, const char *cql, cql_transform_t ct, if (srw_error) return srw_error; if (query.which != Z_Query_type_1 && query.which != Z_Query_type_101) - return 10; /* bad query type */ + return YAZ_SRW_QUERY_SYNTAX_ERROR; /* bad query type */ rpn = query.u.type_1; if (!rpn->RPNStructure) - return 10; /* must be structure */ + return YAZ_SRW_QUERY_SYNTAX_ERROR; /* must be structure */ if (rpn->RPNStructure->which != Z_RPNStructure_simple) - return 10; /* must be simple */ + return YAZ_SRW_QUERY_SYNTAX_ERROR; /* must be simple */ if (rpn->RPNStructure->u.simple->which != Z_Operand_APT) - return 10; /* must be attributes plus term node .. */ + return YAZ_SRW_QUERY_SYNTAX_ERROR; /* must be be attributes + term */ memcpy(result, rpn->RPNStructure->u.simple->u.attributesPlusTerm, sizeof(*result)); return 0; @@ -860,7 +836,7 @@ static int ccl2pqf(ODR odr, const Odr_oct *ccl, CCL_bibset bibset, ccl0 = odr_strdupn(odr, (char*) ccl->buf, ccl->len); if ((node = ccl_find_str(bibset, ccl0, &errcode, &pos)) == 0) { bsrr->errstring = (char*) ccl_err_msg(errcode); - return 10; /* Query syntax error */ + return YAZ_SRW_QUERY_SYNTAX_ERROR; /* Query syntax error */ } bsrr->query->which = Z_Query_type_1;