in main/src/main/java/org/apache/james/jdkim/canon/SimpleBodyCanonicalizer.java [41:76]
public void write(byte[] b, int off, int len) throws IOException {
if (len <= 0)
return;
if (DEEP_DEBUG)
System.out.println("I:(" + lastWasCR + "|" + countCRLF + ") ["
+ new String(b, off, len) + "]");
if (lastWasCR) {
if (len > 0 && b[off] == '\n') {
countCRLF++;
lastWasCR = false;
off++;
len--;
} else {
// TODO output the lone \r ? (this condition should never happen
// as we expect only CRLF in a compliant 7bit email.
out.write('\r');
lastWasCR = false;
}
}
int newCountCRLF = 0;
boolean newLastWasCR = false;
if (len >= 1 && b[off + len - 1] == '\r') {
newLastWasCR = true;
len--;
}
while (len >= 2 && b[off + len - 1] == '\n' && b[off + len - 2] == '\r') {
len -= 2;
newCountCRLF++;
}
if (len > 0) {
dumpCRLF();
out.write(b, off, len);
}
countCRLF += newCountCRLF;
lastWasCR = newLastWasCR;
}