Fix line endings
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/FileItemIteratorImpl.java b/java/org/apache/tomcat/util/http/fileupload/impl/FileItemIteratorImpl.java
index bef13aa..098e089 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/FileItemIteratorImpl.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/FileItemIteratorImpl.java
@@ -1,339 +1,339 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-import java.io.IOException;

-import java.io.InputStream;

-import java.util.ArrayList;

-import java.util.List;

-import java.util.Locale;

-import java.util.NoSuchElementException;

-

-import org.apache.tomcat.util.http.fileupload.FileItem;

-import org.apache.tomcat.util.http.fileupload.FileItemHeaders;

-import org.apache.tomcat.util.http.fileupload.FileItemIterator;

-import org.apache.tomcat.util.http.fileupload.FileItemStream;

-import org.apache.tomcat.util.http.fileupload.FileUploadBase;

-import org.apache.tomcat.util.http.fileupload.FileUploadException;

-import org.apache.tomcat.util.http.fileupload.IOUtils;

-import org.apache.tomcat.util.http.fileupload.MultipartStream;

-import org.apache.tomcat.util.http.fileupload.ProgressListener;

-import org.apache.tomcat.util.http.fileupload.RequestContext;

-import org.apache.tomcat.util.http.fileupload.UploadContext;

-import org.apache.tomcat.util.http.fileupload.util.LimitedInputStream;

-

-/**

- * The iterator, which is returned by

- * {@link FileUploadBase#getItemIterator(RequestContext)}.

- */

