[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>
|
1999-07-01 Andrew Haley <aph@cygnus.com>
|
||||||
|
|
||||||
* include/i386-signal.h: Replace sigaction () with __sigaction ().
|
* 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].
|
* bytes start at inbuffer[inpos], and end at inbuffer[inlength-1].
|
||||||
* @param outbuffer buffer for the converted character
|
* @param outbuffer buffer for the converted character
|
||||||
* @param outpos position in buffer to start putting converted characters
|
* @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.
|
* @return number of chars placed in outbuffer.
|
||||||
* Also, this.inpos is incremented by the number of bytes consumed.
|
* Also, this.inpos is incremented by the number of bytes consumed.
|
||||||
*
|
*
|
||||||
* (Note the asymmetry in that the input upper bound is inbuffer[inlength-1],
|
* (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
|
* justification is that inlength is like the count field of a
|
||||||
* BufferedInputStream, while the outlength parameter is like the
|
* BufferedInputStream, while the count parameter is like the
|
||||||
* length parameter of a read request.)
|
* 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.
|
* Convert ISO-Latin-1 (8851-1) text to Unicode.
|
||||||
* @author Per Bothner <bothner@cygnus.com>
|
* @author Per Bothner <bothner@cygnus.com>
|
||||||
* @date Match 1999.
|
* @date March 1999.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Input_8859_1 extends BytesToUnicode
|
public class Input_8859_1 extends BytesToUnicode
|
||||||
{
|
{
|
||||||
public String getName() { return "8859_1"; }
|
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;
|
int origpos = outpos;
|
||||||
// Make sure fields of this are in registers.
|
// Make sure fields of this are in registers.
|
||||||
int inpos = this.inpos;
|
int inpos = this.inpos;
|
||||||
byte[] inbuffer = this.inbuffer;
|
byte[] inbuffer = this.inbuffer;
|
||||||
int inavail = this.inlength - inpos;
|
int inavail = this.inlength - inpos;
|
||||||
int outavail = outlength - outpos;
|
int outavail = count;
|
||||||
if (outavail > inavail)
|
if (outavail > inavail)
|
||||||
outavail = inavail;
|
outavail = inavail;
|
||||||
while (--outavail >= 0)
|
while (--outavail >= 0)
|
||||||
|
|
|
@ -21,5 +21,5 @@ public class Input_EUCJIS extends BytesToUnicode
|
||||||
int codeset = 0;
|
int codeset = 0;
|
||||||
int first_byte;
|
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;
|
int value;
|
||||||
|
|
||||||
public int read (char[] outbuffer, int outpos, int outlength)
|
public int read (char[] outbuffer, int outpos, int count)
|
||||||
{
|
{
|
||||||
int origpos = outpos;
|
int origpos = outpos;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (inpos >= inlength)
|
if (inpos >= inlength)
|
||||||
break;
|
break;
|
||||||
if (outpos >= outlength)
|
if (outpos - origpos >= count)
|
||||||
break;
|
break;
|
||||||
char b = (char) (inbuffer[inpos++] & 0xFF);
|
char b = (char) (inbuffer[inpos++] & 0xFF);
|
||||||
switch (state)
|
switch (state)
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class Input_SJIS extends BytesToUnicode
|
||||||
{
|
{
|
||||||
public String getName() { return "SJIS"; }
|
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;
|
int first_byte;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ package gnu.gcj.convert;
|
||||||
/**
|
/**
|
||||||
* Convert UTF8 to Unicode.
|
* Convert UTF8 to Unicode.
|
||||||
* @author Per Bothner <bothner@cygnus.com>
|
* @author Per Bothner <bothner@cygnus.com>
|
||||||
* @date Match 1999.
|
* @date March 1999.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Input_UTF8 extends BytesToUnicode
|
public class Input_UTF8 extends BytesToUnicode
|
||||||
|
@ -22,12 +22,12 @@ public class Input_UTF8 extends BytesToUnicode
|
||||||
int partial_bytes_expected = 0;
|
int partial_bytes_expected = 0;
|
||||||
//int suggogate_second = -1;
|
//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;
|
int origpos = outpos;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (outpos >= outlength)
|
if (outpos - origpos >= count)
|
||||||
break;
|
break;
|
||||||
if (inpos >= inlength)
|
if (inpos >= inlength)
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94];
|
||||||
|
|
||||||
jint
|
jint
|
||||||
gnu::gcj::convert::Input_EUCJIS::read(jcharArray outbuffer, jint outpos,
|
gnu::gcj::convert::Input_EUCJIS::read(jcharArray outbuffer, jint outpos,
|
||||||
jint outlength)
|
jint count)
|
||||||
{
|
{
|
||||||
jint start_outpos = outpos;
|
jint start_outpos = outpos;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (outpos >= outlength)
|
if (outpos - start_outpos >= count)
|
||||||
break;
|
break;
|
||||||
if (inpos >= inlength)
|
if (inpos >= inlength)
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94];
|
||||||
|
|
||||||
jint
|
jint
|
||||||
gnu::gcj::convert::Input_SJIS::read(jcharArray outbuffer, jint outpos,
|
gnu::gcj::convert::Input_SJIS::read(jcharArray outbuffer, jint outpos,
|
||||||
jint outlength)
|
jint count)
|
||||||
{
|
{
|
||||||
jint start_outpos = outpos;
|
jint start_outpos = outpos;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (outpos >= outlength)
|
if (outpos - start_outpos >= count)
|
||||||
break;
|
break;
|
||||||
if (inpos >= inlength)
|
if (inpos >= inlength)
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -42,6 +42,7 @@ public class BufferedOutputStream extends FilterOutputStream
|
||||||
|
|
||||||
public synchronized void write (int b) throws IOException
|
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)
|
if (count < buf.length)
|
||||||
buf[count++] = (byte) b;
|
buf[count++] = (byte) b;
|
||||||
else
|
else
|
||||||
|
@ -55,8 +56,10 @@ public class BufferedOutputStream extends FilterOutputStream
|
||||||
public synchronized void write (byte[] b, int off, int len)
|
public synchronized void write (byte[] b, int off, int len)
|
||||||
throws IOException, NullPointerException, IndexOutOfBoundsException
|
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 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);
|
System.arraycopy(b, off, buf, count, len);
|
||||||
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.
|
Assumes pos==limit initially. May invalidate the mark if read too much.
|
||||||
Return number of chars read (never 0), or -1 on eof. */
|
Return number of chars read (never 0), or -1 on eof. */
|
||||||
private int fill() throws IOException
|
private int fill() throws IOException
|
||||||
|
@ -214,7 +214,7 @@ public class BufferedReader extends Reader
|
||||||
|
|
||||||
if (markPos >= 0 && limit == buffer.length)
|
if (markPos >= 0 && limit == buffer.length)
|
||||||
markPos = -1;
|
markPos = -1;
|
||||||
if (markPos <= 0)
|
if (markPos < 0)
|
||||||
pos = limit = 0;
|
pos = limit = 0;
|
||||||
int count = in.read(buffer, limit, buffer.length - limit);
|
int count = in.read(buffer, limit, buffer.length - limit);
|
||||||
if (count > 0)
|
if (count > 0)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue