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()