BerkeleyDB

 view release on metacpan or  search on metacpan

BerkeleyDB.xs  view on Meta::CPAN

    {
        DBT_clear(*data);
        Value = GetRecnoKey(getCurrentDB, SvIV(data_sv)) ;
        data->flags = DB_DBT_APPMALLOC;
        data->size = (int)sizeof(db_recno_t);
        data->data = (char*)safemalloc(data->size);
        memcpy(data->data, &Value, data->size);
    }
    /*Trace(("key is %d -- %.*s\n", skey->size, skey->size, skey->data));*/

    FREETMPS ;
    LEAVE ;

    return (retval) ;
}

#endif /* AT_LEAST_DB_3_3 */

static void
#ifdef AT_LEAST_DB_4_3
db_errcall_cb(const DB_ENV* dbenv, const char * db_errpfx, const char * buffer)
#else
db_errcall_cb(const char * db_errpfx, char * buffer)
#endif
{
#ifdef dTHX
    dTHX;
#endif
    SV * sv;

    Trace(("In errcall_cb \n")) ;
#if 0

    if (db_errpfx == NULL)
	db_errpfx = "" ;
    if (buffer == NULL )
	buffer = "" ;
    ErrBuff[0] = '\0';
    if (strlen(db_errpfx) + strlen(buffer) + 3 <= 1000) {
	if (*db_errpfx != '\0') {
	    strcat(ErrBuff, db_errpfx) ;
	    strcat(ErrBuff, ": ") ;
	}
	strcat(ErrBuff, buffer) ;
    }

#endif

    sv = perl_get_sv(ERR_BUFF, FALSE) ;
    if (sv) {
        if (db_errpfx)
	    sv_setpvf(sv, "%s: %s", db_errpfx, buffer) ;
        else
            sv_setpv(sv, buffer) ;
    }
}

#if defined(AT_LEAST_DB_4_4) && ! defined(_WIN32)

int
db_isalive_cb(DB_ENV *dbenv, pid_t pid, db_threadid_t tid, u_int32_t flags)
{
  bool processAlive = ( kill(pid, 0) == 0 ) || ( errno != ESRCH );
  return processAlive;
}

#endif


static SV *
readHash(HV * hash, char * key)
{
#ifdef dTHX
    dTHX;
#endif
    SV **       svp;
    svp = hv_fetch(hash, key, strlen(key), FALSE);

    if (svp) {
        if (SvGMAGICAL(*svp))
            mg_get(*svp);
        if (SvOK(*svp))
            return *svp;
    }

    return NULL ;
}

static void
hash_delete(char * hash, char * key)
{
#ifdef dTHX
    dTHX;
#endif
    HV * hv = perl_get_hv(hash, TRUE);
    (void) hv_delete(hv, (char*)&key, sizeof(key), G_DISCARD);
}

static void
hash_store_iv(char * hash, char * key, IV value)
{
#ifdef dTHX
    dTHX;
#endif
    HV * hv = perl_get_hv(hash, TRUE);
    (void)hv_store(hv, (char*)&key, sizeof(key), newSViv(value), 0);
    /* printf("hv_store returned %d\n", ret) ; */
}

static void
hv_store_iv(HV * hash, char * key, IV value)
{
#ifdef dTHX
    dTHX;
#endif
    hv_store(hash, key, strlen(key), newSViv(value), 0);
}

#if 0
static void
hv_store_uv(HV * hash, char * key, UV value)

BerkeleyDB.xs  view on Meta::CPAN

#ifndef AT_LEAST_DB_4_3
		softCrash("$env->lock_stat_print needs Berkeley DB 4.3 or better") ;
#else
		RETVAL = env->Status = env->Env->lock_stat_print(env->Env, flags);
#endif
	OUTPUT:
		RETVAL

int
mutex_stat_print(env, flags=0)
	BerkeleyDB::Env  env
	u_int32_t    flags
	INIT:
	  ckActive_Database(env->active) ;
	CODE:
#ifndef AT_LEAST_DB_4_4
		softCrash("$env->mutex_stat_print needs Berkeley DB 4.4 or better") ;
#else
		RETVAL = env->Status = env->Env->mutex_stat_print(env->Env, flags);
#endif
	OUTPUT:
		RETVAL


int
txn_stat_print(env, flags=0)
	BerkeleyDB::Env  env
	u_int32_t    flags
	INIT:
	  ckActive_Database(env->active) ;
	CODE:
#ifndef AT_LEAST_DB_4_3
		softCrash("$env->mutex_stat_print needs Berkeley DB 4.3 or better") ;
#else
		RETVAL = env->Status = env->Env->txn_stat_print(env->Env, flags);
#endif
	OUTPUT:
		RETVAL

int
failchk(env, flags=0)
	BerkeleyDB::Env  env
	u_int32_t    flags
	INIT:
	  ckActive_Database(env->active) ;
	CODE:
#if ! defined(AT_LEAST_DB_4_4) || defined(_WIN32)
#ifndef AT_LEAST_DB_4_4
		softCrash("$env->failchk needs Berkeley DB 4.4 or better") ;
#endif
#ifdef _WIN32
		softCrash("$env->failchk not supported on Windows") ;
#endif
#else
		RETVAL = env->Status = env->Env->failchk(env->Env, flags);
#endif
	OUTPUT:
		RETVAL

int
set_isalive(env)
	BerkeleyDB::Env  env
	INIT:
	  ckActive_Database(env->active) ;
	CODE:
#if ! defined(AT_LEAST_DB_4_4) || defined(_WIN32)
#ifndef AT_LEAST_DB_4_4
		softCrash("$env->set_isalive needs Berkeley DB 4.4 or better") ;
#endif
#ifdef _WIN32
		softCrash("$env->set_isalive not supported on Windows") ;
#endif
#else
		RETVAL = env->Status = env->Env->set_isalive(env->Env, db_isalive_cb);
#endif
	OUTPUT:
		RETVAL


DualType
get_blob_threshold(env, bytes)
	BerkeleyDB::Env	env
	u_int32_t bytes = NO_INIT
	PREINIT:
	  dMY_CXT;
    CODE:
#ifndef AT_LEAST_DB_6_0
	    softCrash("$env->get_blob_threshold needs Berkeley DB 6.0 or better") ;
#else
        RETVAL = env->Env->get_blob_threshold(env->Env, &bytes);
#endif
    OUTPUT:
        RETVAL
        bytes

DualType
get_blob_dir(env, dir)
	BerkeleyDB::Env	env
	char* dir = NO_INIT
	PREINIT:
	  dMY_CXT;
    CODE:
#ifndef AT_LEAST_DB_6_0
	    softCrash("$env->get_blob_dir needs Berkeley DB 6.0 or better") ;
#else
        RETVAL = env->Env->get_blob_dir(env->Env, (const char**)&dir);
#endif
    OUTPUT:
        RETVAL
        dir

DualType
set_region_dir(env, dir)
	BerkeleyDB::Env	env
	const char* dir
	PREINIT:
	  dMY_CXT;
    CODE:
#ifndef AT_LEAST_DB_6_2
	    softCrash("$env->set_region_dir needs Berkeley DB 6.2 or better") ;
#else
        RETVAL = env->Env->set_region_dir(env->Env, dir);
#endif
    OUTPUT:
        RETVAL

DualType
get_region_dir(env, dir)
	BerkeleyDB::Env	env
	char* dir = NO_INIT
	PREINIT:
	  dMY_CXT;
    CODE:
#ifndef AT_LEAST_DB_6_2



( run in 2.001 seconds using v1.01-cache-2.11-cpan-df04353d9ac )