From: Tom Tromey Date: Tue, 8 Feb 2000 21:30:45 +0000 (+0000) Subject: Properties.java (setProperty): New method. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bad196d78e98ea145d8a3283eef081d56117a585;p=gcc.git Properties.java (setProperty): New method. * java/util/Properties.java (setProperty): New method. (store): New method. From-SVN: r31855 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 7f4d8bfca75..e19e4ef3883 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2000-02-08 Tom Tromey + + * java/util/Properties.java (setProperty): New method. + (store): New method. + 2000-02-07 Tom Tromey * java/lang/Runtime.java (_load): Declare. diff --git a/libjava/java/util/Properties.java b/libjava/java/util/Properties.java index 47d71024d3e..aa638b3875e 100644 --- a/libjava/java/util/Properties.java +++ b/libjava/java/util/Properties.java @@ -1,6 +1,6 @@ // Properties - Property list representation. -/* Copyright (C) 1998, 1999 Red Hat, Inc. +/* Copyright (C) 1998, 1999, 2000 Red Hat, Inc. This file is part of libgcj. @@ -26,7 +26,7 @@ import java.io.PushbackReader; */ /* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 - * Status: Complete to JDK 1.1. + * Status: Complete to JDK 1.2. */ public class Properties extends Hashtable @@ -51,6 +51,11 @@ public class Properties extends Hashtable return r; } + public Object setProperty (String key, String value) + { + return put (key, value); + } + public void list (PrintStream out) { Enumeration e = propertyNames (); @@ -282,99 +287,105 @@ public class Properties extends Hashtable } public synchronized void save (OutputStream out, String comment) - { + { + try + { + store (out, comment); + } + catch (IOException _) + { + } + } + + public synchronized void store (OutputStream out, String comment) + throws IOException + { // Use a buffer because writing a single string through // OutputStreamWriter is fairly expensive. BufferedWriter output = new BufferedWriter (new OutputStreamWriter (out)); String newline = System.getProperty("line.separator"); - try + if (comment != null) { - if (comment != null) - { - // We just lose if COMMENT contains a newline. This is - // what JDK 1.1 does. - output.write("#"); - output.write(comment); - output.write(newline); - } - output.write("# "); - output.write(new Date().toString()); + // We just lose if COMMENT contains a newline. This is + // what JDK 1.1 does. + output.write("#"); + output.write(comment); output.write(newline); + } + output.write("# "); + output.write(new Date().toString()); + output.write(newline); - Enumeration keys = keys (); - while (keys.hasMoreElements()) + Enumeration keys = keys (); + while (keys.hasMoreElements()) + { + String key = (String) keys.nextElement(); + String value = (String) get (key); + + // FIXME: JCL says that the key can contain many Unicode + // characters. But it also doesn't say we should encode + // it in any way. + // FIXME: if key contains ':', '=', or whitespace, must + // quote it here. Note that JDK 1.1 does not do this. + output.write(key); + output.write("="); + + boolean leading = true; + for (int i = 0; i < value.length(); ++i) { - String key = (String) keys.nextElement(); - String value = (String) get (key); - - // FIXME: JCL says that the key can contain many Unicode - // characters. But it also doesn't say we should encode - // it in any way. - // FIXME: if key contains ':', '=', or whitespace, must - // quote it here. Note that JDK 1.1 does not do this. - output.write(key); - output.write("="); - - boolean leading = true; - for (int i = 0; i < value.length(); ++i) + boolean new_lead = false; + char c = value.charAt(i); + switch (c) { - boolean new_lead = false; - char c = value.charAt(i); - switch (c) - { - case '\n': - output.write("\\n"); - break; - case '\r': - output.write("\\r"); - break; - case '\t': - output.write("\\t"); - break; - case '\\': - output.write("\\\\"); - break; + case '\n': + output.write("\\n"); + break; + case '\r': + output.write("\\r"); + break; + case '\t': + output.write("\\t"); + break; + case '\\': + output.write("\\\\"); + break; - case '#': - case '!': - case '=': - case ':': - output.write("\\"); - output.write(c); - break; + case '#': + case '!': + case '=': + case ':': + output.write("\\"); + output.write(c); + break; - case ' ': - new_lead = leading; - if (leading) - output.write("\\"); - output.write(c); - break; + case ' ': + new_lead = leading; + if (leading) + output.write("\\"); + output.write(c); + break; - default: - if (c < '\u0020' || c > '\u007e') - { - output.write("\\u"); - output.write(Character.forDigit(c >>> 12, 16)); - output.write(Character.forDigit((c >>> 8) & 0xff, - 16)); - output.write(Character.forDigit((c >>> 4) & 0xff, - 16)); - output.write(Character.forDigit(c & 0xff, 16)); - } - else - output.write(c); + default: + if (c < '\u0020' || c > '\u007e') + { + output.write("\\u"); + output.write(Character.forDigit(c >>> 12, 16)); + output.write(Character.forDigit((c >>> 8) & 0xff, + 16)); + output.write(Character.forDigit((c >>> 4) & 0xff, + 16)); + output.write(Character.forDigit(c & 0xff, 16)); } - leading = new_lead; + else + output.write(c); } - output.write(newline); + leading = new_lead; } - - output.flush(); - } - catch (IOException ignore) - { + output.write(newline); } - } + + output.flush(); + } }