예제 #1
0
파일: lmdb_stubs.c 프로젝트: 8l/pijul
CAMLprim value caml_mdb_env_copy(value env,value path){
  CAMLparam2(env,path);
  if(mdb_env_copy((MDB_env*)env,String_val(path))){
    caml_failwith("error in mdb_env_copy");
  }
  CAMLreturn0;
}
예제 #2
0
파일: jmdb.c 프로젝트: cirnoworks/jmdb
/*
 * Class:     jmdb_DatabaseWrapper
 * Method:    envCopy
 * Signature: (JLjava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_jmdb_DatabaseWrapper_envCopy(JNIEnv *vm,
		jclass clazz, jlong envL, jstring path) {
	MDB_env *envC = (MDB_env*) envL;
	const char *pathC = (*vm)->GetStringUTFChars(vm, path, NULL);
	int code = mdb_env_copy(envC, pathC);
	(*vm)->ReleaseStringUTFChars(vm, path, pathC);
	if (code != 0) {
		throwDatabaseException(vm, code);
	}
}
예제 #3
0
int main(int argc,char * argv[])
{
	int rc;
	MDB_env *env;
	const char *progname = argv[0], *act;
	unsigned flags = MDB_RDONLY;

	for (; argc > 1 && argv[1][0] == '-'; argc--, argv++) {
		if (argv[1][1] == 'n' && argv[1][2] == '\0')
			flags |= MDB_NOSUBDIR;
		else
			argc = 0;
	}

	if (argc<2 || argc>3) {
		fprintf(stderr, "usage: %s [-n] srcpath [dstpath]\n", progname);
		exit(EXIT_FAILURE);
	}

#ifdef SIGPIPE
	signal(SIGPIPE, sighandle);
#endif
#ifdef SIGHUP
	signal(SIGHUP, sighandle);
#endif
	signal(SIGINT, sighandle);
	signal(SIGTERM, sighandle);

	act = "opening environment";
	rc = mdb_env_create(&env);
	if (rc == MDB_SUCCESS) {
		rc = mdb_env_open(env, argv[1], flags, 0);
	}
	if (rc == MDB_SUCCESS) {
		act = "copying";
		if (argc == 2)
			rc = mdb_env_copyfd(env, MDB_STDOUT);
		else
			rc = mdb_env_copy(env, argv[2]);
	}
	if (rc)
		fprintf(stderr, "%s: %s failed, error %d (%s)\n",
			progname, act, rc, mdb_strerror(rc));
	mdb_env_close(env);

	return rc ? EXIT_FAILURE : EXIT_SUCCESS;
}