projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Factor common work in term_100, ..term_105 into private function
[idzebra-moved-to-github.git]
/
index
/
rpnscan.c
diff --git
a/index/rpnscan.c
b/index/rpnscan.c
index
8ea6850
..
7800b11
100644
(file)
--- a/
index/rpnscan.c
+++ b/
index/rpnscan.c
@@
-1,4
+1,4
@@
-/* $Id: rpnscan.c,v 1.9 2007-05-08 12:50:04 adam Exp $
+/* $Id: rpnscan.c,v 1.11 2007-05-09 07:07:18 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
Copyright (C) 1995-2007
Index Data ApS
@@
-214,6
+214,7
@@
static ZEBRA_RES rpn_scan_ver2(ZebraHandle zh, ODR stream, NMEM nmem,
struct scan2_info_entry *ar = nmem_malloc(nmem, sizeof(*ar) * ord_no);
struct rpn_char_map_info rcmi;
int i, dif;
struct scan2_info_entry *ar = nmem_malloc(nmem, sizeof(*ar) * ord_no);
struct rpn_char_map_info rcmi;
int i, dif;
+ int after_pos;
int pos = 0;
ZebraScanEntry *glist = (ZebraScanEntry *)
int pos = 0;
ZebraScanEntry *glist = (ZebraScanEntry *)
@@
-243,7
+244,11
@@
static ZEBRA_RES rpn_scan_ver2(ZebraHandle zh, ODR stream, NMEM nmem,
if (trans_scan_term(zh, zapt, termz+prefix_len, index_type) ==
ZEBRA_FAIL)
if (trans_scan_term(zh, zapt, termz+prefix_len, index_type) ==
ZEBRA_FAIL)
+ {
+ for (i = 0; i < ord_no; i++)
+ wrbuf_destroy(ar[i].term);
return ZEBRA_FAIL;
return ZEBRA_FAIL;
+ }
wrbuf_rewind(ar[i].term);
wrbuf_puts(ar[i].term, termz + prefix_len);
ar[i].isam_p = 0;
wrbuf_rewind(ar[i].term);
wrbuf_puts(ar[i].term, termz + prefix_len);
ar[i].isam_p = 0;
@@
-314,6
+319,7
@@
static ZEBRA_RES rpn_scan_ver2(ZebraHandle zh, ODR stream, NMEM nmem,
ar[i].isam_p = 0;
}
ar[i].isam_p = 0;
}
+ after_pos = 1; /* immediate term first.. */
for (pos = *position-1; pos < *num_entries; )
{
const char *lo = 0;
for (pos = *position-1; pos < *num_entries; )
{
const char *lo = 0;
@@
-325,7
+331,7
@@
static ZEBRA_RES rpn_scan_ver2(ZebraHandle zh, ODR stream, NMEM nmem,
{
char termz[IT_MAX_WORD+20];
int before = 0;
{
char termz[IT_MAX_WORD+20];
int before = 0;
- int after = (pos == *position-1) ? 1 : 2;
+ int after = after_pos;
ar[i].pos_to_save = 1;
ar[i].pos_to_save = 1;
@@
-335,6
+341,8
@@
static ZEBRA_RES rpn_scan_ver2(ZebraHandle zh, ODR stream, NMEM nmem,
ar+i, scan_handle2);
}
}
ar+i, scan_handle2);
}
}
+ after_pos = 2; /* next round we grab following term */
+
/* get minimum after scan */
for (i = 0; i < ord_no; i++)
{
/* get minimum after scan */
for (i = 0; i < ord_no; i++)
{
@@
-361,6
+369,9
@@
static ZEBRA_RES rpn_scan_ver2(ZebraHandle zh, ODR stream, NMEM nmem,
*list = glist;
*list = glist;
+ for (i = 0; i < ord_no; i++)
+ wrbuf_destroy(ar[i].term);
+
return ZEBRA_OK;
}
return ZEBRA_OK;
}
@@
-416,7
+427,6
@@
ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
if (termset_value_numeric != -2)
{
if (termset_value_numeric != -2)
{
-
sprintf(resname, "%d", termset_value_numeric);
termset_name = resname;
}
sprintf(resname, "%d", termset_value_numeric);
termset_name = resname;
}
@@
-424,6
+434,14
@@
ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
termset_name = termset_value_string;
limit_set = resultSetRef (zh, termset_name);
termset_name = termset_value_string;
limit_set = resultSetRef (zh, termset_name);
+
+ if (!limit_set)
+ {
+ zebra_setError(zh,
+ YAZ_BIB1_SPECIFIED_RESULT_SET_DOES_NOT_EXIST,
+ termset_name);
+ return ZEBRA_FAIL;
+ }
}
}
}
}