blob: 861781ca4a73a6d3401f264d068b9e43475c54f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#include "xmlvm.h"
#include "java_lang_System.h"
//XMLVM_BEGIN_NATIVE_IMPLEMENTATION
#include <locale.h>
#include <sys/time.h>
#include "java_lang_String.h"
//From HARMONY/classlib/modules/luni/src/main/native/luni/shared/luniglob.c
#define CHARSETBUFF 64
//From HARMONY/classlib/modules/luni/src/main/native/luni/unix/helpers.c
void getOSCharset(char *locale, const size_t size) {
char * codec = NULL;
size_t cur = 0;
short flag = 0;
setlocale(LC_CTYPE, "");
codec = setlocale(LC_CTYPE, NULL);
// get codeset from language[_territory][.codeset][@modifier]
while (*codec) {
if (!flag) {
if (*codec != '.') {
codec++;
continue;
} else {
flag = 1;
codec++;
}
} else {
if (*codec == '@') {
break;
} else {
locale[cur++] = (*codec);
codec++;
if (cur >= size) {
// Not enough size
cur = 0;
break;
}
}
}
}
locale[cur] = '\0';
if (!strlen(locale)) {
strcpy(locale, "8859_1");
}
return;
}
//XMLVM_END_NATIVE_IMPLEMENTATION
void java_lang_System_initNativeLayer__()
{
//XMLVM_BEGIN_NATIVE[java_lang_System_initNativeLayer__]
// Nothing to be done
//XMLVM_END_NATIVE
}
JAVA_LONG java_lang_System_currentTimeMillis__()
{
//XMLVM_BEGIN_NATIVE[java_lang_System_currentTimeMillis__]
struct timeval now;
gettimeofday(&now, NULL);
JAVA_LONG msec = ((JAVA_LONG) now.tv_sec) * 1000;
msec += now.tv_usec / 1000;
return msec;
//XMLVM_END_NATIVE
}
JAVA_LONG java_lang_System_nanoTime__()
{
//XMLVM_BEGIN_NATIVE[java_lang_System_nanoTime__]
//TODO implement
return java_lang_System_nanoTime__() * 1000000L;
//XMLVM_END_NATIVE
}
void java_lang_System_nativeExit___int(JAVA_INT n1)
{
//XMLVM_BEGIN_NATIVE[java_lang_System_nativeExit___int]
exit(n1);
//XMLVM_END_NATIVE
}
JAVA_OBJECT java_lang_System_getPropertyList__()
{
//XMLVM_BEGIN_NATIVE[java_lang_System_getPropertyList__]
return XMLVMArray_createSingleDimension(__CLASS_java_lang_String, 0);
//XMLVM_END_NATIVE
}
JAVA_OBJECT java_lang_System_getEncoding___int(JAVA_INT n1)
{
//XMLVM_BEGIN_NATIVE[java_lang_System_getEncoding___int]
//Get charset from the OS
#ifdef EMSCRIPTEN
return xmlvm_create_java_string("UTF-8");
#else
char charset[CHARSETBUFF];
getOSCharset(charset, CHARSETBUFF);
return xmlvm_create_java_string(charset);
#endif
//XMLVM_END_NATIVE
}
JAVA_INT java_lang_System_identityHashCode___java_lang_Object(JAVA_OBJECT n1)
{
//XMLVM_BEGIN_NATIVE[java_lang_System_identityHashCode___java_lang_Object]
return (JAVA_INT) n1;
//XMLVM_END_NATIVE
}
|