* ----------------------------------------------------------------------
*
* Copyright (c) 2000-2004, Index Data.
* ----------------------------------------------------------------------
*
* Copyright (c) 2000-2004, Index Data.
- yaz_log(LOG_WARN, "GRS string too long - truncating (%d > %d)", len, GRS_BUF_SIZE);
+ yaz_log(YLOG_WARN, "GRS string too long - truncating (%d > %d)", len, GRS_BUF_SIZE);
}
if (sscanf(buf, "(%d,%[^)])", &type, value) != 2)
{
}
if (sscanf(buf, "(%d,%[^)])", &type, value) != 2)
{
oid2str(sattr->id, attrset_wr);
hv_store(sort_spec, "ATTRSET", 7,
newSVpv(attrset_wr->buf, attrset_wr->pos), 0);
oid2str(sattr->id, attrset_wr);
hv_store(sort_spec, "ATTRSET", 7,
newSVpv(attrset_wr->buf, attrset_wr->pos), 0);
hv_store(sort_spec, "SORT_ATTR", 9, newRV( sv_2mortal( (SV*) list ) ), 0);
hv_store(sort_spec, "SORT_ATTR", 9, newRV( sv_2mortal( (SV*) list ) ), 0);
oid2str(zspec->schema.oid, elementSpec);
hv_store(sort_spec, "ELEMENTSPEC_VALUE", 17,
newSVpv(elementSpec->buf, elementSpec->pos), 0);
oid2str(zspec->schema.oid, elementSpec);
hv_store(sort_spec, "ELEMENTSPEC_VALUE", 17,
newSVpv(elementSpec->buf, elementSpec->pos), 0);
#endif
href = newHV();
hv_store(href, "SETNAME", 7, newSVpv(rr->setname, 0), 0);
#endif
href = newHV();
hv_store(href, "SETNAME", 7, newSVpv(rr->setname, 0), 0);
+ if (rr->srw_sortKeys && *rr->srw_sortKeys)
+ hv_store(href, "SRW_SORTKEYS", 12, newSVpv(rr->srw_sortKeys, 0), 0);
hv_store(href, "REPL_SET", 8, newSViv(rr->replace_set), 0);
hv_store(href, "ERR_CODE", 8, newSViv(0), 0);
hv_store(href, "ERR_STR", 7, newSVpv("", 0), 0);
hv_store(href, "REPL_SET", 8, newSViv(rr->replace_set), 0);
hv_store(href, "ERR_CODE", 8, newSViv(0), 0);
hv_store(href, "ERR_STR", 7, newSVpv("", 0), 0);
-
-int dotted2oid(char *dotted, int *buffer)
-{
- int *oid;
- char ibuf[16];
- char *ptr;
- int n = 0;
-
- ptr = ibuf;
- oid = buffer;
- while (*dotted)
- {
- if (*dotted == '.')
- {
- n++;
- if (n == MAX_OID) /* Terminate if more than MAX_OID entries */
- {
- *oid = -1;
- return -1;
- }
- *ptr = 0;
- sscanf(ibuf, "%d", oid++);
- ptr = ibuf;
- dotted++;
-
- }
- else
- {
- *ptr++ = *dotted++;
- }
- }
- if (n < MAX_OID)
- {
- *ptr = 0;
- sscanf(ibuf, "%d", oid++);
- }
- *oid = -1;
- return 0;
-}
-
-
rr->errcode = 0;
href = newHV();
hv_store(href, "SETNAME", 7, newSVpv(rr->setname, 0), 0);
rr->errcode = 0;
href = newHV();
hv_store(href, "SETNAME", 7, newSVpv(rr->setname, 0), 0);
temp = hv_store(href, "OFFSET", 6, newSViv(rr->number), 0);
temp = hv_store(href, "OFFSET", 6, newSViv(rr->number), 0);
temp = hv_fetch(href, "REP_FORM", 8, 1);
rep_form = newSVsv(*temp);
temp = hv_fetch(href, "REP_FORM", 8, 1);
rep_form = newSVsv(*temp);
+ temp = hv_fetch(href, "SCHEMA", 6, 1);
+ if (temp != 0) {
+ schema = newSVsv(*temp);
+ ptr = SvPV(schema, length);
+ if (length > 0) {
+ rr->schema = (char *)odr_malloc(rr->stream, length + 1);
+ strcpy(rr->schema, ptr);
+ }
+ }
+
temp = hv_fetch(href, "HANDLE", 6, 1);
point = newSVsv(*temp);
temp = hv_fetch(href, "HANDLE", 6, 1);
point = newSVsv(*temp);
rr->basename = ODR_basename;
ptr = SvPV(rep_form, length);
rr->basename = ODR_basename;
ptr = SvPV(rep_form, length);
- oid = oid_getentbyoid(ODR_oid_buf);
- if (oid->value == VAL_GRS1) /* Treat GRS-1 records separately */
+ /* Treat GRS-1 records separately */
+ if (!oid_oidcmp(ODR_oid_buf, yaz_oid_recsyn_grs_1))
- hv_store(href, "TERM", 4, newSVpv(rr->term->term->u.general->buf, term_len), 0);
+ hv_store(href, "TERM", 4, newSVpv((char*) rr->term->term->u.general->buf, term_len), 0);
href = newHV();
hv_store(href, "EXPLAIN", 7, newSVpv("", 0), 0);
hv_store(href, "DATABASE", 8, newSVpv(q->database, 0), 0);
href = newHV();
hv_store(href, "EXPLAIN", 7, newSVpv("", 0), 0);
hv_store(href, "DATABASE", 8, newSVpv(q->database, 0), 0);