Changeset 11409


Ignore:
Timestamp:
11/30/08 23:05:51 (13 years ago)
Author:
ehuelsmann
Message:

End-of-line translation for generic streams.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/open-external-format/src/org/armedbear/lisp/Stream.java

    r11406 r11409  
    17611761        int n = reader.read();
    17621762        ++offset;
    1763         if (n == '\r')
    1764           {
    1765             if (interactive && Utilities.isPlatformWindows)
    1766               return _readChar();
    1767           }
    1768         if (n == '\n')
     1763        if (eolStyle == EolStyle.CRLF && n == '\r') {
     1764            n = _readChar();
     1765            if (n != '\n') {
     1766                _unreadChar(n);
     1767                return '\r';
     1768            }
     1769        }
     1770
     1771        if (n == eolChar) {
    17691772          ++lineNumber;
     1773          return '\n';
     1774        }
     1775
    17701776        return n;
    17711777      }
     
    17941800        reader.unread(n);
    17951801        --offset;
    1796         if (n == '\n')
     1802        if (n == eolChar)
    17971803          --lineNumber;
    17981804      }
     
    18421848    try
    18431849      {
    1844         writer.write(c);
    1845         if (c == '\n')
    1846           {
    1847             writer.flush();
    1848             charPos = 0;
    1849           }
    1850         else
     1850        if (c == '\n') {
     1851          if (eolStyle == EolStyle.CRLF)
     1852              writer.write('\r');
     1853          writer.write(eolChar);
     1854          writer.flush();
     1855          charPos = 0;
     1856        } else {
     1857          writer.write(c);
    18511858          ++charPos;
     1859        }
    18521860      }
    18531861    catch (NullPointerException e)
     
    18751883    try
    18761884      {
     1885        if (eolStyle != EolStyle.RAW) {
     1886          for (int i = start; i++ < end;)
     1887            //###FIXME: the number of writes can be greatly reduced by
     1888            // writing the space between newlines as chunks.
     1889            _writeChar(chars[i]);
     1890        }
     1891       
    18771892        writer.write(chars, start, end - start);
    18781893        int index = -1;
     
    19191934    try
    19201935      {
    1921         writer.write(s);
    1922         int index = s.lastIndexOf('\n');
    1923         if (index < 0)
    1924           charPos += s.length();
    1925         else
    1926           {
    1927             charPos = s.length() - (index + 1);
    1928             writer.flush();
    1929           }
     1936        for (int i = 0; i++ < s.length();)
     1937          //###FIXME: the number of writes can be greatly reduced by
     1938          // writing the space between newlines as chunks.
     1939          _writeChar(s.charAt(i));
    19301940      }
    19311941    catch (NullPointerException e)
     
    19351945        else
    19361946          throw e;
    1937       }
    1938     catch (IOException e)
    1939       {
    1940         error(new StreamError(this, e));
    19411947      }
    19421948  }
     
    19521958    try
    19531959      {
    1954         writer.write(s);
    1955         writer.write('\n');
    1956         writer.flush();
    1957         charPos = 0;
     1960        _writeString(s);
     1961        _writeChar('\n');
    19581962      }
    19591963    catch (NullPointerException e)
     
    19611965        // writer is null
    19621966        streamNotCharacterOutputStream();
    1963       }
    1964     catch (IOException e)
    1965       {
    1966         error(new StreamError(this, e));
    19671967      }
    19681968  }
Note: See TracChangeset for help on using the changeset viewer.