summaryrefslogtreecommitdiff
path: root/libjava/java/lang/System.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/System.java')
-rw-r--r--libjava/java/lang/System.java166
1 files changed, 166 insertions, 0 deletions
diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java
new file mode 100644
index 00000000000..6f6dee42057
--- /dev/null
+++ b/libjava/java/lang/System.java
@@ -0,0 +1,166 @@
+// System.java - System-specific info.
+
+/* Copyright (C) 1998, 1999 Cygnus Solutions
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.lang;
+
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilterInputStream;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.util.Properties;
+
+/**
+ * @author Tom Tromey <tromey@cygnus.com>
+ * @date August 27, 1998
+ */
+
+/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
+ * "The Java Language Specification", ISBN 0-201-63451-1
+ * plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
+ * Status: 1.1. Some 1.2 methods missing. Properties code not fully
+ * implemented.
+ */
+
+public final class System
+{
+ public static native void arraycopy (Object src, int srcOffset,
+ Object dst, int dstOffset,
+ int count);
+
+ public static native long currentTimeMillis ();
+
+ public static void exit (int status)
+ {
+ Runtime.getRuntime().exit(status);
+ }
+
+ public static void gc ()
+ {
+ Runtime.getRuntime().gc();
+ }
+
+ // Marked deprecated in 1.1. We implement what the JCL book says.
+ public static String getenv (String name)
+ {
+ throw new Error ();
+ }
+
+ private static native void init_properties ();
+
+ public static Properties getProperties ()
+ {
+ if (secman != null)
+ secman.checkPropertiesAccess();
+ init_properties ();
+ return properties;
+ }
+
+ public static String getProperty (String property)
+ {
+ if (secman != null)
+ secman.checkPropertyAccess(property);
+ init_properties ();
+ return properties.getProperty(property);
+ }
+
+ public static String getProperty (String property, String defval)
+ {
+ if (secman != null)
+ secman.checkPropertyAccess(property, defval);
+ init_properties ();
+ return properties.getProperty(property, defval);
+ }
+
+ public static SecurityManager getSecurityManager ()
+ {
+ return secman;
+ }
+
+ public static native int identityHashCode (Object obj);
+
+ public static void load (String pathname)
+ {
+ Runtime.getRuntime().load(pathname);
+ }
+
+ public static void loadLibrary (String libname)
+ {
+ Runtime.getRuntime().loadLibrary(libname);
+ }
+
+ public static void runFinalization ()
+ {
+ Runtime.getRuntime().runFinalization();
+ }
+
+ // Marked as deprecated in 1.2.
+ public static void runFinalizersOnExit (boolean run)
+ {
+ Runtime.getRuntime().runFinalizersOnExit(run);
+ }
+
+ private static void checkSetIO ()
+ {
+ // In 1.1, we are supposed to call checkExec, but the argument is
+ // not specified. In 1.2, we are supposed to use checkPermission,
+ // which doesn't exist in 1.1.
+ if (secman != null)
+ secman.checkExec("");
+ }
+
+ public static native void setErr (PrintStream newErr);
+ public static native void setIn (InputStream newIn);
+ public static native void setOut (PrintStream newOut);
+
+ public static void setProperties (Properties props)
+ {
+ if (secman != null)
+ secman.checkPropertiesAccess();
+ // We might not have initialized yet.
+ prop_init = true;
+ properties = props;
+ }
+
+ // TODO 1.2.
+ // public static String setProperty (String key, String value);
+
+ // TODO 1.2.
+ // public static String mapLibraryName (String libname);
+
+ public static void setSecurityManager (SecurityManager s)
+ {
+ if (secman != null)
+ throw new SecurityException ();
+ secman = s;
+ }
+
+ // Public data.
+ public static final InputStream in = new BufferedInputStream (new FileInputStream (FileDescriptor.in));
+
+ public static final PrintStream out = new PrintStream (new BufferedOutputStream (new FileOutputStream (FileDescriptor.out)), true);
+
+ public static final PrintStream err = new PrintStream (new BufferedOutputStream (new FileOutputStream (FileDescriptor.err)), true);
+
+ // Don't allow System objects to be made.
+ private System ()
+ {
+ }
+
+ // Private data.
+ private static SecurityManager secman = null;
+ private static Properties properties = null;
+ // This boolean is only required for 1.1 and earlier. After 1.1, a
+ // null properties should always be re-initialized.
+ private static boolean prop_init = false;
+}