Renamed fileExtract to zebra_extract_file.. The new function returns
[idzebra-moved-to-github.git] / index / orddict.c
1 /* $Id: orddict.c,v 1.2 2006-02-09 08:31:02 adam Exp $
2    Copyright (C) 1995-2005
3    Index Data ApS
4
5 This file is part of the Zebra server.
6
7 Zebra is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
10 version.
11
12 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Zebra; see the file LICENSE.zebra.  If not, write to the
19 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA.
21 */
22
23 #include <assert.h>
24 #include <yaz/wrbuf.h>
25 #include "index.h"
26
27 WRBUF zebra_mk_ord_str(int ord, const char *str)
28 {
29     char pref[20];
30     WRBUF w = wrbuf_alloc();
31     int len;
32
33     assert(ord >= 0);
34
35     len = key_SU_encode(ord, pref);
36
37     wrbuf_write(w, pref, len);
38     wrbuf_puts(w, str);
39     return w;
40 }
41
42 char *dict_lookup_ord(Dict d, int ord, const char *str)
43 {
44     WRBUF w = zebra_mk_ord_str(ord, str);
45     char *rinfo = dict_lookup(d, wrbuf_buf(w));
46     wrbuf_free(w, 1);
47     return rinfo;
48 }
49
50 int dict_insert_ord(Dict d, int ord, const char *p,
51                     int userlen, void *userinfo)
52 {
53     WRBUF w = zebra_mk_ord_str(ord, p);
54     int r = dict_insert(d, wrbuf_buf(w), userlen, userinfo);
55     wrbuf_free(w, 1);
56     return r;
57 }
58
59 int dict_delete_ord(Dict d, int ord, const char *p)
60 {
61     WRBUF w = zebra_mk_ord_str(ord, p);
62     int r = dict_delete(d, wrbuf_buf(w));
63     wrbuf_free(w, 1);
64     return r;
65 }
66
67 int dict_delete_subtree_ord(Dict d, int ord, void *client,
68                             int (*f)(const char *info, void *client))
69 {
70     WRBUF w = zebra_mk_ord_str(ord, "");
71     int r = dict_delete_subtree(d, wrbuf_buf(w), client, f);
72     wrbuf_free(w, 1);
73     return r;
74 }