src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c
Print this page
*** 64,73 ****
--- 64,74 ----
#define lstat64 lstat
#define dirent64 dirent
#define readdir64_r readdir_r
#endif
+ #include "jdk_strerror.h"
#include "jni.h"
#include "jni_util.h"
#include "jlong.h"
#include "sun_nio_fs_UnixNativeDispatcher.h"
*** 313,337 ****
}
JNIEXPORT jbyteArray
Java_sun_nio_fs_UnixNativeDispatcher_strerror(JNIEnv* env, jclass this, jint error)
{
! char* msg;
jsize len;
jbyteArray bytes;
! #ifdef _AIX
! /* strerror() is not thread-safe on AIX so we have to use strerror_r() */
! char buffer[256];
! msg = (strerror_r((int)error, buffer, 256) == 0) ? buffer : "Error while calling strerror_r";
! #else
! msg = strerror((int)error);
! #endif
! len = strlen(msg);
bytes = (*env)->NewByteArray(env, len);
if (bytes != NULL) {
! (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)msg);
}
return bytes;
}
JNIEXPORT jint
--- 314,332 ----
}
JNIEXPORT jbyteArray
Java_sun_nio_fs_UnixNativeDispatcher_strerror(JNIEnv* env, jclass this, jint error)
{
! char buf[1024];
jsize len;
jbyteArray bytes;
! jdk_strerror((int)error, buf, (size_t) 1024);
! len = strlen(buf);
bytes = (*env)->NewByteArray(env, len);
if (bytes != NULL) {
! (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)buf);
}
return bytes;
}
JNIEXPORT jint