1467 for(j = i+1; *(ptr+j) != KImcvQuestionMark ; j++) |
1467 for(j = i+1; *(ptr+j) != KImcvQuestionMark ; j++) |
1468 ; |
1468 ; |
1469 |
1469 |
1470 // Intermediate buffer for decoding, prior to converting |
1470 // Intermediate buffer for decoding, prior to converting |
1471 |
1471 |
1472 HBufC8* decodeBuf8 = HBufC8::NewLC(aBufOut.MaxLength()); |
1472 HBufC8* decodeBuf8 = HBufC8::NewLC(aBufOut.MaxLength()); |
1473 |
1473 |
1474 decodeBuf8->Des().Copy( aBufIn.Mid(i+1, j -i-1)); |
1474 decodeBuf8->Des().Copy( aBufIn.Mid(i+1, j -i-1)); |
1475 |
1475 |
1476 // Depending on type of encoding Q or B, decode. |
1476 // Depending on type of encoding Q or B, decode. |
1477 |
1477 |
1478 TPtr8 dataPtr8(dataBuf8->Des()); |
1478 TPtr8 dataPtr8(dataBuf8->Des()); |
1479 |
1479 TPtr8 decodePtr8(decodeBuf8->Des()); |
1480 switch (iEncodingInfo.EncodingType()) |
1480 switch (iEncodingInfo.EncodingType()) |
1481 { |
1481 { |
1482 case TImHeaderEncodingInfo::EBase64 : |
1482 case TImHeaderEncodingInfo::EBase64 : |
1483 iB64Codec.Decode( *decodeBuf8, dataPtr8 ); |
1483 iB64Codec.Decode( *decodeBuf8, dataPtr8 ); |
1484 break; |
1484 break; |
1485 case TImHeaderEncodingInfo::EQP : |
1485 case TImHeaderEncodingInfo::EQP : |
1486 // Replace all underscores in text with SPACE. |
1486 // Replace all underscores in text with SPACE. |
1487 iQPCodec.Decode( *decodeBuf8, dataPtr8 ); |
1487 i=decodePtr8.Length(); |
1488 |
|
1489 i=dataPtr8.Length(); |
|
1490 while (i--) |
1488 while (i--) |
1491 { |
1489 { |
1492 if (dataPtr8[i] == KImcvUnderScore) |
1490 if (decodePtr8[i] == KImcvUnderScore) |
1493 dataPtr8[i] = KImcvSpaceChar; |
1491 decodePtr8[i] = KImcvSpaceChar; |
1494 } |
1492 } |
|
1493 iQPCodec.Decode( *decodeBuf8, dataPtr8 ); |
1495 break; |
1494 break; |
1496 default: |
1495 default: |
1497 dataBuf8->Des().Copy(*decodeBuf8); |
1496 dataBuf8->Des().Copy(*decodeBuf8); |
1498 break; |
1497 break; |
1499 } |
1498 } |