Include errno name in error messages, if the errno is known.

This commit is contained in:
Adam Murdoch
2013-02-16 11:14:41 +11:00
parent 0c5d0dfe80
commit 01c4f26e97
7 changed files with 26 additions and 13 deletions

View File

@@ -21,14 +21,15 @@
#include "generic.h"
void mark_failed_with_message(JNIEnv *env, const char* message, jobject result) {
mark_failed_with_code(env, message, 0, result);
mark_failed_with_code(env, message, 0, NULL, result);
}
void mark_failed_with_code(JNIEnv *env, const char* message, int error_code, jobject result) {
void mark_failed_with_code(JNIEnv *env, const char* message, int error_code, const char* error_code_message, jobject result) {
jclass destClass = env->GetObjectClass(result);
jmethodID method = env->GetMethodID(destClass, "failed", "(Ljava/lang/String;I)V");
jmethodID method = env->GetMethodID(destClass, "failed", "(Ljava/lang/String;ILjava/lang/String;)V");
jstring message_str = env->NewStringUTF(message);
env->CallVoidMethod(result, method, message_str, error_code);
jstring error_code_str = error_code_message == NULL ? NULL : env->NewStringUTF(error_code_message);
env->CallVoidMethod(result, method, message_str, error_code, error_code_str);
}
JNIEXPORT jint JNICALL

View File

@@ -29,7 +29,14 @@
#include <string.h>
void mark_failed_with_errno(JNIEnv *env, const char* message, jobject result) {
mark_failed_with_code(env, message, errno, result);
const char * errno_message = NULL;
switch(errno) {
case ENOENT:
errno_message = "ENOENT";
break;
}
mark_failed_with_code(env, message, errno, errno_message, result);
}
char* java_to_char(JNIEnv *env, jstring string, jobject result) {

View File

@@ -25,7 +25,7 @@
* Marks the given result as failed, using the current value of GetLastError()
*/
void mark_failed_with_errno(JNIEnv *env, const char* message, jobject result) {
mark_failed_with_code(env, message, GetLastError(), result);
mark_failed_with_code(env, message, GetLastError(), NULL, result);
}
jstring wchar_to_java(JNIEnv* env, const wchar_t* chars, size_t len, jobject result) {