~ubuntu-branches/ubuntu/raring/kdepimlibs/raring-proposed

« back to all changes in this revision

Viewing changes to kmime/kmime_util.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2011-12-14 14:37:07 UTC
  • mfrom: (1.1.72)
  • Revision ID: package-import@ubuntu.com-20111214143707-nvfc00wnfayzn9ig
Tags: 4:4.7.90-0ubuntu1
* New upstream beta release
* Add packages libkalarmcal2 and libakonadi-notes4

Show diffs side-by-side

added added

removed removed

Lines of Context:
430
430
  if ( str.isEmpty() )
431
431
    return QByteArray();
432
432
 
433
 
  
 
433
 
434
434
  const QTextCodec *codec = KGlobal::charsets()->codecForName( QString::fromLatin1( charset ) );
435
435
  QByteArray latin;
436
436
  if ( charset == "us-ascii" )
487
487
  int p = str.indexOf('\'');
488
488
  if (p < 0) return KGlobal::charsets()->codecForName( QString::fromLatin1( defaultCS  ))->toUnicode( str );
489
489
 
490
 
  
 
490
 
491
491
  QByteArray charset = str.left(p);
492
492
 
493
493
  QByteArray st = str.mid( str.lastIndexOf('\'') + 1 );
494
 
  
 
494
 
495
495
  char ch, ch2;
496
496
  p = 0;
497
497
  while (p < (int)st.length())
564
564
QByteArray unfoldHeader( const QByteArray &header )
565
565
{
566
566
  QByteArray result;
 
567
  if ( header.isEmpty() ) {
 
568
    return result;
 
569
  }
 
570
 
567
571
  int pos = 0, foldBegin = 0, foldMid = 0, foldEnd = 0;
568
572
  while ( ( foldMid = header.indexOf( '\n', pos ) ) >= 0 ) {
569
573
    foldBegin = foldEnd = foldMid;
598
602
      result += ' ';
599
603
    pos = foldEnd;
600
604
  }
601
 
  result += header.mid( pos, header.length() - pos );
 
605
  const int len = header.length();
 
606
  if ( len > pos ) {
 
607
    result += header.mid( pos, len - pos );
 
608
  }
602
609
  return result;
603
610
}
604
611
 
687
694
    return begin;
688
695
 
689
696
  } else {
 
697
    end = -1;
690
698
    dataBegin = -1;
691
699
    return -1; //header not found
692
700
  }
696
704
{
697
705
  int begin, end;
698
706
  bool folded;
699
 
  indexOfHeader( src, name, end, begin, &folded );
 
707
  QByteArray result;
 
708
 
 
709
  if ( src.isEmpty() || indexOfHeader( src, name, end, begin, &folded ) < 0 ) {
 
710
    return result;
 
711
  }
700
712
 
701
713
  if ( begin >= 0 ) {
702
714
    if ( !folded ) {
703
 
      return src.mid( begin, end - begin );
 
715
      result = src.mid( begin, end - begin );
704
716
    } else {
705
 
      QByteArray hdrValue = src.mid( begin, end - begin );
706
 
      return unfoldHeader( hdrValue );
 
717
      if ( end > begin ) {
 
718
        QByteArray hdrValue = src.mid( begin, end - begin );
 
719
        result = unfoldHeader( hdrValue );
 
720
      }
707
721
    }
708
 
  } else {
709
 
    return QByteArray(); //header not found
710
722
  }
 
723
  return result;
711
724
}
712
725
 
713
726
QList<QByteArray> extractHeaders( const QByteArray &src, const QByteArray &name )
717
730
  QList<QByteArray> result;
718
731
  QByteArray copySrc( src );
719
732
 
720
 
  indexOfHeader( copySrc, name, end, begin, &folded );
 
733
  if ( indexOfHeader( copySrc, name, end, begin, &folded ) < 0 ) {
 
734
    return result;
 
735
  }
 
736
 
721
737
  while ( begin >= 0 ) {
722
738
    if ( !folded ) {
723
739
      result.append( copySrc.mid( begin, end - begin ) );
728
744
 
729
745
    // get the next one, a tiny bit ugly, but we don't want the previous to be found again...
730
746
    copySrc = copySrc.mid( end );
731
 
    indexOfHeader( copySrc, name, end, begin, &folded );
 
747
    if ( indexOfHeader( copySrc, name, end, begin, &folded ) < 0 ) {
 
748
      break;
 
749
    }
732
750
  }
733
751
 
734
752
  return result;
933
951
        return true;
934
952
    }
935
953
  }
936
 
  
 
954
 
937
955
  return false;
938
956
}
939
957
 
965
983
  const KMime::Headers::ContentType* const contentType = message->contentType();
966
984
  if ( contentType->isSubtype( "encrypted" ) ||
967
985
       contentType->isSubtype( "pgp-encrypted" ) ||
968
 
       contentType->isSubtype( "pkcs7-mime" ) || 
 
986
       contentType->isSubtype( "pkcs7-mime" ) ||
969
987
       message->mainBodyPart( "multipart/encrypted" ) ||
970
988
       message->mainBodyPart( "application/pgp-encrypted" ) ||
971
989
       message->mainBodyPart( "application/pkcs7-mime" ) ) {