summaryrefslogtreecommitdiffstats
path: root/libjava/classpath/gnu/java/nio
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/java/nio')
-rw-r--r--libjava/classpath/gnu/java/nio/ChannelInputStream.java12
-rw-r--r--libjava/classpath/gnu/java/nio/SelectorProviderImpl.java1
-rw-r--r--libjava/classpath/gnu/java/nio/charset/ByteCharset.java7
-rw-r--r--libjava/classpath/gnu/java/nio/charset/EncodingHelper.java11
4 files changed, 28 insertions, 3 deletions
diff --git a/libjava/classpath/gnu/java/nio/ChannelInputStream.java b/libjava/classpath/gnu/java/nio/ChannelInputStream.java
index 675a62f3d88..f56536d65ad 100644
--- a/libjava/classpath/gnu/java/nio/ChannelInputStream.java
+++ b/libjava/classpath/gnu/java/nio/ChannelInputStream.java
@@ -59,6 +59,16 @@ public final class ChannelInputStream extends InputStream
this.ch = ch;
}
+ public int read(byte[] buf, int off, int len) throws IOException
+ {
+ if (ch instanceof SelectableChannel
+ && (! ((SelectableChannel) ch).isBlocking()))
+ throw new IllegalBlockingModeException();
+
+ ByteBuffer b = ByteBuffer.wrap(buf, off, len);
+ return ch.read(b);
+ }
+
public int read() throws IOException
{
if (ch instanceof SelectableChannel
@@ -74,6 +84,6 @@ public final class ChannelInputStream extends InputStream
if (result == 0)
throw new IOException("Could not read from channel");
- return buffer.get(0);
+ return buffer.get(0) & 0xff;
}
}
diff --git a/libjava/classpath/gnu/java/nio/SelectorProviderImpl.java b/libjava/classpath/gnu/java/nio/SelectorProviderImpl.java
index 56167b69ea8..0c509b985ff 100644
--- a/libjava/classpath/gnu/java/nio/SelectorProviderImpl.java
+++ b/libjava/classpath/gnu/java/nio/SelectorProviderImpl.java
@@ -117,4 +117,5 @@ public class SelectorProviderImpl extends SelectorProvider
{
return new SocketChannelImpl (this);
}
+
}
diff --git a/libjava/classpath/gnu/java/nio/charset/ByteCharset.java b/libjava/classpath/gnu/java/nio/charset/ByteCharset.java
index da0fdcbcdb3..e2025482956 100644
--- a/libjava/classpath/gnu/java/nio/charset/ByteCharset.java
+++ b/libjava/classpath/gnu/java/nio/charset/ByteCharset.java
@@ -115,8 +115,11 @@ abstract class ByteCharset extends Charset
return CoderResult.OVERFLOW;
}
- if((c = lookup[(int) (b & 0xFF)]) == NONE);
- // return CoderResult.unmappableForLength (1);
+ if((c = lookup[(int) (b & 0xFF)]) == NONE)
+ {
+ in.position (in.position () - 1);
+ return CoderResult.unmappableForLength (1);
+ }
out.put (c);
}
diff --git a/libjava/classpath/gnu/java/nio/charset/EncodingHelper.java b/libjava/classpath/gnu/java/nio/charset/EncodingHelper.java
index 033440d5da2..be7b4afe05d 100644
--- a/libjava/classpath/gnu/java/nio/charset/EncodingHelper.java
+++ b/libjava/classpath/gnu/java/nio/charset/EncodingHelper.java
@@ -148,6 +148,17 @@ public class EncodingHelper
throw new UnsupportedEncodingException("Charset "+name+" not found.");
}
}
+
+ /**
+ * Returns the default charset without throwing any exceptions. The default
+ * charset is UTF8.
+ *
+ * @return the default charset
+ */
+ public static Charset getDefaultCharset()
+ {
+ return new UTF_8();
+ }
}
OpenPOWER on IntegriCloud