Merge branch 'sigar-1.6'
This commit is contained in:
commit
539056d24a
|
@ -249,7 +249,7 @@ int jsigar_list_init(JNIEnv *env, jsigar_list_t *obj)
|
||||||
obj->obj = JENV->NewObject(env, listclass, listid);
|
obj->obj = JENV->NewObject(env, listclass, listid);
|
||||||
obj->id = addid;
|
obj->id = addid;
|
||||||
|
|
||||||
return SIGAR_OK;
|
return JENV->ExceptionCheck(env) ? !SIGAR_OK : SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int jsigar_list_add(void *data, char *value, int len)
|
int jsigar_list_add(void *data, char *value, int len)
|
||||||
|
@ -260,7 +260,7 @@ int jsigar_list_add(void *data, char *value, int len)
|
||||||
JENV->CallBooleanMethod(env, obj->obj, obj->id,
|
JENV->CallBooleanMethod(env, obj->obj, obj->id,
|
||||||
JENV->NewStringUTF(env, value));
|
JENV->NewStringUTF(env, value));
|
||||||
|
|
||||||
return SIGAR_OK;
|
return JENV->ExceptionCheck(env) ? !SIGAR_OK : SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jstring SIGAR_JNIx(formatSize)
|
JNIEXPORT jstring SIGAR_JNIx(formatSize)
|
||||||
|
@ -398,9 +398,6 @@ static jstring jnet_address_to_string(JNIEnv *env, sigar_t *sigar, sigar_net_add
|
||||||
|
|
||||||
#include "javasigar_generated.c"
|
#include "javasigar_generated.c"
|
||||||
|
|
||||||
#define SIGAR_ALLOC_OBJECT(name) \
|
|
||||||
JENV->AllocObject(env, SIGAR_FIND_CLASS(name))
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
FS_FIELD_DIRNAME,
|
FS_FIELD_DIRNAME,
|
||||||
FS_FIELD_DEVNAME,
|
FS_FIELD_DEVNAME,
|
||||||
|
@ -448,6 +445,7 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getFileSystemListNative)
|
||||||
JENV->GetFieldID(env, cls, "type", "I");
|
JENV->GetFieldID(env, cls, "type", "I");
|
||||||
|
|
||||||
fsarray = JENV->NewObjectArray(env, fslist.number, cls, 0);
|
fsarray = JENV->NewObjectArray(env, fslist.number, cls, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<fslist.number; i++) {
|
for (i=0; i<fslist.number; i++) {
|
||||||
sigar_file_system_t *fs = &(fslist.data)[i];
|
sigar_file_system_t *fs = &(fslist.data)[i];
|
||||||
|
@ -472,6 +470,7 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getFileSystemListNative)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fsobj = JENV->AllocObject(env, obj_cls);
|
fsobj = JENV->AllocObject(env, obj_cls);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
JENV->SetStringField(env, fsobj,
|
JENV->SetStringField(env, fsobj,
|
||||||
ids[FS_FIELD_DIRNAME],
|
ids[FS_FIELD_DIRNAME],
|
||||||
|
@ -498,6 +497,7 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getFileSystemListNative)
|
||||||
fs->type);
|
fs->type);
|
||||||
|
|
||||||
JENV->SetObjectArrayElement(env, fsarray, i, fsobj);
|
JENV->SetObjectArrayElement(env, fsarray, i, fsobj);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_file_system_list_destroy(sigar, &fslist);
|
sigar_file_system_list_destroy(sigar, &fslist);
|
||||||
|
@ -562,12 +562,15 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getCpuInfoList)
|
||||||
JAVA_SIGAR_INIT_FIELDS_CPUINFO(cls);
|
JAVA_SIGAR_INIT_FIELDS_CPUINFO(cls);
|
||||||
|
|
||||||
cpuarray = JENV->NewObjectArray(env, cpu_infos.number, cls, 0);
|
cpuarray = JENV->NewObjectArray(env, cpu_infos.number, cls, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<cpu_infos.number; i++) {
|
for (i=0; i<cpu_infos.number; i++) {
|
||||||
jobject info_obj = JENV->AllocObject(env, cls);
|
jobject info_obj = JENV->AllocObject(env, cls);
|
||||||
|
SIGAR_CHEX;
|
||||||
JAVA_SIGAR_SET_FIELDS_CPUINFO(cls, info_obj,
|
JAVA_SIGAR_SET_FIELDS_CPUINFO(cls, info_obj,
|
||||||
cpu_infos.data[i]);
|
cpu_infos.data[i]);
|
||||||
JENV->SetObjectArrayElement(env, cpuarray, i, info_obj);
|
JENV->SetObjectArrayElement(env, cpuarray, i, info_obj);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_cpu_info_list_destroy(sigar, &cpu_infos);
|
sigar_cpu_info_list_destroy(sigar, &cpu_infos);
|
||||||
|
@ -593,12 +596,15 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getCpuListNative)
|
||||||
JAVA_SIGAR_INIT_FIELDS_CPU(cls);
|
JAVA_SIGAR_INIT_FIELDS_CPU(cls);
|
||||||
|
|
||||||
cpuarray = JENV->NewObjectArray(env, cpulist.number, cls, 0);
|
cpuarray = JENV->NewObjectArray(env, cpulist.number, cls, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<cpulist.number; i++) {
|
for (i=0; i<cpulist.number; i++) {
|
||||||
jobject info_obj = JENV->AllocObject(env, cls);
|
jobject info_obj = JENV->AllocObject(env, cls);
|
||||||
|
SIGAR_CHEX;
|
||||||
JAVA_SIGAR_SET_FIELDS_CPU(cls, info_obj,
|
JAVA_SIGAR_SET_FIELDS_CPU(cls, info_obj,
|
||||||
cpulist.data[i]);
|
cpulist.data[i]);
|
||||||
JENV->SetObjectArrayElement(env, cpuarray, i, info_obj);
|
JENV->SetObjectArrayElement(env, cpuarray, i, info_obj);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_cpu_list_destroy(sigar, &cpulist);
|
sigar_cpu_list_destroy(sigar, &cpulist);
|
||||||
|
@ -635,6 +641,7 @@ JNIEXPORT jlongArray SIGAR_JNIx(getProcList)
|
||||||
}
|
}
|
||||||
|
|
||||||
procarray = JENV->NewLongArray(env, proclist.number);
|
procarray = JENV->NewLongArray(env, proclist.number);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
if (sizeof(jlong) == sizeof(sigar_pid_t)) {
|
if (sizeof(jlong) == sizeof(sigar_pid_t)) {
|
||||||
pids = (jlong *)proclist.data;
|
pids = (jlong *)proclist.data;
|
||||||
|
@ -676,10 +683,12 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getProcArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
argsarray = JENV->NewObjectArray(env, procargs.number, stringclass, 0);
|
argsarray = JENV->NewObjectArray(env, procargs.number, stringclass, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<procargs.number; i++) {
|
for (i=0; i<procargs.number; i++) {
|
||||||
jstring s = JENV->NewStringUTF(env, procargs.data[i]);
|
jstring s = JENV->NewStringUTF(env, procargs.data[i]);
|
||||||
JENV->SetObjectArrayElement(env, argsarray, i, s);
|
JENV->SetObjectArrayElement(env, argsarray, i, s);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_proc_args_destroy(sigar, &procargs);
|
sigar_proc_args_destroy(sigar, &procargs);
|
||||||
|
@ -704,7 +713,7 @@ static int jni_env_getall(void *data,
|
||||||
JENV->NewStringUTF(env, key),
|
JENV->NewStringUTF(env, key),
|
||||||
JENV->NewStringUTF(env, val));
|
JENV->NewStringUTF(env, val));
|
||||||
|
|
||||||
return SIGAR_OK;
|
return JENV->ExceptionCheck(env) ? !SIGAR_OK : SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAP_PUT_SIG \
|
#define MAP_PUT_SIG \
|
||||||
|
@ -728,6 +737,7 @@ JNIEXPORT jobject SIGAR_JNI(ProcEnv_getAll)
|
||||||
dSIGAR(NULL);
|
dSIGAR(NULL);
|
||||||
|
|
||||||
hashmap = JENV->NewObject(env, mapclass, mapid);
|
hashmap = JENV->NewObject(env, mapclass, mapid);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
put.env = env;
|
put.env = env;
|
||||||
put.id = putid;
|
put.id = putid;
|
||||||
|
@ -809,7 +819,9 @@ JNIEXPORT jobject SIGAR_JNIx(getProcModulesNative)
|
||||||
|
|
||||||
dSIGAR(NULL);
|
dSIGAR(NULL);
|
||||||
|
|
||||||
jsigar_list_init(env, &obj);
|
if (jsigar_list_init(env, &obj) != SIGAR_OK) {
|
||||||
|
return NULL; /* Exception thrown */
|
||||||
|
}
|
||||||
|
|
||||||
procmods.module_getter = jsigar_list_add;
|
procmods.module_getter = jsigar_list_add;
|
||||||
procmods.data = &obj;
|
procmods.data = &obj;
|
||||||
|
@ -837,6 +849,7 @@ JNIEXPORT jdoubleArray SIGAR_JNIx(getLoadAverage)
|
||||||
}
|
}
|
||||||
|
|
||||||
avgarray = JENV->NewDoubleArray(env, 3);
|
avgarray = JENV->NewDoubleArray(env, 3);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
JENV->SetDoubleArrayRegion(env, avgarray, 0,
|
JENV->SetDoubleArrayRegion(env, avgarray, 0,
|
||||||
3, loadavg.loadavg);
|
3, loadavg.loadavg);
|
||||||
|
@ -862,11 +875,14 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getNetRouteList)
|
||||||
JAVA_SIGAR_INIT_FIELDS_NETROUTE(cls);
|
JAVA_SIGAR_INIT_FIELDS_NETROUTE(cls);
|
||||||
|
|
||||||
routearray = JENV->NewObjectArray(env, routelist.number, cls, 0);
|
routearray = JENV->NewObjectArray(env, routelist.number, cls, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<routelist.number; i++) {
|
for (i=0; i<routelist.number; i++) {
|
||||||
jobject obj = JENV->AllocObject(env, cls);
|
jobject obj = JENV->AllocObject(env, cls);
|
||||||
|
SIGAR_CHEX;
|
||||||
JAVA_SIGAR_SET_FIELDS_NETROUTE(cls, obj, routelist.data[i]);
|
JAVA_SIGAR_SET_FIELDS_NETROUTE(cls, obj, routelist.data[i]);
|
||||||
JENV->SetObjectArrayElement(env, routearray, i, obj);
|
JENV->SetObjectArrayElement(env, routearray, i, obj);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_net_route_list_destroy(sigar, &routelist);
|
sigar_net_route_list_destroy(sigar, &routelist);
|
||||||
|
@ -909,11 +925,14 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getNetConnectionList)
|
||||||
JAVA_SIGAR_INIT_FIELDS_NETCONNECTION(cls);
|
JAVA_SIGAR_INIT_FIELDS_NETCONNECTION(cls);
|
||||||
|
|
||||||
connarray = JENV->NewObjectArray(env, connlist.number, cls, 0);
|
connarray = JENV->NewObjectArray(env, connlist.number, cls, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<connlist.number; i++) {
|
for (i=0; i<connlist.number; i++) {
|
||||||
jobject obj = JENV->AllocObject(env, cls);
|
jobject obj = JENV->AllocObject(env, cls);
|
||||||
|
SIGAR_CHEX;
|
||||||
JAVA_SIGAR_SET_FIELDS_NETCONNECTION(cls, obj, connlist.data[i]);
|
JAVA_SIGAR_SET_FIELDS_NETCONNECTION(cls, obj, connlist.data[i]);
|
||||||
JENV->SetObjectArrayElement(env, connarray, i, obj);
|
JENV->SetObjectArrayElement(env, connarray, i, obj);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_net_connection_list_destroy(sigar, &connlist);
|
sigar_net_connection_list_destroy(sigar, &connlist);
|
||||||
|
@ -990,6 +1009,10 @@ JNIEXPORT void SIGAR_JNI(NetStat_stat)
|
||||||
}
|
}
|
||||||
|
|
||||||
states = JENV->NewIntArray(env, SIGAR_TCP_UNKNOWN);
|
states = JENV->NewIntArray(env, SIGAR_TCP_UNKNOWN);
|
||||||
|
if (JENV->ExceptionCheck(env)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
JENV->SetIntArrayRegion(env, states, 0,
|
JENV->SetIntArrayRegion(env, states, 0,
|
||||||
SIGAR_TCP_UNKNOWN,
|
SIGAR_TCP_UNKNOWN,
|
||||||
tcp_states);
|
tcp_states);
|
||||||
|
@ -1094,12 +1117,15 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getWhoList)
|
||||||
JAVA_SIGAR_INIT_FIELDS_WHO(cls);
|
JAVA_SIGAR_INIT_FIELDS_WHO(cls);
|
||||||
|
|
||||||
whoarray = JENV->NewObjectArray(env, wholist.number, cls, 0);
|
whoarray = JENV->NewObjectArray(env, wholist.number, cls, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<wholist.number; i++) {
|
for (i=0; i<wholist.number; i++) {
|
||||||
jobject info_obj = JENV->AllocObject(env, cls);
|
jobject info_obj = JENV->AllocObject(env, cls);
|
||||||
|
SIGAR_CHEX;
|
||||||
JAVA_SIGAR_SET_FIELDS_WHO(cls, info_obj,
|
JAVA_SIGAR_SET_FIELDS_WHO(cls, info_obj,
|
||||||
wholist.data[i]);
|
wholist.data[i]);
|
||||||
JENV->SetObjectArrayElement(env, whoarray, i, info_obj);
|
JENV->SetObjectArrayElement(env, whoarray, i, info_obj);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_who_list_destroy(sigar, &wholist);
|
sigar_who_list_destroy(sigar, &wholist);
|
||||||
|
@ -1196,10 +1222,12 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getNetInterfaceList)
|
||||||
}
|
}
|
||||||
|
|
||||||
ifarray = JENV->NewObjectArray(env, iflist.number, stringclass, 0);
|
ifarray = JENV->NewObjectArray(env, iflist.number, stringclass, 0);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
for (i=0; i<iflist.number; i++) {
|
for (i=0; i<iflist.number; i++) {
|
||||||
jstring s = JENV->NewStringUTF(env, iflist.data[i]);
|
jstring s = JENV->NewStringUTF(env, iflist.data[i]);
|
||||||
JENV->SetObjectArrayElement(env, ifarray, i, s);
|
JENV->SetObjectArrayElement(env, ifarray, i, s);
|
||||||
|
SIGAR_CHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
sigar_net_interface_list_destroy(sigar, &iflist);
|
sigar_net_interface_list_destroy(sigar, &iflist);
|
||||||
|
@ -1393,6 +1421,7 @@ JNIEXPORT jlongArray SIGAR_JNI(ptql_SigarProcessQuery_find)
|
||||||
}
|
}
|
||||||
|
|
||||||
procarray = JENV->NewLongArray(env, proclist.number);
|
procarray = JENV->NewLongArray(env, proclist.number);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
if (sizeof(jlong) == sizeof(sigar_pid_t)) {
|
if (sizeof(jlong) == sizeof(sigar_pid_t)) {
|
||||||
pids = (jlong *)proclist.data;
|
pids = (jlong *)proclist.data;
|
||||||
|
@ -1504,7 +1533,7 @@ static int jsigar_getline_completer(char *buffer, int offset, int *pos)
|
||||||
JENV->CallObjectMethod(env, jsigar_completer.obj,
|
JENV->CallObjectMethod(env, jsigar_completer.obj,
|
||||||
jsigar_completer.id, jbuffer);
|
jsigar_completer.id, jbuffer);
|
||||||
|
|
||||||
if (JENV->ExceptionOccurred(env)) {
|
if (JENV->ExceptionCheck(env)) {
|
||||||
JENV->ExceptionDescribe(env);
|
JENV->ExceptionDescribe(env);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1585,7 +1614,7 @@ static void jsigar_log_impl(sigar_t *sigar, void *data,
|
||||||
log_methods[level],
|
log_methods[level],
|
||||||
"(Ljava/lang/Object;)V");
|
"(Ljava/lang/Object;)V");
|
||||||
|
|
||||||
if (JENV->ExceptionOccurred(env)) {
|
if (JENV->ExceptionCheck(env)) {
|
||||||
JENV->ExceptionDescribe(env);
|
JENV->ExceptionDescribe(env);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,9 @@
|
||||||
#define SIGAR_CLASS_SIG(name) \
|
#define SIGAR_CLASS_SIG(name) \
|
||||||
"L" SIGAR_PACKAGE name ";"
|
"L" SIGAR_PACKAGE name ";"
|
||||||
|
|
||||||
|
/* CHeck EXception */
|
||||||
|
#define SIGAR_CHEX if (JENV->ExceptionCheck(env)) return NULL
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
jobject obj;
|
jobject obj;
|
||||||
|
|
|
@ -294,6 +294,7 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = JENV->AllocObject(env, cls);
|
obj = JENV->AllocObject(env, cls);
|
||||||
|
SIGAR_CHEX;
|
||||||
|
|
||||||
id = JENV->GetFieldID(env, cls, "recordNumber", "J");
|
id = JENV->GetFieldID(env, cls, "recordNumber", "J");
|
||||||
JENV->SetLongField(env, obj, id, pevlr->RecordNumber);
|
JENV->SetLongField(env, obj, id, pevlr->RecordNumber);
|
||||||
|
@ -310,9 +311,9 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
|
||||||
id = JENV->GetFieldID(env, cls, "eventType", "S");
|
id = JENV->GetFieldID(env, cls, "eventType", "S");
|
||||||
JENV->SetShortField(env, obj, id, pevlr->EventType);
|
JENV->SetShortField(env, obj, id, pevlr->EventType);
|
||||||
|
|
||||||
if (!JENV->ExceptionOccurred(env)) { /* careful not to clear any existing exception */
|
if (!JENV->ExceptionCheck(env)) { /* careful not to clear any existing exception */
|
||||||
id = JENV->GetFieldID(env, cls, "category", "S");
|
id = JENV->GetFieldID(env, cls, "category", "S");
|
||||||
if (JENV->ExceptionOccurred(env)) {
|
if (JENV->ExceptionCheck(env)) {
|
||||||
/* older version of sigar.jar being used with sigar.dll */
|
/* older version of sigar.jar being used with sigar.dll */
|
||||||
JENV->ExceptionClear(env);
|
JENV->ExceptionClear(env);
|
||||||
}
|
}
|
||||||
|
|
|
@ -269,7 +269,10 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_MetaBase_MetaBaseGetMultiStringValue)
|
||||||
NewObjectArray(count,
|
NewObjectArray(count,
|
||||||
env->FindClass("java/lang/String"),
|
env->FindClass("java/lang/String"),
|
||||||
env->NewString((const jchar *)"", 1));
|
env->NewString((const jchar *)"", 1));
|
||||||
|
if (env->ExceptionCheck()) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// Walk the return instance list, creating an array
|
// Walk the return instance list, creating an array
|
||||||
for (szThisInstance = (TCHAR *)MyRecord.pbMDData, i = 0;
|
for (szThisInstance = (TCHAR *)MyRecord.pbMDData, i = 0;
|
||||||
*szThisInstance != 0;
|
*szThisInstance != 0;
|
||||||
|
@ -278,6 +281,9 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_MetaBase_MetaBaseGetMultiStringValue)
|
||||||
env->SetObjectArrayElement(ret,i,env->NewString(
|
env->SetObjectArrayElement(ret,i,env->NewString(
|
||||||
(const jchar *)(LPCTSTR)szThisInstance,
|
(const jchar *)(LPCTSTR)szThisInstance,
|
||||||
lstrlen(szThisInstance)));
|
lstrlen(szThisInstance)));
|
||||||
|
if (env->ExceptionCheck()) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -319,6 +319,10 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetInstances)
|
||||||
JENV->FindClass(env,
|
JENV->FindClass(env,
|
||||||
"java/lang/String"),
|
"java/lang/String"),
|
||||||
JENV->NewStringUTF(env, ""));
|
JENV->NewStringUTF(env, ""));
|
||||||
|
if (JENV->ExceptionCheck(env)) {
|
||||||
|
free(instance_list_buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Walk the return instance list, creating an array */
|
/* Walk the return instance list, creating an array */
|
||||||
for (cur_object = instance_list_buf, i = 0;
|
for (cur_object = instance_list_buf, i = 0;
|
||||||
|
@ -329,6 +333,10 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetInstances)
|
||||||
jstring s =
|
jstring s =
|
||||||
JENV->NewString(env, (const jchar *)cur_object, len);
|
JENV->NewString(env, (const jchar *)cur_object, len);
|
||||||
JENV->SetObjectArrayElement(env, array, i, s);
|
JENV->SetObjectArrayElement(env, array, i, s);
|
||||||
|
if (JENV->ExceptionCheck(env)) {
|
||||||
|
free(instance_list_buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
cur_object += len + 1;
|
cur_object += len + 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -391,6 +399,10 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetKeys)
|
||||||
JENV->FindClass(env,
|
JENV->FindClass(env,
|
||||||
"java/lang/String"),
|
"java/lang/String"),
|
||||||
JENV->NewStringUTF(env, ""));
|
JENV->NewStringUTF(env, ""));
|
||||||
|
if (JENV->ExceptionCheck(env)) {
|
||||||
|
free(instance_list_buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Walk the return instance list, creating an array */
|
/* Walk the return instance list, creating an array */
|
||||||
for (cur_object = instance_list_buf, i = 0;
|
for (cur_object = instance_list_buf, i = 0;
|
||||||
|
@ -401,6 +413,10 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetKeys)
|
||||||
jstring s =
|
jstring s =
|
||||||
JENV->NewString(env, (const jchar *)cur_object, len);
|
JENV->NewString(env, (const jchar *)cur_object, len);
|
||||||
JENV->SetObjectArrayElement(env, array, i, s);
|
JENV->SetObjectArrayElement(env, array, i, s);
|
||||||
|
if (JENV->ExceptionCheck(env)) {
|
||||||
|
free(instance_list_buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
cur_object += len + 1;
|
cur_object += len + 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -459,6 +475,10 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetObjects)
|
||||||
JENV->FindClass(env,
|
JENV->FindClass(env,
|
||||||
"java/lang/String"),
|
"java/lang/String"),
|
||||||
JENV->NewStringUTF(env, ""));
|
JENV->NewStringUTF(env, ""));
|
||||||
|
if (JENV->ExceptionCheck(env)) {
|
||||||
|
free(list_buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
for (cur_object = list_buf, i = 0;
|
for (cur_object = list_buf, i = 0;
|
||||||
*cur_object != 0;
|
*cur_object != 0;
|
||||||
|
@ -468,6 +488,10 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetObjects)
|
||||||
jstring s =
|
jstring s =
|
||||||
JENV->NewString(env, (const jchar *)cur_object, len);
|
JENV->NewString(env, (const jchar *)cur_object, len);
|
||||||
JENV->SetObjectArrayElement(env, array, i, s);
|
JENV->SetObjectArrayElement(env, array, i, s);
|
||||||
|
if (JENV->ExceptionCheck(env)) {
|
||||||
|
free(list_buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
cur_object += len + 1;
|
cur_object += len + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -331,7 +331,10 @@ JNIEXPORT void SIGAR_JNI(win32_RegistryKey_RegQueryMultiStringValue)
|
||||||
env->NewString((const jchar *)ptr, len);
|
env->NewString((const jchar *)ptr, len);
|
||||||
|
|
||||||
env->CallBooleanMethod(obj, id, jval);
|
env->CallBooleanMethod(obj, id, jval);
|
||||||
|
if (env->ExceptionCheck()) {
|
||||||
|
HeapFree(GetProcessHeap(), 0, value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
ptr += len + 1;
|
ptr += len + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,6 +289,9 @@ static int to_array(JNIEnv *env, LPTSTR str, jobjectArray array)
|
||||||
jstring jstr =
|
jstring jstr =
|
||||||
env->NewString((const jchar *)ptr, slen);
|
env->NewString((const jchar *)ptr, slen);
|
||||||
env->SetObjectArrayElement(array, i, jstr);
|
env->SetObjectArrayElement(array, i, jstr);
|
||||||
|
if (env->ExceptionCheck()) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
offset += slen + 1;
|
offset += slen + 1;
|
||||||
ptr = &str[offset];
|
ptr = &str[offset];
|
||||||
|
@ -333,11 +336,19 @@ JNIEXPORT jboolean SIGAR_JNI(win32_Service_QueryServiceConfig)
|
||||||
int i;
|
int i;
|
||||||
jobjectArray jargv =
|
jobjectArray jargv =
|
||||||
env->NewObjectArray(argc, stringclass, 0);
|
env->NewObjectArray(argc, stringclass, 0);
|
||||||
|
if (env->ExceptionCheck()) {
|
||||||
|
LocalFree(argv);
|
||||||
|
return JNI_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
for (i=0; i<argc; i++) {
|
for (i=0; i<argc; i++) {
|
||||||
jstring jstr =
|
jstring jstr =
|
||||||
env->NewString((const jchar *)argv[i], lstrlen(argv[i]));
|
env->NewString((const jchar *)argv[i], lstrlen(argv[i]));
|
||||||
env->SetObjectArrayElement(jargv, i, jstr);
|
env->SetObjectArrayElement(jargv, i, jstr);
|
||||||
|
if (env->ExceptionCheck()) {
|
||||||
|
LocalFree(argv);
|
||||||
|
return JNI_FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
id = env->GetFieldID(cls, "argv", ASTRING_SIG);
|
id = env->GetFieldID(cls, "argv", ASTRING_SIG);
|
||||||
|
@ -352,11 +363,22 @@ JNIEXPORT jboolean SIGAR_JNI(win32_Service_QueryServiceConfig)
|
||||||
|
|
||||||
if (config->lpDependencies) {
|
if (config->lpDependencies) {
|
||||||
/* first pass just get num for NewObjectArray */
|
/* first pass just get num for NewObjectArray */
|
||||||
|
jobjectArray dependencies;
|
||||||
int num = to_array(env, config->lpDependencies, NULL);
|
int num = to_array(env, config->lpDependencies, NULL);
|
||||||
jobjectArray dependencies =
|
|
||||||
env->NewObjectArray(num, stringclass, 0);
|
if (num < 0) {
|
||||||
|
return JNI_FALSE; /* Exception thrown */
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies = env->NewObjectArray(num, stringclass, 0);
|
||||||
|
if (env->ExceptionCheck()) {
|
||||||
|
return JNI_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
to_array(env, config->lpDependencies, dependencies);
|
to_array(env, config->lpDependencies, dependencies);
|
||||||
|
if (num < 0) {
|
||||||
|
return JNI_FALSE; /* Exception thrown */
|
||||||
|
}
|
||||||
|
|
||||||
id = env->GetFieldID(cls, "dependencies", ASTRING_SIG);
|
id = env->GetFieldID(cls, "dependencies", ASTRING_SIG);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue