void Log (byte[] prefix, ref bool midline, byte[] buffer, int offset, int count)
{
int endIndex = offset + count;
int index = offset;
int start;
while (index < endIndex) {
start = index;
while (index < endIndex && buffer[index] != (byte) '\n')
index++;
if (!midline)
stream.Write (prefix, 0, prefix.Length);
if (index < endIndex && buffer[index] == (byte) '\n') {
midline = false;
index++;
} else {
midline = true;
}
stream.Write (buffer, start, index - start);
}
stream.Flush ();
}