Sorry for the multiple changes!
-Matt
--- [EMAIL PROTECTED] wrote:

> mbenson     2005/03/04 14:29:32
> 
>   Modified:    src/main/org/apache/tools/ant/filters
> FixCrLfFilter.java
>   Log:
>   1. Remove unused private inner class.
>   2. Fix loop introduced by a seemingly innocent
> logic change :(
>   3. Fix bug that caused extra EOFs when input
> already contained EOF.
>   4. Make instances constructed with a Reader
> usable.
>   
>   Revision  Changes    Path
>   1.3       +27 -37   
>
ant/src/main/org/apache/tools/ant/filters/FixCrLfFilter.java
>   
>   Index: FixCrLfFilter.java
>  
>
===================================================================
>   RCS file:
>
/home/cvs/ant/src/main/org/apache/tools/ant/filters/FixCrLfFilter.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- FixCrLfFilter.java      4 Mar 2005 16:45:37 -0000
> 1.2
>   +++ FixCrLfFilter.java      4 Mar 2005 22:29:32 -0000
> 1.3
>   @@ -79,6 +79,7 @@
>        private AddAsisRemove tabs;
>        private boolean javafiles = false;
>        private boolean fixlast = true;
>   +    private boolean initialized = false;
>    
>        /**
>         * Constructor for "dummy" instances.
>   @@ -263,6 +264,7 @@
>            }
>            // Add missing EOF character
>            in = (ctrlz == AddAsisRemove.ADD) ? new
> AddEofFilter(in) : in;
>   +        initialized = true;
>         }
>    
>        /**
>   @@ -274,7 +276,10 @@
>         * @exception IOException if the underlying
> stream throws an IOException
>         * during reading.
>         */
>   -    public final int read() throws IOException {
>   +    public synchronized final int read() throws
> IOException {
>   +        if (!initialized) {
>   +            initInternalFilters();
>   +        }
>            return in.read();
>        }
>    
>   @@ -552,16 +557,24 @@
>    
>                if (normalizedEOL == 0) {
>                    int numEOL = 0;
>   - 
>   +                boolean atEnd = false;
>                    switch (thisChar) {
>                    case CTRLZ:
>   +                    int c = super.read();
>   +                    if (c == -1) {
>   +                        atEnd = true;
>   +                        if (fixLast &&
> !previousWasEOL) {
>   +                            numEOL = 1;
>   +                            push(thisChar);
>   +                        }
>   +                    } else {
>   +                        push(c);
>   +                    }
>   +                    break;
>                    case -1:
>   +                    atEnd = true;
>                        if (fixLast &&
> !previousWasEOL) {
>                            numEOL = 1;
>   -
>   -                        if (thisChar == CTRLZ) {
>   -                            push(thisChar);
>   -                        }
>                        }
>                        break;
>                    case '\n':
>   @@ -595,7 +608,7 @@
>                        }
>                        previousWasEOL = true;
>                        thisChar = read();
>   -                } else if (thisChar != -1) {
>   +                } else if (!atEnd) {
>                        previousWasEOL = false;
>                    }
>                } else {
>   @@ -605,33 +618,6 @@
>            }
>        }
>    
>   -    private static class FixLastFilter extends
> SimpleFilterReader {
>   -        int lastChar = -1;
>   -        char[] eol = null;
>   -
>   -        public FixLastFilter(Reader in, String
> eolString) {
>   -            super(in);
>   -            eol = eolString.toCharArray();
>   -        }
>   -
>   -        public int read() throws IOException {
>   -            int thisChar = super.read();
>   -            // if source is EOF but last
> character was NOT eol, return eol
>   -            if (thisChar == -1) {
>   -                switch (lastChar) {
>   -                case '\r':
>   -                case '\n':
>   -                    // Return first character of
> EOL
>   -                    thisChar = eol[0];
>   -                    // Push remaining characters
> onto input stream
>   -                    push(eol, 1, eol.length - 1);
>   -                }
>   -            }
>   -            lastChar = thisChar;
>   -            return thisChar;
>   -        }
>   -    }
>   -
>        private static class AddEofFilter extends
> SimpleFilterReader {
>            int lastChar = -1;
>    
>   @@ -643,10 +629,14 @@
>                int thisChar = super.read();
>    
>                // if source is EOF but last
> character was NOT ctrl-z, return ctrl-z
>   -            if (thisChar == -1 && lastChar !=
> CTRLZ) {
>   -                thisChar = CTRLZ;
>   +            if (thisChar == -1) {
>   +                if (lastChar != CTRLZ) {
>   +                    lastChar = CTRLZ;
>   +                    return lastChar;
>   +                }
>   +            } else {
>   +                lastChar = thisChar;
>                }
>   -            lastChar = thisChar;
>                return thisChar;
>            }
>        }
>   
>   
>   
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 
> 



        
                
__________________________________ 
Celebrate Yahoo!'s 10th Birthday! 
Yahoo! Netrospective: 100 Moments of the Web 
http://birthday.yahoo.com/netrospective/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to