107 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
108 |
Java_java_io_FileDescriptor_nativeInit(JNIEnv *env, jclass clazz) |
Java_java_io_FileDescriptor_nativeInit(JNIEnv *env, jclass clazz) |
109 |
{ |
{ |
110 |
jmethodID init_method; |
jfieldID field, filedes_field; |
|
jfieldID field; |
|
111 |
jobject filedes; |
jobject filedes; |
112 |
|
|
113 |
init_method = (*env)->GetStaticMethodID (env, clazz, "<init>", "(J)V"); |
filedes_field = (*env)->GetFieldID(env, clazz, "nativeFd", "J"); |
114 |
if (! init_method) |
if (! filedes_field) |
115 |
return; |
return; |
116 |
|
|
117 |
#define INIT_FIELD(FIELDNAME, FDVALUE) \ |
#define INIT_FIELD(FIELDNAME, FDVALUE) \ |
119 |
"Ljava/io/FileDescriptor;"); \ |
"Ljava/io/FileDescriptor;"); \ |
120 |
if (! field) \ |
if (! field) \ |
121 |
return; \ |
return; \ |
122 |
filedes = (*env)->NewObject (env, clazz, init_method, (jlong) FDVALUE); \ |
filedes = (*env)->GetStaticObjectField (env, clazz, field); \ |
123 |
if (! filedes) \ |
if (! filedes) \ |
124 |
return; \ |
return; \ |
125 |
(*env)->SetStaticObjectField (env, clazz, field, filedes); \ |
(*env)->SetLongField (env, filedes, filedes_field, (jlong) FDVALUE); \ |
126 |
if ((*env)->ExceptionCheck (env)) \ |
if ((*env)->ExceptionOccurred (env)) \ |
127 |
return; |
return; |
128 |
|
|
129 |
INIT_FIELD ("in", 0); |
INIT_FIELD ("in", 0); |