/* * (c) 2000-2009 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved. * Licencia en license/bsd.txt / License in license/bsd.txt */ package eu.irreality.age; import java.io.*; class VersatileBufferedInputStream extends BufferedInputStream { public VersatileBufferedInputStream ( InputStream is ) { super ( is ); } public VersatileBufferedInputStream ( InputStream is , int bufsize ) { super ( is , bufsize ); } public String readLine() throws IOException { int temp_markpos = markpos; int temp_marklimit = marklimit; mark(marklimit+65536); int nbytes = 0; byte cur; while ( (cur=(byte)read()) != (byte)'\r' && cur != -1 ) { nbytes++; } if ( cur == -1 ) //disconnected throw new IOException("Apparently disconnected.\n"); nbytes++; //\r if ( read() == '\n' ) nbytes++; byte[] barr = new byte[nbytes]; reset(); int leido = 0; while ( leido < nbytes ) { leido += read ( barr , leido , nbytes-leido ); } String resultado; if ( barr[nbytes-1] == '\n' ) resultado = new String ( barr , 0 , nbytes-2 , "UTF-8" ); else resultado = new String ( barr , 0 , nbytes-1 , "UTF-8" ); markpos = temp_markpos; marklimit = temp_marklimit; return resultado; } }