readline arbitrary length