summaryrefslogtreecommitdiff
path: root/apache/org/apache/james/mime4j/EOLConvertingInputStream.java
diff options
context:
space:
mode:
Diffstat (limited to 'apache/org/apache/james/mime4j/EOLConvertingInputStream.java')
-rw-r--r--apache/org/apache/james/mime4j/EOLConvertingInputStream.java139
1 files changed, 0 insertions, 139 deletions
diff --git a/apache/org/apache/james/mime4j/EOLConvertingInputStream.java b/apache/org/apache/james/mime4j/EOLConvertingInputStream.java
deleted file mode 100644
index d6ef706b2..000000000
--- a/apache/org/apache/james/mime4j/EOLConvertingInputStream.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PushbackInputStream;
-
-/**
- * InputStream which converts <code>\r</code>
- * bytes not followed by <code>\n</code> and <code>\n</code> not
- * preceded by <code>\r</code> to <code>\r\n</code>.
- *
- *
- * @version $Id: EOLConvertingInputStream.java,v 1.4 2004/11/29 13:15:42 ntherning Exp $
- */
-public class EOLConvertingInputStream extends InputStream {
- /** Converts single '\r' to '\r\n' */
- public static final int CONVERT_CR = 1;
- /** Converts single '\n' to '\r\n' */
- public static final int CONVERT_LF = 2;
- /** Converts single '\r' and '\n' to '\r\n' */
- public static final int CONVERT_BOTH = 3;
-
- private PushbackInputStream in = null;
- private int previous = 0;
- private int flags = CONVERT_BOTH;
- private int size = 0;
- private int pos = 0;
- private int nextTenPctPos;
- private int tenPctSize;
- private Callback callback;
-
- public interface Callback {
- public void report(int bytesRead);
- }
-
- /**
- * Creates a new <code>EOLConvertingInputStream</code>
- * instance converting bytes in the given <code>InputStream</code>.
- * The flag <code>CONVERT_BOTH</code> is the default.
- *
- * @param in the <code>InputStream</code> to read from.
- */
- public EOLConvertingInputStream(InputStream _in) {
- super();
- in = new PushbackInputStream(_in, 2);
- }
-
- /**
- * Creates a new <code>EOLConvertingInputStream</code>
- * instance converting bytes in the given <code>InputStream</code>.
- *
- * @param _in the <code>InputStream</code> to read from.
- * @param _size the size of the input stream (need not be exact)
- * @param _callback a callback reporting when each 10% of stream's size is reached
- */
- public EOLConvertingInputStream(InputStream _in, int _size, Callback _callback) {
- this(_in);
- size = _size;
- tenPctSize = size / 10;
- nextTenPctPos = tenPctSize;
- callback = _callback;
- }
-
- /**
- * Closes the underlying stream.
- *
- * @throws IOException on I/O errors.
- */
- public void close() throws IOException {
- in.close();
- }
-
- private int readByte() throws IOException {
- int b = in.read();
- if (b != -1) {
- if (callback != null && pos++ == nextTenPctPos) {
- nextTenPctPos += tenPctSize;
- if (callback != null) {
- callback.report(pos);
- }
- }
- }
- return b;
- }
-
- private void unreadByte(int c) throws IOException {
- in.unread(c);
- pos--;
- }
-
- /**
- * @see java.io.InputStream#read()
- */
- public int read() throws IOException {
- int b = readByte();
-
- if (b == -1) {
- pos = size;
- return -1;
- }
-
- if ((flags & CONVERT_CR) != 0 && b == '\r') {
- int c = readByte();
- if (c != -1) {
- unreadByte(c);
- }
- if (c != '\n') {
- unreadByte('\n');
- }
- } else if ((flags & CONVERT_LF) != 0 && b == '\n' && previous != '\r') {
- b = '\r';
- unreadByte('\n');
- }
-
- previous = b;
-
- return b;
- }
-
-} \ No newline at end of file