From 6cd167e1a7f8c13bbc51393aef6c7bd6f0f50075 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 21 Apr 2000 21:41:32 +0000 Subject: [PATCH] PipedInputStream.java, [...]: Yet another new version from Classpath. * java/io/PipedInputStream.java, java/io/PipedOutputStream.java: Yet another new version from Classpath. From-SVN: r33328 --- libjava/ChangeLog | 3 +++ libjava/java/io/PipedInputStream.java | 31 +++++++++----------------- libjava/java/io/PipedOutputStream.java | 9 +++----- 3 files changed, 16 insertions(+), 27 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 4a9d930e370..9e4d05aad10 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,8 @@ 2000-04-21 Tom Tromey + * java/io/PipedInputStream.java, java/io/PipedOutputStream.java: + Yet another new version from Classpath. + Fix for PR libgcj/15: * java/util/natGregorianCalendar.cc (_REENTRANT, _POSIX_PTHREAD_SEMANTICS): Don't define. diff --git a/libjava/java/io/PipedInputStream.java b/libjava/java/io/PipedInputStream.java index 97c034bd11b..e25f163f604 100644 --- a/libjava/java/io/PipedInputStream.java +++ b/libjava/java/io/PipedInputStream.java @@ -398,30 +398,19 @@ read(byte[] buf, int offset, int len) throws IOException * If there is no data ready to be written, or if the internal circular * buffer is full, this method blocks. * - * *****What is this method really supposed to do ********* + * @param byte_received The byte to write to this stream + * + * @exception IOException if error occurs + * */ protected synchronized void receive(int byte_received) throws IOException { - int orig_in = in; - - for (;;) - { - // Wait for something to happen - try - { - wait(); - } - catch(InterruptedException e) { ; } - - // See if we woke up because the stream was closed on us - if (closed) - throw new IOException("Stream closed before receiving byte"); - - // See if a byte of data was received - if (in != orig_in) - return; - } + // This is really slow, but it has the benefit of not duplicating + // the complicated machinery in receive(byte[],int,int). + byte[] buf = new byte[1]; + buf[0] = (byte) (byte_received & 0xff); + receive (buf, 0, 1); } /*************************************************************************/ @@ -439,7 +428,7 @@ receive(int byte_received) throws IOException * @exception IOException If an error occurs */ synchronized void -write(byte[] buf, int offset, int len) throws IOException +receive(byte[] buf, int offset, int len) throws IOException { if (len <= 0) return; diff --git a/libjava/java/io/PipedOutputStream.java b/libjava/java/io/PipedOutputStream.java index 6d1061230be..b12d1e5f55e 100644 --- a/libjava/java/io/PipedOutputStream.java +++ b/libjava/java/io/PipedOutputStream.java @@ -1,5 +1,5 @@ /* PipedOutputStream.java -- Write portion of piped streams. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 2000 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -164,10 +164,7 @@ close() throws IOException public synchronized void write(int b) throws IOException { - byte[] buf = new byte[1]; - buf[0] = (byte)(b & 0xFF); - - snk.write(buf, 0, buf.length); + snk.receive (b); } /*************************************************************************/ @@ -188,7 +185,7 @@ write(int b) throws IOException public void write(byte[] buf, int offset, int len) throws IOException { - snk.write(buf, 0, len); + snk.receive (buf, 0, len); } /*************************************************************************/ -- 2.30.2