X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=cdb%2Fchiark_tcl_cdb.h;h=fef668c6efeede8127ac150ae7daea21226bc836;hb=50b72ed6d566c8afbd3afb5c565eca002a737e7a;hp=ff5424b9e556aff8e4eed376bd05b2e19b45152f;hpb=6c2630597a21671a6b44954cb829b98dd84a22ee;p=chiark-tcl.git diff --git a/cdb/chiark_tcl_cdb.h b/cdb/chiark_tcl_cdb.h index ff5424b..fef668c 100644 --- a/cdb/chiark_tcl_cdb.h +++ b/cdb/chiark_tcl_cdb.h @@ -1,13 +1,32 @@ /* + * cdb, cdb-wr - Tcl bindings for tinycdb and a journalling write extension + * Copyright 2006-2012 Ian Jackson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this library; if not, see . */ #ifndef CHIARK_TCL_CDB_H #define CHIARK_TCL_CDB_H #include +#include #include #include +#include +#include + #include #include "hbytes.h" @@ -17,4 +36,25 @@ extern const IdDataSpec cdbtcl_databases, cdbtcl_rwdatabases; +/*---------- from lookup.c ----------*/ + +int cht_cdb_donesomelookup(Tcl_Interp *ip, void *db_v, + Tcl_Obj *def, Tcl_Obj **result, + const Byte *data, int dlen, + int (*storeanswer)(Tcl_Interp *ip, Tcl_Obj **result, + const Byte *data, int len)); +int cht_cdb_storeanswer_string(Tcl_Interp *ip, Tcl_Obj **result, + const Byte *data, int len); +int cht_cdb_storeanswer_hb(Tcl_Interp *ip, Tcl_Obj **result, + const Byte *data, int len); +int cht_cdb_lookup_cdb(Tcl_Interp *ip, struct cdb *cdb, + const Byte *key, int klen, + const Byte **data_r, int *dlen_r); + +/*---------- macros ----------*/ + +#define PE(m) do{ \ + rc= cht_posixerr(ip, errno, "failed to " m); goto x_rc; \ + }while(0) + #endif /*CHIARK_TCL_CDB_H*/