From df94fa14b99a0911478d84280f95aa35482172e9 Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Mon, 14 Jun 2004 14:34:21 +0000 Subject: System.java: (getenv0): New method. 2004-06-14 Andrew Haley * java/lang/System.java: (getenv0): New method. (getenv): Add security check. Do the right thing. * java/lang/natSystem.cc (getenv0): New method. From-SVN: r83107 --- libjava/ChangeLog | 6 ++++++ libjava/java/lang/System.java | 25 ++++++++++++++++++------- libjava/java/lang/natSystem.cc | 13 +++++++++++++ 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index ba8a32d..8121d80 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2004-06-14 Andrew Haley + + * java/lang/System.java: (getenv0): New method. + (getenv): Add security check. Do the right thing. + * java/lang/natSystem.cc (getenv0): New method. + 2004-06-12 Mark Wielaard * javax/swing/RepaintManager.java diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java index 1d9805b..d752987 100644 --- a/libjava/java/lang/System.java +++ b/libjava/java/lang/System.java @@ -454,18 +454,22 @@ public final class System } /** - * This used to get an environment variable, but following Sun's lead, - * it now throws an Error. Use getProperty instead. + * Gets the value of an environment variable. * * @param name the name of the environment variable - * @return this does not return - * @throws Error this is not supported - * @deprecated use {@link #getProperty(String)}; getenv is not supported + * @return the string value of the variable + * @throws NullPointerException + * @throws SecurityException if permission is denied + * @since 1.5 */ public static String getenv(String name) { - throw new Error("getenv no longer supported, use properties instead: " - + name); + if (name == null) + throw new NullPointerException(); + SecurityManager sm = Runtime.securityManager; // Be thread-safe. + if (sm != null) + sm.checkPermission(new RuntimePermission("getenv."+name)); + return getenv0(name); } /** @@ -602,4 +606,11 @@ public final class System * @see #setErr(PrintStream) */ private static native void setErr0(PrintStream err); + + /** + * Gets the value of an environment variable. + * + * @see #getenv(String) + */ + static native String getenv0(String name); } // class System diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc index 4a08bb1..ffb26a3 100644 --- a/libjava/java/lang/natSystem.cc +++ b/libjava/java/lang/natSystem.cc @@ -142,3 +142,16 @@ java::lang::System::isWordsBigEndian (void) u.lval = 1; return u.cval == 0; } + +jstring +java::lang::System::getenv0 (jstring name) +{ + jint len = _Jv_GetStringUTFLength (name); + char buf[len + 1]; + jsize total = JvGetStringUTFRegion (name, 0, name->length(), buf); + buf[total] = '\0'; + const char *value = ::getenv (buf); + if (value == NULL) + return NULL; + return JvNewStringLatin1 (value); +} -- cgit v1.1