in core/src/main/java/org/apache/james/mime4j/stream/RawFieldParser.java [385:433]
public void copyQuotedContent(final ByteSequence buf, final ParserCursor cursor,
final StringBuilder dst) {
if (cursor.atEnd()) {
return;
}
int pos = cursor.getPos();
int indexFrom = cursor.getPos();
int indexTo = cursor.getUpperBound();
char current = (char) (buf.byteAt(pos) & 0xff);
if (current != '\"') {
return;
}
pos++;
indexFrom++;
ByteArrayBuffer dstRaw = new ByteArrayBuffer(indexTo - indexFrom);
boolean escaped = false;
for (int i = indexFrom; i < indexTo; i++, pos++) {
byte currentByte = buf.byteAt(i);
current = (char) (currentByte & 0xff);
if (escaped) {
if (current != '\"' && current != '\\') {
dstRaw.append('\\');
}
dstRaw.append(currentByte);
escaped = false;
} else {
if (current == '\"') {
pos++;
break;
}
if (current == '\\') {
escaped = true;
} else if (current != '\r' && current != '\n') {
dstRaw.append(currentByte);
}
}
}
String decoded = CharsetUtil.isASCII(dstRaw) ? ContentUtil.decode(dstRaw) : ContentUtil.decode(StandardCharsets.UTF_8, dstRaw);
if (decoded.startsWith("=?")) {
decoded = DecoderUtil.decodeEncodedWords(decoded, DecodeMonitor.SILENT);
}
dst.append(decoded);
cursor.updatePos(pos);
}