X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fproperties.cpp;h=c1029c660d602f7c5c399b0c9bbbbeb4177f5949;hb=bfcfa2e191ac88ffae3b62a33464c30df608f3ff;hp=f5b66db4d3b487236a19f6461e24ebd148877eba;hpb=3a16b0602c73972b42f6db5280092e57e38b4287;p=cacao.git diff --git a/src/vm/properties.cpp b/src/vm/properties.cpp index f5b66db4d..c1029c660 100644 --- a/src/vm/properties.cpp +++ b/src/vm/properties.cpp @@ -1,6 +1,6 @@ /* src/vm/properties.cpp - handling commandline properties - Copyright (C) 1996-2005, 2006, 2007, 2008 + Copyright (C) 1996-2010 CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO This file is part of CACAO. @@ -32,14 +32,11 @@ #include #include #include -#include -#include "mm/memory.h" +#include "mm/memory.hpp" #include "native/llni.h" -#include "toolbox/util.h" - #include "vm/class.hpp" #include "vm/global.h" #include "vm/method.hpp" @@ -51,6 +48,9 @@ #include "vm/jit/asmpart.h" +#ifdef HAVE_LOCALE_H +#include +#endif /** * Constructor fills the properties list with default values. @@ -317,7 +317,7 @@ Properties::Properties() put("java.vm.specification.version", "1.0"); put("java.vm.specification.vendor", "Sun Microsystems Inc."); put("java.vm.specification.name", "Java Virtual Machine Specification"); - put("java.vm.version", VERSION); + put("java.vm.version", VERSION_FULL); put("java.vm.vendor", "CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO"); put("java.vm.name", "CACAO"); @@ -335,11 +335,19 @@ Properties::Properties() put("java.vm.info", "compiled mode"); } + // Get and set java.library.path. + const char* java_library_path = os::getenv("LD_LIBRARY_PATH"); + + if (java_library_path == NULL) + java_library_path = ""; + + put("java.library.path", java_library_path); + # if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH) /* Get properties from system. */ - char* cwd = _Jv_getcwd(); + char* cwd = os::getcwd(); char* env_user = os::getenv("USER"); char* env_home = os::getenv("HOME"); @@ -349,7 +357,7 @@ Properties::Properties() uname(utsnamebuf); - put("java.runtime.version", VERSION); + put("java.runtime.version", VERSION_FULL); put("java.runtime.name", "CACAO"); put("java.specification.version", "1.5"); @@ -364,14 +372,6 @@ Properties::Properties() put("gnu.classpath.boot.library.path", boot_library_path); - // Get and set java.library.path. - const char* java_library_path = os::getenv("LD_LIBRARY_PATH"); - - if (java_library_path == NULL) - java_library_path = ""; - - put("java.library.path", java_library_path); - put("java.io.tmpdir", "/tmp"); # if defined(ENABLE_INTRP) @@ -436,28 +436,33 @@ Properties::Properties() /* get locale */ + bool use_en_US = true; if (env_lang != NULL) { - /* get the local stuff from the environment */ - - if (strlen(env_lang) <= 2) { - put("user.language", env_lang); - } - else { - if ((env_lang[2] == '_') && (strlen(env_lang) >= 5)) { +#if defined(HAVE_SETLOCALE) && defined(HAVE_LC_MESSAGES) + /* get the locale stuff from the environment */ + char *locale; + + if ((locale = setlocale(LC_MESSAGES, ""))) { + int len = strlen(locale); + if (((len >= 5) && (locale[2] == '_')) || len == 2) { + use_en_US = false; char* lang = MNEW(char, 3); - strncpy(lang, (char*) &env_lang[0], 2); + strncpy(lang, (char*) &locale[0], 2); lang[2] = '\0'; + put("user.language", lang); - char* country = MNEW(char, 3); - strncpy(country, (char*) &env_lang[3], 2); - country[2] = '\0'; + if (len >= 5) { + char* country = MNEW(char, 3); + strncpy(country, (char*) &locale[3], 2); + country[2] = '\0'; - put("user.language", lang); - put("user.country", country); + put("user.country", country); + } } } +#endif } - else { + if (use_en_US) { /* if no default locale was specified, use `en_US' */ put("user.language", "en");