Moved Java to C string conversion function to android_jni header file

This commit is contained in:
Tobias Brunner
2012-08-13 11:22:20 +02:00
parent 6db742e7e5
commit 4308ce1cf7
2 changed files with 23 additions and 19 deletions
@@ -81,4 +81,23 @@ static inline bool androidjni_exception_occurred(JNIEnv *env)
return FALSE;
}
/**
* Convert a Java string to a C string. Memory is allocated.
*
* @param env JNIEnv
* @param jstr Java string
* @return native C string (allocated)
*/
static inline char *androidjni_convert_jstring(JNIEnv *env, jstring jstr)
{
char *str;
jsize len;
len = (*env)->GetStringUTFLength(env, jstr);
str = malloc(len + 1);
(*env)->GetStringUTFRegion(env, jstr, 0, len, str);
str[len] = '\0';
return str;
}
#endif /** ANDROID_JNI_H_ @}*/
@@ -438,21 +438,6 @@ JNI_METHOD(CharonVpnService, deinitializeCharon, void)
library_deinit();
}
/**
* Convert a Java string to a C string. Memory is allocated.
*/
static inline char *convert_jstring(JNIEnv *env, jstring jstr)
{
char *str;
jsize len;
len = (*env)->GetStringUTFLength(env, jstr);
str = malloc(len + 1);
(*env)->GetStringUTFRegion(env, jstr, 0, len, str);
str[len] = '\0';
return str;
}
/**
* Initiate SA
*/
@@ -462,10 +447,10 @@ JNI_METHOD(CharonVpnService, initiate, void,
{
char *local_address, *gateway, *username, *password;
local_address = convert_jstring(env, jlocal_address);
gateway = convert_jstring(env, jgateway);
username = convert_jstring(env, jusername);
password = convert_jstring(env, jpassword);
local_address = androidjni_convert_jstring(env, jlocal_address);
gateway = androidjni_convert_jstring(env, jgateway);
username = androidjni_convert_jstring(env, jusername);
password = androidjni_convert_jstring(env, jpassword);
initiate(local_address, gateway, username, password);
}