aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natSystem.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/natSystem.cc')
-rw-r--r--libjava/java/lang/natSystem.cc31
1 files changed, 25 insertions, 6 deletions
diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc
index 742696e..7e2de31 100644
--- a/libjava/java/lang/natSystem.cc
+++ b/libjava/java/lang/natSystem.cc
@@ -34,6 +34,10 @@ details. */
#endif
#include <errno.h>
+#ifdef HAVE_UNAME
+#include <sys/utsname.h>
+#endif
+
#include <cni.h>
#include <jvm.h>
#include <java/lang/System.h>
@@ -220,7 +224,7 @@ java::lang::System::identityHashCode (jobject obj)
#ifndef DEFAULT_FILE_ENCODING
#define DEFAULT_FILE_ENCODING "8859_1"
#endif
-char *default_file_encoding = DEFAULT_FILE_ENCODING;
+static char *default_file_encoding = DEFAULT_FILE_ENCODING;
void
java::lang::System::init_properties (void)
@@ -237,16 +241,15 @@ java::lang::System::init_properties (void)
// A convenience define.
#define SET(Prop,Val) \
properties->put(JvNewStringLatin1 (Prop), JvNewStringLatin1 (Val))
- SET ("java.version", "FIXME");
+ SET ("java.version", VERSION);
SET ("java.vendor", "Cygnus Solutions");
SET ("java.vendor.url", "http://www.cygnus.com/");
+ SET ("java.class.version", GCJVERSION);
+ // FIXME: how to set these given location-independence?
// SET ("java.home", "FIXME");
- // SET ("java.class.version", "FIXME");
// SET ("java.class.path", "FIXME");
- SET ("os.name", "FIXME");
- SET ("os.arch", "FIXME");
- SET ("os.version", "FIXME");
SET ("file.encoding", default_file_encoding);
+
#ifdef WIN32
SET ("file.separator", "\\");
SET ("path.separator", ";");
@@ -258,6 +261,22 @@ java::lang::System::init_properties (void)
SET ("line.separator", "\n");
#endif
+#ifdef HAVE_UNAME
+ struct utsname u;
+ if (! uname (&u))
+ {
+ SET ("os.name", u.sysname);
+ SET ("os.arch", u.machine);
+ SET ("os.version", u.release);
+ }
+ else
+ {
+ SET ("os.name", "unknown");
+ SET ("os.arch", "unknown");
+ SET ("os.version", "unknown");
+ }
+#endif /* HAVE_UNAME */
+
#ifdef HAVE_PWD_H
uid_t user_id = getuid ();
struct passwd *pwd_entry;