28 #include <yaz/options.h>
29 #include <yaz/snprintf.h>
40 static int handler(
char *name,
const char *info,
int pos,
void *client)
45 idx = hi->
a - pos + hi->
b;
56 hi->
ar[idx] = malloc(strlen(name)+1);
57 strcpy(hi->
ar[idx], name);
72 strcpy(scan_term, sterm);
77 hi.
ar = malloc(
sizeof(
char*) * (after+before+1));
78 for (i = 0; i <= after+before; i++)
80 yaz_log(YLOG_DEBUG,
"dict_scan before=%d after=%d term=%s",
81 before, after, scan_term);
83 for (i = 0; i < hi.
a+hi.
b; i++)
91 printf(
"--> FAIL i=%d hi.ar[i] == NULL\n", i);
99 printf(
"--> FAIL i=%d hi.ar[i] = %s\n", i, hi.
ar[i]);
110 printf(
"--> FAIL i=%d strs == NULL\n", i);
113 else if (!cmp_strs[i])
115 printf(
"--> FAIL i=%d cmp_strs == NULL\n", i);
118 else if (strcmp(cmp_strs[i], hi.
ar[i]))
120 printf(
"--> FAIL i=%d expected %s\n", i, cmp_strs[i]);
128 printf(
"--> FAIL i=%d hi.ar[i] != NULL\n", i);
133 if (verbose || errors)
140 printf(
"%s", hi.
ar[i]);
157 for (i = start; i < number; i += 100)
161 yaz_snprintf(w,
sizeof(w),
"%d", i);
165 for (i = start; i < number; i += 100)
169 yaz_snprintf(w,
sizeof(w),
"%d", i);
173 for (i = start; i < number; i += 100)
177 yaz_snprintf(w,
sizeof(w),
"%d", i);
188 YAZ_CHECK_EQ(
do_scan(
dict, 2, 2,
"4499", cs, 0, 0, 3), 0);
198 YAZ_CHECK_EQ(
do_scan(
dict, 2, 2,
"45", cs, 0, 0, 3), 0);
209 YAZ_CHECK_EQ(
do_scan(
dict, 4, 0,
"4501", cs, 0, 0, 4), 0);
219 YAZ_CHECK_EQ(
do_scan(
dict, 4, 0,
"a", cs, 0, 0, 4), 0);
220 YAZ_CHECK_EQ(
do_scan(
dict, 3, 1,
"9999", cs, 0, 0, 4), 0);
230 YAZ_CHECK_EQ(
do_scan(
dict, 0, 4,
"10", cs, 0, 0, 4), 0);
231 YAZ_CHECK_EQ(
do_scan(
dict, 0, 4,
"1", cs, 0, 0, 4), 0);
232 YAZ_CHECK_EQ(
do_scan(
dict, 0, 4,
" ", cs, 0, 0, 4), 0);
233 YAZ_CHECK_EQ(
do_scan(
dict, 0, 4,
"", cs, 0, 0, 4), 0);
237 for (i = 0; i < 20; i++)
238 YAZ_CHECK_EQ(
do_scan(
dict, 20, 20,
"45", 0, 0, 20-i, 20+i), 0);
242 int main(
int argc,
char **argv)
248 int before = 0, after = 0, number = 10000;
249 char scan_term[1024];
252 YAZ_CHECK_INIT(argc, argv);
254 strcpy(scan_term,
"1004");
255 while ((ret = options(
"b:a:t:n:v:", argv, argc, &arg)) != -2)
268 if (strlen(arg) >=
sizeof(scan_term)-1)
270 fprintf(stderr,
"scan term too long\n");
273 strcpy(scan_term, arg);
279 yaz_log_init_level(yaz_log_mask_str(arg));
295 for (i = start; i<number; i++)
298 yaz_snprintf(w,
sizeof(w),
"%d", i);
302 if (after > 0 || before > 0)
303 do_scan(
dict, before, after, scan_term, 0, 1, 0, after+1);
void bf_reset(BFiles bfs)
Removes register and shadow completely.
BFiles bfs_create(const char *spec, const char *base)
creates a Block files collection
void bfs_destroy(BFiles bfiles)
destroys a block files handle
Dict dict_open(BFiles bfs, const char *name, int cache, int rw, int compact_flag, int page_size)
open dictionary
int dict_insert(Dict dict, const char *p, int userlen, void *userinfo)
insert item into dictionary
int dict_scan(Dict dict, char *str, int *before, int *after, void *client, int(*f)(char *name, const char *info, int pos, void *client))
dictionary scan
int dict_close(Dict dict)
closes dictionary
static int handler(char *name, const char *info, int pos, void *client)
int main(int argc, char **argv)
int do_scan(Dict dict, int before, int after, const char *sterm, char **cmp_strs, int verbose, int start_cut, int end_cut)
static void tst(Dict dict, int start, int number)