public void write()

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;
    }