-/* $Id: rpnsearch.c,v 1.8 2007-01-17 12:59:38 adam Exp $
+/* $Id: rpnsearch.c,v 1.10 2007-03-19 21:50:39 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
RSET *rset,
struct rset_key_control *kc)
{
- RSFD rsfd;
- struct it_key key;
- int sys;
- *rset = rset_create_temp(rset_nmem, kc, kc->scope,
- res_get (zh->res, "setTmpDir"),0 );
- rsfd = rset_open(*rset, RSETF_WRITE);
+ Record rec;
+ zint sysno = atozint(termz);
- sys = atoi(termz);
- if (sys <= 0)
- sys = 1;
- key.mem[0] = sys;
- key.mem[1] = 1;
- key.len = 2;
- rset_write (rsfd, &key);
- rset_close (rsfd);
+ if (sysno <= 0)
+ sysno = 0;
+ rec = rec_get(zh->reg->records, sysno);
+ if (!rec)
+ sysno = 0;
+
+ rec_free(&rec);
+
+ if (sysno <= 0)
+ {
+ *rset = rset_create_null(rset_nmem, kc, 0);
+ }
+ else
+ {
+ RSFD rsfd;
+ struct it_key key;
+ *rset = rset_create_temp(rset_nmem, kc, kc->scope,
+ res_get(zh->res, "setTmpDir"), 0);
+ rsfd = rset_open(*rset, RSETF_WRITE);
+
+ key.mem[0] = sysno;
+ key.mem[1] = 1;
+ key.len = 2;
+ rset_write(rsfd, &key);
+ rset_close(rsfd);
+ }
return ZEBRA_OK;
}
cp++;
}
}
- wrbuf_puts(wbuf, "");
rset_attr = xpath_trunc(
- zh, stream, '0', wrbuf_buf(wbuf), ZEBRA_XPATH_ATTR_NAME,
+ zh, stream, '0', wrbuf_cstr(wbuf), ZEBRA_XPATH_ATTR_NAME,
rset_nmem, kc);
- wrbuf_free(wbuf, 1);
+ wrbuf_destroy(wbuf);
}
else
{
if (!first_path)
{
- wrbuf_free(xpath_rev, 1);
+ wrbuf_destroy(xpath_rev);
continue;
}
}
- yaz_log(log_level_rpn, "xpath_rev (%d) = %.*s", level,
- wrbuf_len(xpath_rev), wrbuf_buf(xpath_rev));
+ yaz_log(log_level_rpn, "xpath_rev (%d) = %s", level,
+ wrbuf_cstr(xpath_rev));
if (wrbuf_len(xpath_rev))
{
rset_start_tag = xpath_trunc(zh, stream, '0',
- wrbuf_buf(xpath_rev),
+ wrbuf_cstr(xpath_rev),
ZEBRA_XPATH_ELM_BEGIN,
rset_nmem, kc);
if (always_matches)
else
{
rset_end_tag = xpath_trunc(zh, stream, '0',
- wrbuf_buf(xpath_rev),
+ wrbuf_cstr(xpath_rev),
ZEBRA_XPATH_ELM_END,
rset_nmem, kc);
rset_end_tag, rset_attr);
}
}
- wrbuf_free(xpath_rev, 1);
+ wrbuf_destroy(xpath_rev);
first_path = 0;
}
}