public bool ReadLineSegment(byte[] input) {
int c = -1;
bool eol = false;
int ptr = 0;
int len = input.Length;
// ssteward, pdftk-1.10, 040922:
// skip initial whitespace; added this because PdfReader.RebuildXref()
// assumes that line provided by readLineSegment does not have init. whitespace;
if ( ptr < len ) {
while ( IsWhitespace( (c = Read()) ) );
}
while ( !eol && ptr < len ) {
switch (c) {
case -1:
case '\n':
eol = true;
break;
case '\r':
eol = true;
int cur = FilePointer;
if ((Read()) != '\n') {
Seek(cur);
}
break;
default:
input[ptr++] = (byte)c;
break;
}
// break loop? do it before we Read() again
if ( eol || len <= ptr ) {
break;
}
else {
c = Read();
}
}
if (ptr >= len) {
eol = false;
while (!eol) {
switch (c = Read()) {
case -1:
case '\n':
eol = true;
break;
case '\r':
eol = true;
int cur = FilePointer;
if ((Read()) != '\n') {
Seek(cur);
}
break;
}
}
}
if ((c == -1) && (ptr == 0)) {
return false;
}
if (ptr + 2 <= len) {
input[ptr++] = (byte)' ';
input[ptr] = (byte)'X';
}
return true;
}