InputStreamReader.java (read): If length is 0, return 0.

* java/io/InputStreamReader.java (read): If length is 0, return
	0.  Reset `wpos' and `wcount' when buffer has been filled and
	emptied.
	* java/util/Properties.java (save): Removed `FIXME' comment.
	(load): Invalid characters in \u now treated as terminators.
	Make sure to append character resulting from `\' handling.
	Cast to `char' when appending to key or value.
	(skip_ws): Inverted test for whitespace.

From-SVN: r26862
This commit is contained in:
Tom Tromey 1999-05-10 12:33:07 +00:00 committed by Tom Tromey
parent 05e0b2f47c
commit 9733e4ee31
3 changed files with 31 additions and 10 deletions

View File

@ -1,5 +1,15 @@
1999-05-10 Tom Tromey <tromey@cygnus.com> 1999-05-10 Tom Tromey <tromey@cygnus.com>
* java/io/InputStreamReader.java (read): If length is 0, return
0. Reset `wpos' and `wcount' when buffer has been filled and
emptied.
* java/util/Properties.java (save): Removed `FIXME' comment.
(load): Invalid characters in \u now treated as terminators.
Make sure to append character resulting from `\' handling.
Cast to `char' when appending to key or value.
(skip_ws): Inverted test for whitespace.
* java/io/RandomAccessFile.java (RandomAccessFile): Removed * java/io/RandomAccessFile.java (RandomAccessFile): Removed
`FIXME' comment. `FIXME' comment.
(readLine): Likewise. (readLine): Likewise.

View File

@ -111,6 +111,8 @@ public class InputStreamReader extends Reader
} }
else else
{ {
if (length == 0)
return 0;
for (;;) for (;;)
{ {
in.mark(1); in.mark(1);
@ -141,6 +143,11 @@ public class InputStreamReader extends Reader
wpos = 0; wpos = 0;
wcount = 0; wcount = 0;
} }
else if (wavail == 0)
{
wpos = 0;
wcount = 0;
}
int count = read(work, wpos, work.length-wpos); int count = read(work, wpos, work.length-wpos);
if (count <= 0) if (count <= 0)
return -1; return -1;

View File

@ -103,7 +103,7 @@ public class Properties extends Hashtable
// FIXME: we use our own definition of whitespace. // FIXME: we use our own definition of whitespace.
// Character.isWhitespace includes newlines, which we don't // Character.isWhitespace includes newlines, which we don't
// want. Character.isSpaceChar doesn't include \t. // want. Character.isSpaceChar doesn't include \t.
if (c == ' ' || c == '\t') if (c != ' ' && c != '\t')
{ {
reader.unread(c); reader.unread(c);
return true; return true;
@ -166,12 +166,12 @@ public class Properties extends Hashtable
reader.unread(c); reader.unread(c);
break; break;
} }
// FIXME: again, our own definitino of whitespace. // FIXME: again, our own definition of whitespace.
if (c == ' ' || c == '\t' || c == ':' || c == '=') if (c == ' ' || c == '\t' || c == ':' || c == '=')
break; break;
first_char = false; first_char = false;
key.append(c); key.append((char) c);
} }
// Found end of key. Skip whitespace. If the terminator // Found end of key. Skip whitespace. If the terminator
@ -226,10 +226,14 @@ public class Properties extends Hashtable
if (x == -1) if (x == -1)
return; return;
int d = Character.digit((char) x, 16); int d = Character.digit((char) x, 16);
// FIXME: what to do here? We call it an // We follow JDK here: invalid characters
// error. // are treated as terminators.
if (d == -1) if (d == -1)
throw new IOException (); {
value.append((char) c);
c = x;
break;
}
c <<= 4; c <<= 4;
c |= d; c |= d;
} }
@ -238,8 +242,7 @@ public class Properties extends Hashtable
// Nothing. // Nothing.
} }
} }
else value.append((char) c);
value.append(c);
} }
put (key.toString(), value.toString()); put (key.toString(), value.toString());
@ -290,7 +293,8 @@ public class Properties extends Hashtable
{ {
if (comment != null) if (comment != null)
{ {
// FIXME: what if COMMENT contains newlines? // We just lose if COMMENT contains a newline. This is
// what JDK 1.1 does.
output.write("#"); output.write("#");
output.write(comment); output.write(comment);
output.write(newline); output.write(newline);
@ -309,7 +313,7 @@ public class Properties extends Hashtable
// characters. But it also doesn't say we should encode // characters. But it also doesn't say we should encode
// it in any way. // it in any way.
// FIXME: if key contains ':', '=', or whitespace, must // FIXME: if key contains ':', '=', or whitespace, must
// quote it here. // quote it here. Note that JDK 1.1 does not do this.
output.write(key); output.write(key);
output.write("="); output.write("=");