TCN_IMPLEMENT_CALL(jint, Library, version)(TCN_STDARGS, jint what) { apr_version_t apv; UNREFERENCED_STDARGS; apr_version(&apv); switch (what) { case 0x01: return TCN_MAJOR_VERSION; break; case 0x02: return TCN_MINOR_VERSION; break; case 0x03: return TCN_PATCH_VERSION; break; case 0x04: return TCN_IS_DEV_VERSION; break; case 0x11: return apv.major; break; case 0x12: return apv.minor; break; case 0x13: return apv.patch; break; case 0x14: return apv.is_dev; break; } return 0; }
TCN_IMPLEMENT_CALL(jint, Library, aprMajorVersion)(TCN_STDARGS) { apr_version_t apv; UNREFERENCED_STDARGS; apr_version(&apv); return apv.major; }
static void test_ints(CuTest *tc) { apr_version_t vsn; apr_version(&vsn); CuAssertIntEquals(tc, APR_MAJOR_VERSION, vsn.major); CuAssertIntEquals(tc, APR_MINOR_VERSION, vsn.minor); CuAssertIntEquals(tc, APR_PATCH_VERSION, vsn.patch); }
/* Called by the JVM when APR_JAVA is loaded */ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *env; apr_version_t apv; int apvn; UNREFERENCED(reserved); if ((*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_4)) { return JNI_ERR; } tcn_global_vm = vm; /* Before doing anything else check if we have a valid * APR version. We need version 1.2.1 as minimum. */ apr_version(&apv); apvn = apv.major * 1000 + apv.minor * 100 + apv.patch; if (apvn < 1201) { tcn_Throw(env, "Unupported APR version (%s)", apr_version_string()); return JNI_ERR; } /* Initialize global java.lang.String class */ TCN_LOAD_CLASS(env, jString_class, "java/lang/String", JNI_ERR); TCN_LOAD_CLASS(env, jFinfo_class, TCN_FINFO_CLASS, JNI_ERR); TCN_LOAD_CLASS(env, jAinfo_class, TCN_AINFO_CLASS, JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_init, "<init>", "([B)V", JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_getBytes, "getBytes", "()[B", JNI_ERR); if(tcn_load_finfo_class(env, jFinfo_class) != APR_SUCCESS) return JNI_ERR; if(tcn_load_ainfo_class(env, jAinfo_class) != APR_SUCCESS) return JNI_ERR; #ifdef WIN32 { char *ppid = getenv(TCN_PARENT_IDE); if (ppid) tcn_parent_pid = atoi(ppid); } #else tcn_parent_pid = getppid(); #endif return JNI_VERSION_1_4; }
/* Called by the JVM when APR_JAVA is loaded */ JNIEXPORT jint JNICALL JNI_OnLoad_netty_tcnative(JavaVM *vm, void *reserved) { JNIEnv *env; apr_version_t apv; int apvn; UNREFERENCED(reserved); if ((*vm)->GetEnv(vm, (void **)&env, TCN_JNI_VERSION)) { return JNI_ERR; } tcn_global_vm = vm; /* Before doing anything else check if we have a valid * APR version. */ apr_version(&apv); apvn = apv.major * 1000 + apv.minor * 100 + apv.patch; if (apvn < 1201) { tcn_Throw(env, "Unupported APR version (%s)", apr_version_string()); return JNI_ERR; } /* Initialize global java.lang.String class */ TCN_LOAD_CLASS(env, jString_class, "java/lang/String", JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_init, "<init>", "([B)V", JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_getBytes, "getBytes", "()[B", JNI_ERR); TCN_LOAD_CLASS(env, byteArrayClass, "[B", JNI_ERR); TCN_LOAD_CLASS(env, keyMaterialClass, "io/netty/tcnative/jni/CertificateRequestedCallback$KeyMaterial", JNI_ERR); TCN_GET_FIELD(env, keyMaterialClass, keyMaterialCertificateChainFieldId, "certificateChain", "J", JNI_ERR); TCN_GET_FIELD(env, keyMaterialClass, keyMaterialPrivateKeyFieldId, "privateKey", "J", JNI_ERR); return TCN_JNI_VERSION; }
static int asn_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { apr_version(&vsn); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s, "[mod_asn] compiled with APR/APR-Util %s/%s", APR_VERSION_STRING, APU_VERSION_STRING); if ((vsn.major == 1) && (vsn.minor == 2)) { dbd_first_row = 0; } else { dbd_first_row = 1; } ap_add_version_component(pconf, VERSION_COMPONENT); /* make sure that mod_dbd is loaded */ if (asn_dbd_prepare_fn == NULL) { asn_dbd_prepare_fn = APR_RETRIEVE_OPTIONAL_FN(ap_dbd_prepare); if (asn_dbd_prepare_fn == NULL) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, "[mod_asn] You must load mod_dbd to enable mod_asn to work"); return HTTP_INTERNAL_SERVER_ERROR; } asn_dbd_open_fn = APR_RETRIEVE_OPTIONAL_FN(ap_dbd_open); asn_dbd_close_fn = APR_RETRIEVE_OPTIONAL_FN(ap_dbd_close); } /* prepare DBD SQL statements */ static unsigned int label_num = 0; server_rec *sp; for (sp = s; sp; sp = sp->next) { asn_server_conf *cfg = ap_get_module_config(sp->module_config, &asn_module); /* make a label */ cfg->query_prep = apr_psprintf(pconf, "asn_dbd_%d", ++label_num); asn_dbd_prepare_fn(sp, cfg->query, cfg->query_prep); } return OK; }
TCN_IMPLEMENT_CALL(jint, Library, version)(TCN_STDARGS, jint what) { apr_version_t apv; UNREFERENCED_STDARGS; apr_version(&apv); switch (what) { case 0x11: return apv.major; break; case 0x12: return apv.minor; break; case 0x13: return apv.patch; break; case 0x14: return apv.is_dev; break; } return 0; }