private static string GetDiffTreeLine(TextReader reader)
{
var sb = new StringBuilder();
char[] block = new char[98];
var bytesRead = reader.ReadBlock(block, 0, 98);
if (bytesRead == 0)
{
return null;
}
else if (bytesRead != 98)
{
throw new Exception("Invalid input.");
}
var nullBytesLeft = 2;
if (block[97] == 'C' || block[97] == 'R')
{
nullBytesLeft = 3;
}
sb.Append(block);
while (nullBytesLeft > 0)
{
var currentByte = reader.Read();
if (currentByte == -1)
{
throw new Exception("Invalid input.");
}
else if (currentByte == 0)
{
nullBytesLeft--;
}
sb.Append((char)currentByte);
}
return sb.ToString();
}