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