in main/src/main/java/org/apache/james/jdkim/canon/RelaxedBodyCanonicalizer.java [39:68]
public void write(byte[] buffer, int off, int len) throws IOException {
int start = off;
int end = len + off;
for (int k = off; k < end; k++) {
if (pendingSpaces) {
if (buffer[k] != ' ' && buffer[k] != '\t') {
if (buffer[k] != '\r')
out.write(' ');
pendingSpaces = false;
len = len - k + start;
start = k;
}
} else {
if (buffer[k] == ' ' || buffer[k] == '\t') {
if (k + 1 < end && buffer[k] == ' ' && buffer[k + 1] != ' '
&& buffer[k + 1] != '\t' && buffer[k + 1] != '\r') {
// optimization: we skip single spaces
// make sure we optimize only when we are on a space.
} else {
// compute everything from start to end;
out.write(buffer, start, k - start);
pendingSpaces = true;
}
}
}
}
if (!pendingSpaces) {
out.write(buffer, start, len);
}
}