Lines 30-36
Link Here
|
30 |
*/ |
30 |
*/ |
31 |
jbyte* getByteArray(JNIEnv *env, jbyteArray target) |
31 |
jbyte* getByteArray(JNIEnv *env, jbyteArray target) |
32 |
{ |
32 |
{ |
33 |
jsize len; |
33 |
unsigned int len; |
34 |
jbyte *temp, *result; |
34 |
jbyte *temp, *result; |
35 |
|
35 |
|
36 |
temp = (*env)->GetByteArrayElements(env, target, 0); |
36 |
temp = (*env)->GetByteArrayElements(env, target, 0); |
Lines 158-170
Link Here
|
158 |
/* |
158 |
/* |
159 |
* Class: org_eclipse_core_internal_filesystem_local_unix_UnixFileNatives |
159 |
* Class: org_eclipse_core_internal_filesystem_local_unix_UnixFileNatives |
160 |
* Method: readlink |
160 |
* Method: readlink |
161 |
* Signature: ([B[BJ)J |
161 |
* Signature: ([B[BJ)I |
162 |
*/ |
162 |
*/ |
163 |
JNIEXPORT jlong JNICALL Java_org_eclipse_core_internal_filesystem_local_unix_UnixFileNatives_readlink |
163 |
JNIEXPORT jint JNICALL Java_org_eclipse_core_internal_filesystem_local_unix_UnixFileNatives_readlink |
164 |
(JNIEnv *env, jclass clazz, jbyteArray path, jbyteArray buf, jlong bufsiz) { |
164 |
(JNIEnv *env, jclass clazz, jbyteArray path, jbyteArray buf, jlong bufsiz) { |
165 |
jint code; |
165 |
jint code; |
166 |
char *name; |
166 |
jbyte *name; |
167 |
ssize_t len; |
167 |
int len; |
168 |
char temp[PATH_MAX+1]; |
168 |
char temp[PATH_MAX+1]; |
169 |
jstring linkTarget = NULL; |
169 |
jstring linkTarget = NULL; |
170 |
|
170 |
|
Lines 173-183
Link Here
|
173 |
free(name); |
173 |
free(name); |
174 |
if (len > 0) { |
174 |
if (len > 0) { |
175 |
temp[len] = 0; |
175 |
temp[len] = 0; |
176 |
(*env)->SetByteArrayRegion(env, buf, 0, len, temp); |
176 |
(*env)->SetByteArrayRegion(env, buf, 0, len, (jbyte*) temp); |
177 |
} |
177 |
} |
178 |
else { |
178 |
else { |
179 |
temp[0] = 0; |
179 |
temp[0] = 0; |
180 |
(*env)->SetByteArrayRegion(env, buf, 0, 0, temp); |
180 |
(*env)->SetByteArrayRegion(env, buf, 0, 0, (jbyte*) temp); |
181 |
} |
181 |
} |
182 |
return len; |
182 |
return len; |
183 |
} |
183 |
} |
Lines 254-260
Link Here
|
254 |
char *flag; |
254 |
char *flag; |
255 |
jint ret = -1; |
255 |
jint ret = -1; |
256 |
|
256 |
|
257 |
flag = getByteArray(env, buf); |
257 |
flag = (char*) getByteArray(env, buf); |
258 |
if (strcmp(flag, "PATH_MAX") == 0) |
258 |
if (strcmp(flag, "PATH_MAX") == 0) |
259 |
ret = PATH_MAX; |
259 |
ret = PATH_MAX; |
260 |
else if (strcmp(flag, "S_IFMT") == 0) |
260 |
else if (strcmp(flag, "S_IFMT") == 0) |