/*******************************************************************************
* Gaggle is Copyright 2010 by Geeksville Industries LLC, a California limited liability corporation.
*
* Gaggle is distributed under a dual license. We've chosen this approach because within Gaggle we've used a number
* of components that Geeksville Industries LLC might reuse for commercial products. Gaggle can be distributed under
* either of the two licenses listed below.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* Commercial Distribution License
* If you would like to distribute Gaggle (or portions thereof) under a license other than
* the "GNU General Public License, version 2", contact Geeksville Industries. Geeksville Industries reserves
* the right to release Gaggle source code under a commercial license of its choice.
*
* GNU Public License, version 2
* All other distribution of Gaggle must conform to the terms of the GNU Public License, version 2. The full
* text of this license is included in the Gaggle source, see assets/manual/gpl-2.0.txt.
******************************************************************************/
package com.geeksville.io;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* Converts newlines to cr/lf or whatever line ending convention you want
*
* @author kevinh
*
*/
public class LineEndingStream extends FilterOutputStream {
public LineEndingStream(OutputStream out) {
super(out);
}
/*
* (non-Javadoc)
*
* @see java.io.FilterOutputStream#write(byte[], int, int)
*/
@Override
public void write(byte[] buffer, int offset, int count) throws IOException {
// Low performing but easy (FIXME)
for (int i = 0; i < count; i++)
write(buffer[offset + i]);
}
/*
* (non-Javadoc)
*
* @see java.io.FilterOutputStream#write(int)
*/
@Override
public void write(int oneByte) throws IOException {
if (oneByte == '\n') {
super.write('\r');
super.write('\n'); // cr/lf
} else
super.write(oneByte);
}
}