in core/src/main/java/org/apache/james/mime4j/io/TextInputStream.java [63:97]
public int read(byte[] b, int off, int len) throws IOException {
if (b == null) {
throw new NullPointerException();
}
if (off < 0 || len < 0 || off + len > b.length) {
throw new IndexOutOfBoundsException();
}
if (!this.bbuf.hasRemaining() && !this.cbuf.hasRemaining()) {
return -1;
}
int bytesRead = 0;
while (len > 0) {
if (this.bbuf.hasRemaining()) {
int chunk = Math.min(this.bbuf.remaining(), len);
this.bbuf.get(b, off, chunk);
off += chunk;
len -= chunk;
bytesRead += chunk;
} else {
fillBuffer();
if (!this.bbuf.hasRemaining() && !this.cbuf.hasRemaining()) {
break;
}
}
}
if (bytesRead > 0) {
return bytesRead;
} else {
if (!this.bbuf.hasRemaining() && !this.cbuf.hasRemaining()) {
return -1;
} else {
return bytesRead;
}
}
}