X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzebraapi.c;h=9ebb98016eac1087a3da6640da98c0d9cdb2daea;hb=f967c55541a4adb26f43fc78f6bb7b98ebba6a32;hp=f2d73c61a6e23a1f419bec82b2e8ae3c8387e0dd;hpb=4af6d9d39d87a0121958ff33b413748377163d68;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index f2d73c6..9ebb980 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -1,4 +1,4 @@ -/* $Id: zebraapi.c,v 1.162 2005-04-26 08:11:22 adam Exp $ +/* $Id: zebraapi.c,v 1.166 2005-05-09 10:04:30 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -145,6 +145,10 @@ ZebraHandle zebra_open (ZebraService zs) zebra_mutex_cond_unlock (&zs->session_lock); + zh->store_data_buf = 0; + + zh->m_limit = zebra_limit_create(0, 0); + return zh; } @@ -533,6 +537,9 @@ ZEBRA_RES zebra_close (ZebraHandle zh) xfree(zh->reg_name); xfree(zh->user_perm); zh->service = 0; /* more likely to trigger an assert */ + + zebra_limit_destroy(zh->m_limit); + xfree(zh->path_reg); xfree(zh); return ZEBRA_OK; @@ -645,6 +652,20 @@ static void zebra_select_register (ZebraHandle zh, const char *new_reg) zh->lock_shadow = zebra_lock_create (res_get(zh->res, "lockDir"), fname, 0); + if (!zh->lock_normal || !zh->lock_shadow) + { + if (zh->lock_normal) + { + zebra_lock_destroy(zh->lock_normal); + zh->lock_normal = 0; + } + if (zh->lock_shadow) + { + zebra_lock_destroy(zh->lock_shadow); + zh->lock_shadow = 0; + } + zebra_close_res(zh); + } } } @@ -690,7 +711,7 @@ int zebra_select_default_database(ZebraHandle zh) const char *group = res_get(zh->service->global_res, "group"); const char *v = res_get_prefix(zh->service->global_res, "database", group, "Default"); - zebra_select_database(zh, v); + return zebra_select_database(zh, v); } return 0; } @@ -1928,7 +1949,7 @@ void zebra_set_resource(ZebraHandle zh, const char *name, const char *value) ASSERTZH; assert(name); assert(value); - yaz_log(log_level, "zebra_set_resource %s:%s",name,value); + yaz_log(log_level, "zebra_set_resource %s:%s", name, value); zh->errCode = 0; res_set(zh->res, name, value); } @@ -1940,9 +1961,9 @@ const char *zebra_get_resource(ZebraHandle zh, ASSERTZH; assert(name); assert(defaultvalue); - v= res_get_def( zh->res, name, (char *)defaultvalue); + v = res_get_def (zh->res, name, (char *)defaultvalue); zh->errCode = 0; - yaz_log(log_level, "zebra_get_resource %s:%s",name,v); + yaz_log(log_level, "zebra_get_resource %s:%s", name, v); return v; } @@ -2163,9 +2184,24 @@ int zebra_sort_by_specstr (ZebraHandle zh, ODR stream, return sort_status; } +/* --------------------------------------------------------------------------- + Get BFS for Zebra system (to make alternative storage methods) +*/ struct BFiles_struct *zebra_get_bfs(ZebraHandle zh) { if (zh && zh->reg) return zh->reg->bfs; return 0; } + + +/* --------------------------------------------------------------------------- + Set limit for search/scan +*/ +ZEBRA_RES zebra_set_limit(ZebraHandle zh, int exclude_flag, zint *ids) +{ + ASSERTZH; + zebra_limit_destroy(zh->m_limit); + zh->m_limit = zebra_limit_create(exclude_flag, ids); + return ZEBRA_OK; +}