20#ifdef ENABLE_BERKELEYDB
34DB* open_fdb(
char* fname,
unsigned int mode)
38 if (fname==NULL)
return NULL;
40 int ret = db_create(&dp, NULL, 0);
42 ret = dp->open(dp, NULL, fname, NULL, DB_HASH, (u_int32_t)mode, 0600);
47 dp->err(dp, ret,
"DB->open");
61void close_fdb(DB** dp)
63 if (dp==NULL || *dp==NULL)
return;
65 (*dp)->close((*dp), 0);
83int check_fdb_file(
char* fname)
85 DB* dp = open_fdb(fname, DB_CREATE);
87 if (dp==NULL)
return FALSE;
114 memset(&key, 0,
sizeof(DBT));
115 memset(&data, 0,
sizeof(DBT));
120 key.size = strlen((
char*)
id.buf);
124 data.data = dbdata.
buf;
125 data.size = dbdata.
vldsz;
128 ret = dp->put(dp, NULL, &key, &data, 0);
154int set_fdb_data_file(
char* fname,
Buffer id,
Buffer dbdata)
160 dp = open_fdb(fname, DB_CREATE);
163 memset(&key, 0,
sizeof(DBT));
164 memset(&data, 0,
sizeof(DBT));
166 key.data = (
char*)(
id.buf);
169 key.size = strlen((
char*)
id.buf);
173 data.data = (
char*)dbdata.
buf;
174 data.size = dbdata.
vldsz;
177 ret = dp->put(dp, NULL, &key, &data, 0);
216 memset(&key, 0,
sizeof(DBT));
217 memset(&data, 0,
sizeof(DBT));
220 key.data = (
void*)
id.buf;
221 key.size = (u_int32_t)
id.vldsz;
223 key.size = strlen((
char*)
id.buf);
225 dbdata.
state = JBXL_BDB_MEMOEY_ERROR;
230 ret = dp->get(dp, NULL, &key, &data, 0);
232 dbdata.
state = JBXL_DBD_MEMORY_ERROR;
237 if (dbdata.
buf==NULL) {
241 memcpy(dbdata.
buf, data.data, data.size);
242 dbdata.
vldsz = data.size;
243 dbdata.
buf[data.size] =
'\0';
281 dp = open_fdb(fname, DB_RDONLY);
287 memset(&key, 0,
sizeof(DBT));
288 memset(&data, 0,
sizeof(DBT));
290 key.data = (
char*)(
id.buf);
293 key.size = strlen((
char*)
id.buf);
300 ret = dp->get(dp, NULL, &key, &data, 0);
308 if (dbdata.
buf==NULL) {
313 dbdata.
vldsz = data.size;
314 memcpy(dbdata.
buf, data.data, data.size);
315 dbdata.
buf[data.size] =
'\0';
335int del_fdb_data(DB* dp,
Buffer id)
340 memset(&key, 0,
sizeof(DBT));
341 key.data = (
char*)(
id.buf);
344 key.size = strlen((
char*)
id.buf);
345 if (key.size<=0)
return FALSE;
347 ret = dp->del(dp, NULL, &key, 0);
371int del_fdb_data_file(
char* fname,
Buffer id)
377 dp = open_fdb(fname, 0);
378 if (dp==NULL)
return FALSE;
380 memset(&key, 0,
sizeof(DBT));
381 key.data = (
char*)(
id.buf);
384 key.size = strlen((
char*)
id.buf);
385 if (key.size<=0)
return FALSE;
388 ret = dp->del(dp, NULL, &key, 0);
406tList* get_all_fdb_data(DB* dp)
416 if (dp==NULL)
return NULL;
418 dp->cursor(dp, NULL, &crsp, 0);
419 if (crsp==NULL)
return NULL;
421 memset(&key, 0,
sizeof(DBT));
422 memset(&data, 0,
sizeof(DBT));
424 ret = crsp->c_get(crsp, &key, &data, DB_NEXT);
429 if (lp==NULL) lp = lt;
433 ret = crsp->c_get(crsp, &key, &data, DB_NEXT);
449tList* get_all_fdb_data_file(
char* fname)
454 if (fname==NULL)
return NULL;
456 dp = open_fdb(fname, DB_RDONLY);
457 if (dp==NULL)
return NULL;
459 lp = get_all_fdb_data(dp);
Buffer make_Buffer(int sz)
Buffer型変数のバッファ部をつくり出す.
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
Buffer init_Buffer()
初期化したBuffer型変数を返す.
#define make_Buffer_bin(str, len)
set_Buffer()
#define JBXL_BDB_DATASZ_ERROR
BDB でデータのサイズが不明
#define JBXL_BDB_PUT_ERROR
BDB でデータの登録に失敗
#define JBXL_BDB_KEY_ERROR
BDB でキーの取得に失敗
#define JBXL_BDB_GET_ERROR
BDB でデータの取得に失敗
#define JBXL_BDB_MEMORY_ERROR
BDB でメモリの確保に失敗
#define JBXL_BDB_OPEN_ERROR
BDB でデータファイルのオープンに失敗
int vldsz
データの長さ.バイナリデータの場合も使用可能.文字列の場合は 0x00 を含まない.
int state
変数の状態を表す.正常は JBXL_NORMAL
unsigned char * buf
バッファの先頭へのポインタ.str[bufsz]は必ず 0x00となる.
#define add_tList_node_Buffer(p, k, v)
add_tList_node_byBuffer()