-public class FileItemIteratorImpl implements FileItemIterator {

-    private final FileUploadBase fileUploadBase;

-    private final RequestContext ctx;

-    private long sizeMax, fileSizeMax;

-

-

-    @Override

-    public long getSizeMax() {

-        return sizeMax;

-    }

-

-    @Override

-    public void setSizeMax(long sizeMax) {

-        this.sizeMax = sizeMax;

-    }

-

-    @Override

-    public long getFileSizeMax() {

-        return fileSizeMax;

-    }

-

-    @Override

-    public void setFileSizeMax(long fileSizeMax) {

-        this.fileSizeMax = fileSizeMax;

-    }

-

-    /**

-     * The multi part stream to process.

-     */

-    private MultipartStream multiPartStream;

-

-    /**

-     * The notifier, which used for triggering the

-     * {@link ProgressListener}.

-     */

-    private MultipartStream.ProgressNotifier progressNotifier;

-

-    /**

-     * The boundary, which separates the various parts.

-     */

-    private byte[] multiPartBoundary;

-

-    /**

-     * The item, which we currently process.

-     */

-    private FileItemStreamImpl currentItem;

-

-    /**

-     * The current items field name.

-     */

-    private String currentFieldName;

-

-    /**

-     * Whether we are currently skipping the preamble.

-     */

-    private boolean skipPreamble;

-

-    /**

-     * Whether the current item may still be read.

-     */

-    private boolean itemValid;

-

-    /**

-     * Whether we have seen the end of the file.

-     */

-    private boolean eof;

-

-    /**

-     * Creates a new instance.

-     *

-     * @param pFileUploadBase Upload instance

-     * @param pRequestContext The request context.

-     * @throws FileUploadException An error occurred while

-     *   parsing the request.

-     * @throws IOException An I/O error occurred.

-     */

-    public FileItemIteratorImpl(FileUploadBase pFileUploadBase, RequestContext pRequestContext)

-            throws FileUploadException, IOException {

-        fileUploadBase = pFileUploadBase;

-        sizeMax = fileUploadBase.getSizeMax();

-        fileSizeMax = fileUploadBase.getFileSizeMax();

-        ctx = pRequestContext;

-        if (ctx == null) {

-            throw new NullPointerException("ctx parameter");

-        }

-

-

-        skipPreamble = true;

-        findNextItem();

-    }

-

-    protected void init(FileUploadBase fileUploadBase, @SuppressWarnings("unused") RequestContext pRequestContext)

-            throws FileUploadException, IOException {

-        String contentType = ctx.getContentType();

-        if ((null == contentType)

-                || (!contentType.toLowerCase(Locale.ENGLISH).startsWith(FileUploadBase.MULTIPART))) {

-            throw new InvalidContentTypeException(

-                    String.format("the request doesn't contain a %s or %s stream, content type header is %s",

-                           FileUploadBase.MULTIPART_FORM_DATA, FileUploadBase.MULTIPART_MIXED, contentType));

-        }

-

-        final long requestSize = ((UploadContext) ctx).contentLength();

-

-        InputStream input; // N.B. this is eventually closed in MultipartStream processing

-        if (sizeMax >= 0) {

-            if (requestSize != -1 && requestSize > sizeMax) {

-                throw new SizeLimitExceededException(

-                    String.format("the request was rejected because its size (%s) exceeds the configured maximum (%s)",

-                            Long.valueOf(requestSize), Long.valueOf(sizeMax)),

-                           requestSize, sizeMax);

-            }

-            // N.B. this is eventually closed in MultipartStream processing

-            input = new LimitedInputStream(ctx.getInputStream(), sizeMax) {

-                @Override

-                protected void raiseError(long pSizeMax, long pCount)

-                        throws IOException {

-                    FileUploadException ex = new SizeLimitExceededException(

-                    String.format("the request was rejected because its size (%s) exceeds the configured maximum (%s)",

-                            Long.valueOf(pCount), Long.valueOf(pSizeMax)),

-                           pCount, pSizeMax);

-                    throw new FileUploadIOException(ex);

-                }

-            };

-        } else {

-            input = ctx.getInputStream();

-        }

-

-        String charEncoding = fileUploadBase.getHeaderEncoding();

-        if (charEncoding == null) {

-            charEncoding = ctx.getCharacterEncoding();

-        }

-

-        multiPartBoundary = fileUploadBase.getBoundary(contentType);

-        if (multiPartBoundary == null) {

-            IOUtils.closeQuietly(input); // avoid possible resource leak

-            throw new FileUploadException("the request was rejected because no multipart boundary was found");

-        }

-

-        progressNotifier = new MultipartStream.ProgressNotifier(fileUploadBase.getProgressListener(), requestSize);

-        try {

-            multiPartStream = new MultipartStream(input, multiPartBoundary, progressNotifier);

-        } catch (IllegalArgumentException iae) {

-            IOUtils.closeQuietly(input); // avoid possible resource leak

-            throw new InvalidContentTypeException(

-                    String.format("The boundary specified in the %s header is too long", FileUploadBase.CONTENT_TYPE), iae);

-        }

-        multiPartStream.setHeaderEncoding(charEncoding);

-    }

-

-    public MultipartStream getMultiPartStream() throws FileUploadException, IOException {

-        if (multiPartStream == null) {

-            init(fileUploadBase, ctx);

-        }

-        return multiPartStream;

-    }

-

-    /**

-     * Called for finding the next item, if any.

-     *

-     * @return True, if an next item was found, otherwise false.

-     * @throws IOException An I/O error occurred.

-     */

-    private boolean findNextItem() throws FileUploadException, IOException {

-        if (eof) {

-            return false;

-        }

-        if (currentItem != null) {

-            currentItem.close();

-            currentItem = null;

-        }

-        final MultipartStream multi = getMultiPartStream();

-        for (;;) {

-            boolean nextPart;

-            if (skipPreamble) {

-                nextPart = multi.skipPreamble();

-            } else {

-                nextPart = multi.readBoundary();

-            }

-            if (!nextPart) {

-                if (currentFieldName == null) {

-                    // Outer multipart terminated -> No more data

-                    eof = true;

-                    return false;

-                }

-                // Inner multipart terminated -> Return to parsing the outer

-                multi.setBoundary(multiPartBoundary);

-                currentFieldName = null;

-                continue;

-            }

-            FileItemHeaders headers = fileUploadBase.getParsedHeaders(multi.readHeaders());

-            if (currentFieldName == null) {

-                // We're parsing the outer multipart

-                String fieldName = fileUploadBase.getFieldName(headers);

-                if (fieldName != null) {

-                    String subContentType = headers.getHeader(FileUploadBase.CONTENT_TYPE);

-                    if (subContentType != null

-                            &&  subContentType.toLowerCase(Locale.ENGLISH)

-                                    .startsWith(FileUploadBase.MULTIPART_MIXED)) {

-                        currentFieldName = fieldName;

-                        // Multiple files associated with this field name

-                        byte[] subBoundary = fileUploadBase.getBoundary(subContentType);

-                        multi.setBoundary(subBoundary);

-                        skipPreamble = true;

-                        continue;

-                    }

-                    String fileName = fileUploadBase.getFileName(headers);

-                    currentItem = new FileItemStreamImpl(this, fileName,

-                            fieldName, headers.getHeader(FileUploadBase.CONTENT_TYPE),

-                            fileName == null, getContentLength(headers));

-                    currentItem.setHeaders(headers);

-                    progressNotifier.noteItem();

-                    itemValid = true;

-                    return true;

-                }

-            } else {

-                String fileName = fileUploadBase.getFileName(headers);

-                if (fileName != null) {

-                    currentItem = new FileItemStreamImpl(this, fileName,

-                            currentFieldName,

-                            headers.getHeader(FileUploadBase.CONTENT_TYPE),

-                            false, getContentLength(headers));

-                    currentItem.setHeaders(headers);

-                    progressNotifier.noteItem();

-                    itemValid = true;

-                    return true;

-                }

-            }

-            multi.discardBodyData();

-        }

-    }

-

-    private long getContentLength(FileItemHeaders pHeaders) {

-        try {

-            return Long.parseLong(pHeaders.getHeader(FileUploadBase.CONTENT_LENGTH));

-        } catch (Exception e) {

-            return -1;

-        }

-    }

-

-    /**

-     * Returns, whether another instance of {@link FileItemStream}

-     * is available.

-     *

-     * @throws FileUploadException Parsing or processing the

-     *   file item failed.

-     * @throws IOException Reading the file item failed.

-     * @return True, if one or more additional file items

-     *   are available, otherwise false.

-     */

-    @Override

-    public boolean hasNext() throws FileUploadException, IOException {

-        if (eof) {

-            return false;

-        }

-        if (itemValid) {

-            return true;

-        }

-        try {

-            return findNextItem();

-        } catch (FileUploadIOException e) {

-            // unwrap encapsulated SizeException

-            throw (FileUploadException) e.getCause();

-        }

-    }

-

-    /**

-     * Returns the next available {@link FileItemStream}.

-     *

-     * @throws java.util.NoSuchElementException No more items are

-     *   available. Use {@link #hasNext()} to prevent this exception.

-     * @throws FileUploadException Parsing or processing the

-     *   file item failed.

-     * @throws IOException Reading the file item failed.

-     * @return FileItemStream instance, which provides

-     *   access to the next file item.

-     */

-    @Override

-    public FileItemStream next() throws FileUploadException, IOException {

-        if (eof  ||  (!itemValid && !hasNext())) {

-            throw new NoSuchElementException();

-        }

-        itemValid = false;

-        return currentItem;

-    }

-

-    @Override

-    public List<FileItem> getFileItems() throws FileUploadException, IOException {

-        final List<FileItem> items = new ArrayList<>();

-        while (hasNext()) {

-            final FileItemStream fis = next();

-            final FileItem fi = fileUploadBase.getFileItemFactory().createItem(fis.getFieldName(), fis.getContentType(), fis.isFormField(), fis.getName());

-            items.add(fi);

-        }

-        return items;

-    }

-

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.NoSuchElementException;
+
+import org.apache.tomcat.util.http.fileupload.FileItem;
+import org.apache.tomcat.util.http.fileupload.FileItemHeaders;
+import org.apache.tomcat.util.http.fileupload.FileItemIterator;
+import org.apache.tomcat.util.http.fileupload.FileItemStream;
+import org.apache.tomcat.util.http.fileupload.FileUploadBase;
+import org.apache.tomcat.util.http.fileupload.FileUploadException;
+import org.apache.tomcat.util.http.fileupload.IOUtils;
+import org.apache.tomcat.util.http.fileupload.MultipartStream;
+import org.apache.tomcat.util.http.fileupload.ProgressListener;
+import org.apache.tomcat.util.http.fileupload.RequestContext;
+import org.apache.tomcat.util.http.fileupload.UploadContext;
+import org.apache.tomcat.util.http.fileupload.util.LimitedInputStream;
+
+/**
+ * The iterator, which is returned by
+ * {@link FileUploadBase#getItemIterator(RequestContext)}.
+ */
+public class FileItemIteratorImpl implements FileItemIterator {
+    private final FileUploadBase fileUploadBase;
+    private final RequestContext ctx;
+    private long sizeMax, fileSizeMax;
+
+
+    @Override
+    public long getSizeMax() {
+        return sizeMax;
+    }
+
+    @Override
+    public void setSizeMax(long sizeMax) {
+        this.sizeMax = sizeMax;
+    }
+
+    @Override
+    public long getFileSizeMax() {
+        return fileSizeMax;
+    }
+
+    @Override
+    public void setFileSizeMax(long fileSizeMax) {
+        this.fileSizeMax = fileSizeMax;
+    }
+
+    /**
+     * The multi part stream to process.
+     */
+    private MultipartStream multiPartStream;
+
+    /**
+     * The notifier, which used for triggering the
+     * {@link ProgressListener}.
+     */
+    private MultipartStream.ProgressNotifier progressNotifier;
+
+    /**
+     * The boundary, which separates the various parts.
+     */
+    private byte[] multiPartBoundary;
+
+    /**
+     * The item, which we currently process.
+     */
+    private FileItemStreamImpl currentItem;
+
+    /**
+     * The current items field name.
+     */
+    private String currentFieldName;
+
+    /**
+     * Whether we are currently skipping the preamble.
+     */
+    private boolean skipPreamble;
+
+    /**
+     * Whether the current item may still be read.
+     */
+    private boolean itemValid;
+
+    /**
+     * Whether we have seen the end of the file.
+     */
+    private boolean eof;
+
+    /**
+     * Creates a new instance.
+     *
+     * @param pFileUploadBase Upload instance
+     * @param pRequestContext The request context.
+     * @throws FileUploadException An error occurred while
+     *   parsing the request.
+     * @throws IOException An I/O error occurred.
+     */
+    public FileItemIteratorImpl(FileUploadBase pFileUploadBase, RequestContext pRequestContext)
+            throws FileUploadException, IOException {
+        fileUploadBase = pFileUploadBase;
+        sizeMax = fileUploadBase.getSizeMax();
+        fileSizeMax = fileUploadBase.getFileSizeMax();
+        ctx = pRequestContext;
+        if (ctx == null) {
+            throw new NullPointerException("ctx parameter");
+        }
+
+
+        skipPreamble = true;
+        findNextItem();
+    }
+
+    protected void init(FileUploadBase fileUploadBase, @SuppressWarnings("unused") RequestContext pRequestContext)
+            throws FileUploadException, IOException {
+        String contentType = ctx.getContentType();
+        if ((null == contentType)
+                || (!contentType.toLowerCase(Locale.ENGLISH).startsWith(FileUploadBase.MULTIPART))) {
+            throw new InvalidContentTypeException(
+                    String.format("the request doesn't contain a %s or %s stream, content type header is %s",
+                           FileUploadBase.MULTIPART_FORM_DATA, FileUploadBase.MULTIPART_MIXED, contentType));
+        }
+
+        final long requestSize = ((UploadContext) ctx).contentLength();
+
+        InputStream input; // N.B. this is eventually closed in MultipartStream processing
+        if (sizeMax >= 0) {
+            if (requestSize != -1 && requestSize > sizeMax) {
+                throw new SizeLimitExceededException(
+                    String.format("the request was rejected because its size (%s) exceeds the configured maximum (%s)",
+                            Long.valueOf(requestSize), Long.valueOf(sizeMax)),
+                           requestSize, sizeMax);
+            }
+            // N.B. this is eventually closed in MultipartStream processing
+            input = new LimitedInputStream(ctx.getInputStream(), sizeMax) {
+                @Override
+                protected void raiseError(long pSizeMax, long pCount)
+                        throws IOException {
+                    FileUploadException ex = new SizeLimitExceededException(
+                    String.format("the request was rejected because its size (%s) exceeds the configured maximum (%s)",
+                            Long.valueOf(pCount), Long.valueOf(pSizeMax)),
+                           pCount, pSizeMax);
+                    throw new FileUploadIOException(ex);
+                }
+            };
+        } else {
+            input = ctx.getInputStream();
+        }
+
+        String charEncoding = fileUploadBase.getHeaderEncoding();
+        if (charEncoding == null) {
+            charEncoding = ctx.getCharacterEncoding();
+        }
+
+        multiPartBoundary = fileUploadBase.getBoundary(contentType);
+        if (multiPartBoundary == null) {
+            IOUtils.closeQuietly(input); // avoid possible resource leak
+            throw new FileUploadException("the request was rejected because no multipart boundary was found");
+        }
+
+        progressNotifier = new MultipartStream.ProgressNotifier(fileUploadBase.getProgressListener(), requestSize);
+        try {
+            multiPartStream = new MultipartStream(input, multiPartBoundary, progressNotifier);
+        } catch (IllegalArgumentException iae) {
+            IOUtils.closeQuietly(input); // avoid possible resource leak
+            throw new InvalidContentTypeException(
+                    String.format("The boundary specified in the %s header is too long", FileUploadBase.CONTENT_TYPE), iae);
+        }
+        multiPartStream.setHeaderEncoding(charEncoding);
+    }
+
+    public MultipartStream getMultiPartStream() throws FileUploadException, IOException {
+        if (multiPartStream == null) {
+            init(fileUploadBase, ctx);
+        }
+        return multiPartStream;
+    }
+
+    /**
+     * Called for finding the next item, if any.
+     *
+     * @return True, if an next item was found, otherwise false.
+     * @throws IOException An I/O error occurred.
+     */
+    private boolean findNextItem() throws FileUploadException, IOException {
+        if (eof) {
+            return false;
+        }
+        if (currentItem != null) {
+            currentItem.close();
+            currentItem = null;
+        }
+        final MultipartStream multi = getMultiPartStream();
+        for (;;) {
+            boolean nextPart;
+            if (skipPreamble) {
+                nextPart = multi.skipPreamble();
+            } else {
+                nextPart = multi.readBoundary();
+            }
+            if (!nextPart) {
+                if (currentFieldName == null) {
+                    // Outer multipart terminated -> No more data
+                    eof = true;
+                    return false;
+                }
+                // Inner multipart terminated -> Return to parsing the outer
+                multi.setBoundary(multiPartBoundary);
+                currentFieldName = null;
+                continue;
+            }
+            FileItemHeaders headers = fileUploadBase.getParsedHeaders(multi.readHeaders());
+            if (currentFieldName == null) {
+                // We're parsing the outer multipart
+                String fieldName = fileUploadBase.getFieldName(headers);
+                if (fieldName != null) {
+                    String subContentType = headers.getHeader(FileUploadBase.CONTENT_TYPE);
+                    if (subContentType != null
+                            &&  subContentType.toLowerCase(Locale.ENGLISH)
+                                    .startsWith(FileUploadBase.MULTIPART_MIXED)) {
+                        currentFieldName = fieldName;
+                        // Multiple files associated with this field name
+                        byte[] subBoundary = fileUploadBase.getBoundary(subContentType);
+                        multi.setBoundary(subBoundary);
+                        skipPreamble = true;
+                        continue;
+                    }
+                    String fileName = fileUploadBase.getFileName(headers);
+                    currentItem = new FileItemStreamImpl(this, fileName,
+                            fieldName, headers.getHeader(FileUploadBase.CONTENT_TYPE),
+                            fileName == null, getContentLength(headers));
+                    currentItem.setHeaders(headers);
+                    progressNotifier.noteItem();
+                    itemValid = true;
+                    return true;
+                }
+            } else {
+                String fileName = fileUploadBase.getFileName(headers);
+                if (fileName != null) {
+                    currentItem = new FileItemStreamImpl(this, fileName,
+                            currentFieldName,
+                            headers.getHeader(FileUploadBase.CONTENT_TYPE),
+                            false, getContentLength(headers));
+                    currentItem.setHeaders(headers);
+                    progressNotifier.noteItem();
+                    itemValid = true;
+                    return true;
+                }
+            }
+            multi.discardBodyData();
+        }
+    }
+
+    private long getContentLength(FileItemHeaders pHeaders) {
+        try {
+            return Long.parseLong(pHeaders.getHeader(FileUploadBase.CONTENT_LENGTH));
+        } catch (Exception e) {
+            return -1;
+        }
+    }
+
+    /**
+     * Returns, whether another instance of {@link FileItemStream}
+     * is available.
+     *
+     * @throws FileUploadException Parsing or processing the
+     *   file item failed.
+     * @throws IOException Reading the file item failed.
+     * @return True, if one or more additional file items
+     *   are available, otherwise false.
+     */
+    @Override
+    public boolean hasNext() throws FileUploadException, IOException {
+        if (eof) {
+            return false;
+        }
+        if (itemValid) {
+            return true;
+        }
+        try {
+            return findNextItem();
+        } catch (FileUploadIOException e) {
+            // unwrap encapsulated SizeException
+            throw (FileUploadException) e.getCause();
+        }
+    }
+
+    /**
+     * Returns the next available {@link FileItemStream}.
+     *
+     * @throws java.util.NoSuchElementException No more items are
+     *   available. Use {@link #hasNext()} to prevent this exception.
+     * @throws FileUploadException Parsing or processing the
+     *   file item failed.
+     * @throws IOException Reading the file item failed.
+     * @return FileItemStream instance, which provides
+     *   access to the next file item.
+     */
+    @Override
+    public FileItemStream next() throws FileUploadException, IOException {
+        if (eof  ||  (!itemValid && !hasNext())) {
+            throw new NoSuchElementException();
+        }
+        itemValid = false;
+        return currentItem;
+    }
+
+    @Override
+    public List<FileItem> getFileItems() throws FileUploadException, IOException {
+        final List<FileItem> items = new ArrayList<>();
+        while (hasNext()) {
+            final FileItemStream fis = next();
+            final FileItem fi = fileUploadBase.getFileItemFactory().createItem(fis.getFieldName(), fis.getContentType(), fis.isFormField(), fis.getName());
+            items.add(fi);
+        }
+        return items;
+    }
+
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/FileItemStreamImpl.java b/java/org/apache/tomcat/util/http/fileupload/impl/FileItemStreamImpl.java
index 40dadf4..06bf33e 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/FileItemStreamImpl.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/FileItemStreamImpl.java
@@ -1,213 +1,213 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-import java.io.IOException;

-import java.io.InputStream;

-

-import org.apache.tomcat.util.http.fileupload.FileItemHeaders;

-import org.apache.tomcat.util.http.fileupload.FileItemStream;

-import org.apache.tomcat.util.http.fileupload.FileUploadException;

-import org.apache.tomcat.util.http.fileupload.InvalidFileNameException;

-import org.apache.tomcat.util.http.fileupload.MultipartStream.ItemInputStream;

-import org.apache.tomcat.util.http.fileupload.util.Closeable;

-import org.apache.tomcat.util.http.fileupload.util.LimitedInputStream;

-import org.apache.tomcat.util.http.fileupload.util.Streams;

-

-

-/**

- * Default implementation of {@link FileItemStream}.

- */

-public class FileItemStreamImpl implements FileItemStream {

-    private final FileItemIteratorImpl fileItemIteratorImpl;

-

-    /**

-     * The file items content type.

-     */

-    private final String contentType;

-

-    /**

-     * The file items field name.

-     */

-    private final String fieldName;

-

-    /**

-     * The file items file name.

-     */

-    final String name;

-

-    /**

-     * Whether the file item is a form field.

-     */

-    private final boolean formField;

-

-    /**

-     * The file items input stream.

-     */

-    private final InputStream stream;

-

-    /**

-     * The headers, if any.

-     */

-    private FileItemHeaders headers;

-

-    /**

-     * Creates a new instance.

-     * @param pFileItemIterator Iterator for all files in this upload

-     * @param pName The items file name, or null.

-     * @param pFieldName The items field name.

-     * @param pContentType The items content type, or null.

-     * @param pFormField Whether the item is a form field.

-     * @param pContentLength The items content length, if known, or -1

-     * @throws FileUploadException If an error is encountered processing the request

-     * @throws IOException Creating the file item failed.

-     */

-    public FileItemStreamImpl(FileItemIteratorImpl pFileItemIterator, String pName, String pFieldName,

-            String pContentType, boolean pFormField,

-            long pContentLength) throws FileUploadException, IOException {

-        fileItemIteratorImpl = pFileItemIterator;

-        name = pName;

-        fieldName = pFieldName;

-        contentType = pContentType;

-        formField = pFormField;

-        final long fileSizeMax = fileItemIteratorImpl.getFileSizeMax();

-        if (fileSizeMax != -1) { // Check if limit is already exceeded

-            if (pContentLength != -1

-                    && pContentLength > fileSizeMax) {

-                FileSizeLimitExceededException e =

-                        new FileSizeLimitExceededException(

-                                String.format("The field %s exceeds its maximum permitted size of %s bytes.",

-                                        fieldName, Long.valueOf(fileSizeMax)),

-                                pContentLength, fileSizeMax);

-                e.setFileName(pName);

-                e.setFieldName(pFieldName);

-                throw new FileUploadIOException(e);

-            }

-        }

-        // OK to construct stream now

-        final ItemInputStream itemStream = fileItemIteratorImpl.getMultiPartStream().newInputStream();

-        InputStream istream = itemStream;

-        if (fileSizeMax != -1) {

-            istream = new LimitedInputStream(istream, fileSizeMax) {

-                @Override

-                protected void raiseError(long pSizeMax, long pCount)

-                        throws IOException {

-                    itemStream.close(true);

-                    FileSizeLimitExceededException e =

-                        new FileSizeLimitExceededException(

-                            String.format("The field %s exceeds its maximum permitted size of %s bytes.",

-                                   fieldName, Long.valueOf(pSizeMax)),

-                            pCount, pSizeMax);

-                    e.setFieldName(fieldName);

-                    e.setFileName(name);

-                    throw new FileUploadIOException(e);

-                }

-            };

-        }

-        stream = istream;

-    }

-

-    /**

-     * Returns the items content type, or null.

-     *

-     * @return Content type, if known, or null.

-     */

-    @Override

-    public String getContentType() {

-        return contentType;

-    }

-

-    /**

-     * Returns the items field name.

-     *

-     * @return Field name.

-     */

-    @Override

-    public String getFieldName() {

-        return fieldName;

-    }

-

-    /**

-     * Returns the items file name.

-     *

-     * @return File name, if known, or null.

-     * @throws InvalidFileNameException The file name contains a NUL character,

-     *   which might be an indicator of a security attack. If you intend to

-     *   use the file name anyways, catch the exception and use

-     *   InvalidFileNameException#getName().

-     */

-    @Override

-    public String getName() {

-        return Streams.checkFileName(name);

-    }

-

-    /**

-     * Returns, whether this is a form field.

-     *

-     * @return True, if the item is a form field,

-     *   otherwise false.

-     */

-    @Override

-    public boolean isFormField() {

-        return formField;

-    }

-

-    /**

-     * Returns an input stream, which may be used to

-     * read the items contents.

-     *

-     * @return Opened input stream.

-     * @throws IOException An I/O error occurred.

-     */

-    @Override

-    public InputStream openStream() throws IOException {

-        if (((Closeable) stream).isClosed()) {

-            throw new FileItemStream.ItemSkippedException();

-        }

-        return stream;

-    }

-

-    /**

-     * Closes the file item.

-     *

-     * @throws IOException An I/O error occurred.

-     */

-    public void close() throws IOException {

-        stream.close();

-    }

-

-    /**

-     * Returns the file item headers.

-     *

-     * @return The items header object

-     */

-    @Override

-    public FileItemHeaders getHeaders() {

-        return headers;

-    }

-

-    /**

-     * Sets the file item headers.

-     *

-     * @param pHeaders The items header object

-     */

-    @Override

-    public void setHeaders(FileItemHeaders pHeaders) {

-        headers = pHeaders;

-    }

-

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.tomcat.util.http.fileupload.FileItemHeaders;
+import org.apache.tomcat.util.http.fileupload.FileItemStream;
+import org.apache.tomcat.util.http.fileupload.FileUploadException;
+import org.apache.tomcat.util.http.fileupload.InvalidFileNameException;
+import org.apache.tomcat.util.http.fileupload.MultipartStream.ItemInputStream;
+import org.apache.tomcat.util.http.fileupload.util.Closeable;
+import org.apache.tomcat.util.http.fileupload.util.LimitedInputStream;
+import org.apache.tomcat.util.http.fileupload.util.Streams;
+
+
+/**
+ * Default implementation of {@link FileItemStream}.
+ */
+public class FileItemStreamImpl implements FileItemStream {
+    private final FileItemIteratorImpl fileItemIteratorImpl;
+
+    /**
+     * The file items content type.
+     */
+    private final String contentType;
+
+    /**
+     * The file items field name.
+     */
+    private final String fieldName;
+
+    /**
+     * The file items file name.
+     */
+    final String name;
+
+    /**
+     * Whether the file item is a form field.
+     */
+    private final boolean formField;
+
+    /**
+     * The file items input stream.
+     */
+    private final InputStream stream;
+
+    /**
+     * The headers, if any.
+     */
+    private FileItemHeaders headers;
+
+    /**
+     * Creates a new instance.
+     * @param pFileItemIterator Iterator for all files in this upload
+     * @param pName The items file name, or null.
+     * @param pFieldName The items field name.
+     * @param pContentType The items content type, or null.
+     * @param pFormField Whether the item is a form field.
+     * @param pContentLength The items content length, if known, or -1
+     * @throws FileUploadException If an error is encountered processing the request
+     * @throws IOException Creating the file item failed.
+     */
+    public FileItemStreamImpl(FileItemIteratorImpl pFileItemIterator, String pName, String pFieldName,
+            String pContentType, boolean pFormField,
+            long pContentLength) throws FileUploadException, IOException {
+        fileItemIteratorImpl = pFileItemIterator;
+        name = pName;
+        fieldName = pFieldName;
+        contentType = pContentType;
+        formField = pFormField;
+        final long fileSizeMax = fileItemIteratorImpl.getFileSizeMax();
+        if (fileSizeMax != -1) { // Check if limit is already exceeded
+            if (pContentLength != -1
+                    && pContentLength > fileSizeMax) {
+                FileSizeLimitExceededException e =
+                        new FileSizeLimitExceededException(
+                                String.format("The field %s exceeds its maximum permitted size of %s bytes.",
+                                        fieldName, Long.valueOf(fileSizeMax)),
+                                pContentLength, fileSizeMax);
+                e.setFileName(pName);
+                e.setFieldName(pFieldName);
+                throw new FileUploadIOException(e);
+            }
+        }
+        // OK to construct stream now
+        final ItemInputStream itemStream = fileItemIteratorImpl.getMultiPartStream().newInputStream();
+        InputStream istream = itemStream;
+        if (fileSizeMax != -1) {
+            istream = new LimitedInputStream(istream, fileSizeMax) {
+                @Override
+                protected void raiseError(long pSizeMax, long pCount)
+                        throws IOException {
+                    itemStream.close(true);
+                    FileSizeLimitExceededException e =
+                        new FileSizeLimitExceededException(
+                            String.format("The field %s exceeds its maximum permitted size of %s bytes.",
+                                   fieldName, Long.valueOf(pSizeMax)),
+                            pCount, pSizeMax);
+                    e.setFieldName(fieldName);
+                    e.setFileName(name);
+                    throw new FileUploadIOException(e);
+                }
+            };
+        }
+        stream = istream;
+    }
+
+    /**
+     * Returns the items content type, or null.
+     *
+     * @return Content type, if known, or null.
+     */
+    @Override
+    public String getContentType() {
+        return contentType;
+    }
+
+    /**
+     * Returns the items field name.
+     *
+     * @return Field name.
+     */
+    @Override
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    /**
+     * Returns the items file name.
+     *
+     * @return File name, if known, or null.
+     * @throws InvalidFileNameException The file name contains a NUL character,
+     *   which might be an indicator of a security attack. If you intend to
+     *   use the file name anyways, catch the exception and use
+     *   InvalidFileNameException#getName().
+     */
+    @Override
+    public String getName() {
+        return Streams.checkFileName(name);
+    }
+
+    /**
+     * Returns, whether this is a form field.
+     *
+     * @return True, if the item is a form field,
+     *   otherwise false.
+     */
+    @Override
+    public boolean isFormField() {
+        return formField;
+    }
+
+    /**
+     * Returns an input stream, which may be used to
+     * read the items contents.
+     *
+     * @return Opened input stream.
+     * @throws IOException An I/O error occurred.
+     */
+    @Override
+    public InputStream openStream() throws IOException {
+        if (((Closeable) stream).isClosed()) {
+            throw new FileItemStream.ItemSkippedException();
+        }
+        return stream;
+    }
+
+    /**
+     * Closes the file item.
+     *
+     * @throws IOException An I/O error occurred.
+     */
+    public void close() throws IOException {
+        stream.close();
+    }
+
+    /**
+     * Returns the file item headers.
+     *
+     * @return The items header object
+     */
+    @Override
+    public FileItemHeaders getHeaders() {
+        return headers;
+    }
+
+    /**
+     * Sets the file item headers.
+     *
+     * @param pHeaders The items header object
+     */
+    @Override
+    public void setHeaders(FileItemHeaders pHeaders) {
+        headers = pHeaders;
+    }
+
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/FileSizeLimitExceededException.java b/java/org/apache/tomcat/util/http/fileupload/impl/FileSizeLimitExceededException.java
index 748f343..3eaa9d8 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/FileSizeLimitExceededException.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/FileSizeLimitExceededException.java
@@ -1,94 +1,94 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-/**

- * Thrown to indicate that A files size exceeds the configured maximum.

- */

-public class FileSizeLimitExceededException

-        extends SizeException {

-

-    /**

-     * The exceptions UID, for serializing an instance.

-     */

-    private static final long serialVersionUID = 8150776562029630058L;

-

-    /**

-     * File name of the item, which caused the exception.

-     */

-    private String fileName;

-

-    /**

-     * Field name of the item, which caused the exception.

-     */

-    private String fieldName;

-

-    /**

-     * Constructs a <code>SizeExceededException</code> with

-     * the specified detail message, and actual and permitted sizes.

-     *

-     * @param message   The detail message.

-     * @param actual    The actual request size.

-     * @param permitted The maximum permitted request size.

-     */

-    public FileSizeLimitExceededException(String message, long actual,

-            long permitted) {

-        super(message, actual, permitted);

-    }

-

-    /**

-     * Returns the file name of the item, which caused the

-     * exception.

-     *

-     * @return File name, if known, or null.

-     */

-    public String getFileName() {

-        return fileName;

-    }

-

-    /**

-     * Sets the file name of the item, which caused the

-     * exception.

-     *

-     * @param pFileName the file name of the item, which caused the exception.

-     */

-    public void setFileName(String pFileName) {

-        fileName = pFileName;

-    }

-

-    /**

-     * Returns the field name of the item, which caused the

-     * exception.

-     *

-     * @return Field name, if known, or null.

-     */

-    public String getFieldName() {

-        return fieldName;

-    }

-

-    /**

-     * Sets the field name of the item, which caused the

-     * exception.

-     *

-     * @param pFieldName the field name of the item,

-     *        which caused the exception.

-     */

-    public void setFieldName(String pFieldName) {

-        fieldName = pFieldName;

-    }

-

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+/**
+ * Thrown to indicate that A files size exceeds the configured maximum.
+ */
+public class FileSizeLimitExceededException
+        extends SizeException {
+
+    /**
+     * The exceptions UID, for serializing an instance.
+     */
+    private static final long serialVersionUID = 8150776562029630058L;
+
+    /**
+     * File name of the item, which caused the exception.
+     */
+    private String fileName;
+
+    /**
+     * Field name of the item, which caused the exception.
+     */
+    private String fieldName;
+
+    /**
+     * Constructs a <code>SizeExceededException</code> with
+     * the specified detail message, and actual and permitted sizes.
+     *
+     * @param message   The detail message.
+     * @param actual    The actual request size.
+     * @param permitted The maximum permitted request size.
+     */
+    public FileSizeLimitExceededException(String message, long actual,
+            long permitted) {
+        super(message, actual, permitted);
+    }
+
+    /**
+     * Returns the file name of the item, which caused the
+     * exception.
+     *
+     * @return File name, if known, or null.
+     */
+    public String getFileName() {
+        return fileName;
+    }
+
+    /**
+     * Sets the file name of the item, which caused the
+     * exception.
+     *
+     * @param pFileName the file name of the item, which caused the exception.
+     */
+    public void setFileName(String pFileName) {
+        fileName = pFileName;
+    }
+
+    /**
+     * Returns the field name of the item, which caused the
+     * exception.
+     *
+     * @return Field name, if known, or null.
+     */
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    /**
+     * Sets the field name of the item, which caused the
+     * exception.
+     *
+     * @param pFieldName the field name of the item,
+     *        which caused the exception.
+     */
+    public void setFieldName(String pFieldName) {
+        fieldName = pFieldName;
+    }
+
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/FileUploadIOException.java b/java/org/apache/tomcat/util/http/fileupload/impl/FileUploadIOException.java
index 305378a..3e71b5c 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/FileUploadIOException.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/FileUploadIOException.java
@@ -1,63 +1,63 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-import java.io.IOException;

-

-import org.apache.tomcat.util.http.fileupload.FileUploadException;

-

-/**

- * This exception is thrown for hiding an inner

- * {@link FileUploadException} in an {@link IOException}.

- */

-public class FileUploadIOException extends IOException {

-

-    /**

-     * The exceptions UID, for serializing an instance.

-     */

-    private static final long serialVersionUID = -7047616958165584154L;

-

-    /**

-     * The exceptions cause; we overwrite the parent

-     * classes field, which is available since Java

-     * 1.4 only.

-     */

-    private final FileUploadException cause;

-

-    /**

-     * Creates a <code>FileUploadIOException</code> with the

-     * given cause.

-     *

-     * @param pCause The exceptions cause, if any, or null.

-     */

-    public FileUploadIOException(FileUploadException pCause) {

-        // We're not doing super(pCause) cause of 1.3 compatibility.

-        cause = pCause;

-    }

-

-    /**

-     * Returns the exceptions cause.

-     *

-     * @return The exceptions cause, if any, or null.

-     */

-    @SuppressWarnings("sync-override") // Field is final

-    @Override

-    public Throwable getCause() {

-        return cause;

-    }

-

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+import java.io.IOException;
+
+import org.apache.tomcat.util.http.fileupload.FileUploadException;
+
+/**
+ * This exception is thrown for hiding an inner
+ * {@link FileUploadException} in an {@link IOException}.
+ */
+public class FileUploadIOException extends IOException {
+
+    /**
+     * The exceptions UID, for serializing an instance.
+     */
+    private static final long serialVersionUID = -7047616958165584154L;
+
+    /**
+     * The exceptions cause; we overwrite the parent
+     * classes field, which is available since Java
+     * 1.4 only.
+     */
+    private final FileUploadException cause;
+
+    /**
+     * Creates a <code>FileUploadIOException</code> with the
+     * given cause.
+     *
+     * @param pCause The exceptions cause, if any, or null.
+     */
+    public FileUploadIOException(FileUploadException pCause) {
+        // We're not doing super(pCause) cause of 1.3 compatibility.
+        cause = pCause;
+    }
+
+    /**
+     * Returns the exceptions cause.
+     *
+     * @return The exceptions cause, if any, or null.
+     */
+    @SuppressWarnings("sync-override") // Field is final
+    @Override
+    public Throwable getCause() {
+        return cause;
+    }
+
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/IOFileUploadException.java b/java/org/apache/tomcat/util/http/fileupload/impl/IOFileUploadException.java
index ad141e5..90f259d 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/IOFileUploadException.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/IOFileUploadException.java
@@ -1,62 +1,62 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-import java.io.IOException;

-

-import org.apache.tomcat.util.http.fileupload.FileUploadException;

-

-/**

- * Thrown to indicate an IOException.

- */

-public class IOFileUploadException extends FileUploadException {

-

-    /**

-     * The exceptions UID, for serializing an instance.

-     */

-    private static final long serialVersionUID = 1749796615868477269L;

-

-    /**

-     * The exceptions cause; we overwrite the parent

-     * classes field, which is available since Java

-     * 1.4 only.

-     */

-    private final IOException cause;

-

-    /**

-     * Creates a new instance with the given cause.

-     *

-     * @param pMsg The detail message.

-     * @param pException The exceptions cause.

-     */

-    public IOFileUploadException(String pMsg, IOException pException) {

-        super(pMsg);

-        cause = pException;

-    }

-

-    /**

-     * Returns the exceptions cause.

-     *

-     * @return The exceptions cause, if any, or null.

-     */

-    @SuppressWarnings("sync-override") // Field is final

-    @Override

-    public Throwable getCause() {

-        return cause;

-    }

-

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+import java.io.IOException;
+
+import org.apache.tomcat.util.http.fileupload.FileUploadException;
+
+/**
+ * Thrown to indicate an IOException.
+ */
+public class IOFileUploadException extends FileUploadException {
+
+    /**
+     * The exceptions UID, for serializing an instance.
+     */
+    private static final long serialVersionUID = 1749796615868477269L;
+
+    /**
+     * The exceptions cause; we overwrite the parent
+     * classes field, which is available since Java
+     * 1.4 only.
+     */
+    private final IOException cause;
+
+    /**
+     * Creates a new instance with the given cause.
+     *
+     * @param pMsg The detail message.
+     * @param pException The exceptions cause.
+     */
+    public IOFileUploadException(String pMsg, IOException pException) {
+        super(pMsg);
+        cause = pException;
+    }
+
+    /**
+     * Returns the exceptions cause.
+     *
+     * @return The exceptions cause, if any, or null.
+     */
+    @SuppressWarnings("sync-override") // Field is final
+    @Override
+    public Throwable getCause() {
+        return cause;
+    }
+
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/InvalidContentTypeException.java b/java/org/apache/tomcat/util/http/fileupload/impl/InvalidContentTypeException.java
index 124f002..295597b 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/InvalidContentTypeException.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/InvalidContentTypeException.java
@@ -1,62 +1,62 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-import org.apache.tomcat.util.http.fileupload.FileUploadException;

-

-/**

- * Thrown to indicate that the request is not a multipart request.

- */

-public class InvalidContentTypeException

-        extends FileUploadException {

-

-    /**

-     * The exceptions UID, for serializing an instance.

-     */

-    private static final long serialVersionUID = -9073026332015646668L;

-

-    /**

-     * Constructs a <code>InvalidContentTypeException</code> with no

-     * detail message.

-     */

-    public InvalidContentTypeException() {

-        super();

-    }

-

-    /**

-     * Constructs an <code>InvalidContentTypeException</code> with

-     * the specified detail message.

-     *

-     * @param message The detail message.

-     */

-    public InvalidContentTypeException(String message) {

-        super(message);

-    }

-

-    /**

-     * Constructs an <code>InvalidContentTypeException</code> with

-     * the specified detail message and cause.

-     *

-     * @param msg The detail message.

-     * @param cause the original cause

-     *

-     * @since 1.3.1

-     */

-    public InvalidContentTypeException(String msg, Throwable cause) {

-        super(msg, cause);

-    }

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+import org.apache.tomcat.util.http.fileupload.FileUploadException;
+
+/**
+ * Thrown to indicate that the request is not a multipart request.
+ */
+public class InvalidContentTypeException
+        extends FileUploadException {
+
+    /**
+     * The exceptions UID, for serializing an instance.
+     */
+    private static final long serialVersionUID = -9073026332015646668L;
+
+    /**
+     * Constructs a <code>InvalidContentTypeException</code> with no
+     * detail message.
+     */
+    public InvalidContentTypeException() {
+        super();
+    }
+
+    /**
+     * Constructs an <code>InvalidContentTypeException</code> with
+     * the specified detail message.
+     *
+     * @param message The detail message.
+     */
+    public InvalidContentTypeException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs an <code>InvalidContentTypeException</code> with
+     * the specified detail message and cause.
+     *
+     * @param msg The detail message.
+     * @param cause the original cause
+     *
+     * @since 1.3.1
+     */
+    public InvalidContentTypeException(String msg, Throwable cause) {
+        super(msg, cause);
+    }
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/SizeException.java b/java/org/apache/tomcat/util/http/fileupload/impl/SizeException.java
index 09429ad..7928f2d 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/SizeException.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/SizeException.java
@@ -1,75 +1,75 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-import org.apache.tomcat.util.http.fileupload.FileUploadException;

-

-/**

- * This exception is thrown, if a requests permitted size

- * is exceeded.

- */

-public abstract class SizeException extends FileUploadException {

-

-    /**

-     * Serial version UID, being used, if serialized.

-     */

-    private static final long serialVersionUID = -8776225574705254126L;

-

-    /**

-     * The actual size of the request.

-     */

-    private final long actual;

-

-    /**

-     * The maximum permitted size of the request.

-     */

-    private final long permitted;

-

-    /**

-     * Creates a new instance.

-     *

-     * @param message The detail message.

-     * @param actual The actual number of bytes in the request.

-     * @param permitted The requests size limit, in bytes.

-     */

-    protected SizeException(String message, long actual, long permitted) {

-        super(message);

-        this.actual = actual;

-        this.permitted = permitted;

-    }

-

-    /**

-     * Retrieves the actual size of the request.

-     *

-     * @return The actual size of the request.

-     * @since 1.3

-     */

-    public long getActualSize() {

-        return actual;

-    }

-

-    /**

-     * Retrieves the permitted size of the request.

-     *

-     * @return The permitted size of the request.

-     * @since 1.3

-     */

-    public long getPermittedSize() {

-        return permitted;

-    }

-

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+import org.apache.tomcat.util.http.fileupload.FileUploadException;
+
+/**
+ * This exception is thrown, if a requests permitted size
+ * is exceeded.
+ */
+public abstract class SizeException extends FileUploadException {
+
+    /**
+     * Serial version UID, being used, if serialized.
+     */
+    private static final long serialVersionUID = -8776225574705254126L;
+
+    /**
+     * The actual size of the request.
+     */
+    private final long actual;
+
+    /**
+     * The maximum permitted size of the request.
+     */
+    private final long permitted;
+
+    /**
+     * Creates a new instance.
+     *
+     * @param message The detail message.
+     * @param actual The actual number of bytes in the request.
+     * @param permitted The requests size limit, in bytes.
+     */
+    protected SizeException(String message, long actual, long permitted) {
+        super(message);
+        this.actual = actual;
+        this.permitted = permitted;
+    }
+
+    /**
+     * Retrieves the actual size of the request.
+     *
+     * @return The actual size of the request.
+     * @since 1.3
+     */
+    public long getActualSize() {
+        return actual;
+    }
+
+    /**
+     * Retrieves the permitted size of the request.
+     *
+     * @return The permitted size of the request.
+     * @since 1.3
+     */
+    public long getPermittedSize() {
+        return permitted;
+    }
+
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/http/fileupload/impl/SizeLimitExceededException.java b/java/org/apache/tomcat/util/http/fileupload/impl/SizeLimitExceededException.java
index 0b6a7a9..668e99b 100644
--- a/java/org/apache/tomcat/util/http/fileupload/impl/SizeLimitExceededException.java
+++ b/java/org/apache/tomcat/util/http/fileupload/impl/SizeLimitExceededException.java
@@ -1,43 +1,43 @@
-/*

- * 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.tomcat.util.http.fileupload.impl;

-

-/**

- * Thrown to indicate that the request size exceeds the configured maximum.

- */

-public class SizeLimitExceededException

-        extends SizeException {

-

-    /**

-     * The exceptions UID, for serializing an instance.

-     */

-    private static final long serialVersionUID = -2474893167098052828L;

-

-    /**

-     * Constructs a <code>SizeExceededException</code> with

-     * the specified detail message, and actual and permitted sizes.

-     *

-     * @param message   The detail message.

-     * @param actual    The actual request size.

-     * @param permitted The maximum permitted request size.

-     */

-    public SizeLimitExceededException(String message, long actual,

-            long permitted) {

-        super(message, actual, permitted);

-    }

-

+/*
+ * 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.tomcat.util.http.fileupload.impl;
+
+/**
+ * Thrown to indicate that the request size exceeds the configured maximum.
+ */
+public class SizeLimitExceededException
+        extends SizeException {
+
+    /**
+     * The exceptions UID, for serializing an instance.
+     */
+    private static final long serialVersionUID = -2474893167098052828L;
+
+    /**
+     * Constructs a <code>SizeExceededException</code> with
+     * the specified detail message, and actual and permitted sizes.
+     *
+     * @param message   The detail message.
+     * @param actual    The actual request size.
+     * @param permitted The maximum permitted request size.
+     */
+    public SizeLimitExceededException(String message, long actual,
+            long permitted) {
+        super(message, actual, permitted);
+    }
+
 }
\ No newline at end of file