[multiple changes]
1999-07-01 Warren Levy <warrenl@cygnus.com> * gnu/gcj/convert/BytesToUnicode.java (read): Changed outlength to count and revised comments to match. * gnu/gcj/convert/Input_EUCJIS.java (read): Same as Input_8859_1.java. * gnu/gcj/convert/Input_JavaSrc.java (read): ditto. * gnu/gcj/convert/Input_SJIS.java (read): ditto. * gnu/gcj/convert/Input_UTF8.java (read): ditto. * gnu/gcj/convert/natInput_EUCJIS.cc (read): ditto. * gnu/gcj/convert/natInput_SJIS.cc (read): ditto. 1999-07-01 John-Marc Chandonia <jmc@cmpharm.ucsf.edu> * gnu/gcj/convert/Input_8859_1.java (read): Use 3rd parameter properly as count rather than outlength. * java/io/BufferedOutputStream.java (write(byte[],int,int): Flush output on overflow rather than buffer fill. * java/io/BufferedReader.java (fill): Don't clear out the buffer if markPos is 0 and there is still room in the buffer. From-SVN: r27892
This commit is contained in:
parent
b537d12084
commit
cb1902adbf
11 changed files with 47 additions and 22 deletions
|
@ -1,3 +1,23 @@
|
|||
1999-07-01 Warren Levy <warrenl@cygnus.com>
|
||||
|
||||
* gnu/gcj/convert/BytesToUnicode.java (read): Changed outlength
|
||||
to count and revised comments to match.
|
||||
* gnu/gcj/convert/Input_EUCJIS.java (read): Same as Input_8859_1.java.
|
||||
* gnu/gcj/convert/Input_JavaSrc.java (read): ditto.
|
||||
* gnu/gcj/convert/Input_SJIS.java (read): ditto.
|
||||
* gnu/gcj/convert/Input_UTF8.java (read): ditto.
|
||||
* gnu/gcj/convert/natInput_EUCJIS.cc (read): ditto.
|
||||
* gnu/gcj/convert/natInput_SJIS.cc (read): ditto.
|
||||
|
||||
1999-07-01 John-Marc Chandonia <jmc@cmpharm.ucsf.edu>
|
||||
|
||||
* gnu/gcj/convert/Input_8859_1.java (read): Use 3rd parameter
|
||||
properly as count rather than outlength.
|
||||
* java/io/BufferedOutputStream.java (write(byte[],int,int): Flush
|
||||
output on overflow rather than buffer fill.
|
||||
* java/io/BufferedReader.java (fill): Don't clear out the buffer
|
||||
if markPos is 0 and there is still room in the buffer.
|
||||
|
||||
1999-07-01 Andrew Haley <aph@cygnus.com>
|
||||
|
||||
* include/i386-signal.h: Replace sigaction () with __sigaction ().
|
||||
|
|
|
@ -91,15 +91,17 @@ public abstract class BytesToUnicode
|
|||
* bytes start at inbuffer[inpos], and end at inbuffer[inlength-1].
|
||||
* @param outbuffer buffer for the converted character
|
||||
* @param outpos position in buffer to start putting converted characters
|
||||
* @param outlength the maximum number of characters to convert
|
||||
* @param count the maximum number of characters to convert
|
||||
* @return number of chars placed in outbuffer.
|
||||
* Also, this.inpos is incremented by the number of bytes consumed.
|
||||
*
|
||||
* (Note the asymmetry in that the input upper bound is inbuffer[inlength-1],
|
||||
* while the output upper bound is outbuffer[outpos+outlength-1]. The
|
||||
* while the output upper bound is outbuffer[outpos+count-1]. The
|
||||
* justification is that inlength is like the count field of a
|
||||
* BufferedInputStream, while the outlength parameter is like the
|
||||
* length parameter of a read request.)
|
||||
* BufferedInputStream, while the count parameter is like the
|
||||
* length parameter of a read request.) The count parameter is
|
||||
* also defined to be <= outbuffer.length - outpos (per the specification
|
||||
* of the length parameter for a read request).
|
||||
*/
|
||||
public abstract int read (char[] outbuffer, int outpos, int outlength);
|
||||
public abstract int read (char[] outbuffer, int outpos, int count);
|
||||
}
|
||||
|
|
|
@ -11,21 +11,21 @@ package gnu.gcj.convert;
|
|||
/**
|
||||
* Convert ISO-Latin-1 (8851-1) text to Unicode.
|
||||
* @author Per Bothner <bothner@cygnus.com>
|
||||
* @date Match 1999.
|
||||
* @date March 1999.
|
||||
*/
|
||||
|
||||
public class Input_8859_1 extends BytesToUnicode
|
||||
{
|
||||
public String getName() { return "8859_1"; }
|
||||
|
||||
public int read (char[] outbuffer, int outpos, int outlength)
|
||||
public int read (char[] outbuffer, int outpos, int count)
|
||||
{
|
||||
int origpos = outpos;
|
||||
// Make sure fields of this are in registers.
|
||||
int inpos = this.inpos;
|
||||
byte[] inbuffer = this.inbuffer;
|
||||
int inavail = this.inlength - inpos;
|
||||
int outavail = outlength - outpos;
|
||||
int outavail = count;
|
||||
if (outavail > inavail)
|
||||
outavail = inavail;
|
||||
while (--outavail >= 0)
|
||||
|
|
|
@ -21,5 +21,5 @@ public class Input_EUCJIS extends BytesToUnicode
|
|||
int codeset = 0;
|
||||
int first_byte;
|
||||
|
||||
public native int read (char[] outbuffer, int outpos, int outlength);
|
||||
public native int read (char[] outbuffer, int outpos, int count);
|
||||
}
|
||||
|
|
|
@ -27,14 +27,14 @@ public class Input_JavaSrc extends BytesToUnicode
|
|||
|
||||
int value;
|
||||
|
||||
public int read (char[] outbuffer, int outpos, int outlength)
|
||||
public int read (char[] outbuffer, int outpos, int count)
|
||||
{
|
||||
int origpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
if (outpos >= outlength)
|
||||
if (outpos - origpos >= count)
|
||||
break;
|
||||
char b = (char) (inbuffer[inpos++] & 0xFF);
|
||||
switch (state)
|
||||
|
|
|
@ -18,7 +18,7 @@ public class Input_SJIS extends BytesToUnicode
|
|||
{
|
||||
public String getName() { return "SJIS"; }
|
||||
|
||||
public native int read (char[] outbuffer, int outpos, int outlength);
|
||||
public native int read (char[] outbuffer, int outpos, int count);
|
||||
|
||||
int first_byte;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ package gnu.gcj.convert;
|
|||
/**
|
||||
* Convert UTF8 to Unicode.
|
||||
* @author Per Bothner <bothner@cygnus.com>
|
||||
* @date Match 1999.
|
||||
* @date March 1999.
|
||||
*/
|
||||
|
||||
public class Input_UTF8 extends BytesToUnicode
|
||||
|
@ -22,12 +22,12 @@ public class Input_UTF8 extends BytesToUnicode
|
|||
int partial_bytes_expected = 0;
|
||||
//int suggogate_second = -1;
|
||||
|
||||
public int read (char[] outbuffer, int outpos, int outlength)
|
||||
public int read (char[] outbuffer, int outpos, int count)
|
||||
{
|
||||
int origpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (outpos >= outlength)
|
||||
if (outpos - origpos >= count)
|
||||
break;
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
|
|
|
@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94];
|
|||
|
||||
jint
|
||||
gnu::gcj::convert::Input_EUCJIS::read(jcharArray outbuffer, jint outpos,
|
||||
jint outlength)
|
||||
jint count)
|
||||
{
|
||||
jint start_outpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (outpos >= outlength)
|
||||
if (outpos - start_outpos >= count)
|
||||
break;
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
|
|
|
@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94];
|
|||
|
||||
jint
|
||||
gnu::gcj::convert::Input_SJIS::read(jcharArray outbuffer, jint outpos,
|
||||
jint outlength)
|
||||
jint count)
|
||||
{
|
||||
jint start_outpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (outpos >= outlength)
|
||||
if (outpos - start_outpos >= count)
|
||||
break;
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
|
|
|
@ -42,6 +42,7 @@ public class BufferedOutputStream extends FilterOutputStream
|
|||
|
||||
public synchronized void write (int b) throws IOException
|
||||
{
|
||||
// Flush output on overflow though JDK (1.2) doc may infer to flush on fill.
|
||||
if (count < buf.length)
|
||||
buf[count++] = (byte) b;
|
||||
else
|
||||
|
@ -55,8 +56,10 @@ public class BufferedOutputStream extends FilterOutputStream
|
|||
public synchronized void write (byte[] b, int off, int len)
|
||||
throws IOException, NullPointerException, IndexOutOfBoundsException
|
||||
{
|
||||
// Flush output on overflow though JDK (1.2) doc may infer to flush on fill.
|
||||
|
||||
// If LEN < 0 then the downstream write will fail for us.
|
||||
if (len >= 0 && count + len < buf.length)
|
||||
if (len >= 0 && count + len <= buf.length)
|
||||
{
|
||||
System.arraycopy(b, off, buf, count, len);
|
||||
count += len;
|
||||
|
|
|
@ -197,7 +197,7 @@ public class BufferedReader extends Reader
|
|||
}
|
||||
}
|
||||
|
||||
/* Read more data into the buffer. Update pos and limit appropriatly.
|
||||
/* Read more data into the buffer. Update pos and limit appropriately.
|
||||
Assumes pos==limit initially. May invalidate the mark if read too much.
|
||||
Return number of chars read (never 0), or -1 on eof. */
|
||||
private int fill() throws IOException
|
||||
|
@ -214,7 +214,7 @@ public class BufferedReader extends Reader
|
|||
|
||||
if (markPos >= 0 && limit == buffer.length)
|
||||
markPos = -1;
|
||||
if (markPos <= 0)
|
||||
if (markPos < 0)
|
||||
pos = limit = 0;
|
||||
int count = in.read(buffer, limit, buffer.length - limit);
|
||||
if (count > 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue