kmail
util.cppGo to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "util.h"
00039
00040 #include <stdlib.h>
00041 #include <qcstring.h>
00042 #include <mimelib/string.h>
00043
00044 size_t KMail::Util::crlf2lf( char* str, const size_t strLen )
00045 {
00046 if ( !str || strLen == 0 )
00047 return 0;
00048
00049 const char* source = str;
00050 const char* sourceEnd = source + strLen;
00051
00052
00053 for ( ; source < sourceEnd - 1; ++source ) {
00054 if ( *source == '\r' && *( source + 1 ) == '\n' )
00055 break;
00056 }
00057
00058 if ( source == sourceEnd - 1 ) {
00059
00060 return strLen;
00061 }
00062
00063
00064 char* target = const_cast<char*>( source );
00065 ++source;
00066 for ( ; source < sourceEnd; ++source ) {
00067 if ( *source != '\r' || *( source + 1 ) != '\n' )
00068 * target++ = *source;
00069 }
00070 *target = '\0';
00071 return target - str;
00072 }
00073
00074 QCString KMail::Util::lf2crlf( const QCString & src )
00075 {
00076 QCString result( 1 + 2*src.size() );
00077
00078 QCString::ConstIterator s = src.begin();
00079 QCString::Iterator d = result.begin();
00080
00081 char cPrev = '?';
00082 while ( *s ) {
00083 if ( ('\n' == *s) && ('\r' != cPrev) )
00084 *d++ = '\r';
00085 cPrev = *s;
00086 *d++ = *s++;
00087 }
00088 result.truncate( d - result.begin() );
00089 return result;
00090 }
00091
00092 QByteArray KMail::Util::lf2crlf( const QByteArray & src )
00093 {
00094 const char* s = src.data();
00095 if ( !s )
00096 return QByteArray();
00097
00098 QByteArray result( 2 * src.size() );
00099 QByteArray::Iterator d = result.begin();
00100
00101 char cPrev = '?';
00102 const char* end = src.end();
00103 while ( s != end ) {
00104 if ( ('\n' == *s) && ('\r' != cPrev) )
00105 *d++ = '\r';
00106 cPrev = *s;
00107 *d++ = *s++;
00108 }
00109 result.truncate( d - result.begin() );
00110 return result;
00111 }
00112
00113 QCString KMail::Util::CString( const DwString& str )
00114 {
00115 const int strLen = str.size();
00116 QCString cstr( strLen + 1 );
00117 memcpy( cstr.data(), str.data(), strLen );
00118 cstr[ strLen ] = 0;
00119 return cstr;
00120 }
00121
00122 QByteArray KMail::Util::ByteArray( const DwString& str )
00123 {
00124 const int strLen = str.size();
00125 QByteArray arr( strLen );
00126 memcpy( arr.data(), str.data(), strLen );
00127 return arr;
00128 }
00129
00130 DwString KMail::Util::dwString( const QCString& str )
00131 {
00132 if ( !str.data() )
00133 return DwString();
00134 return DwString( str.data(), str.size() - 1 );
00135 }
00136
00137 DwString KMail::Util::dwString( const QByteArray& str )
00138 {
00139 if ( !str.data() )
00140 return DwString();
00141 return DwString( str.data(), str.size() );
00142 }
00143
00144 void KMail::Util::append( QByteArray& that, const QByteArray& str )
00145 {
00146 that.detach();
00147 uint len1 = that.size();
00148 uint len2 = str.size();
00149 if ( that.resize( len1 + len2, QByteArray::SpeedOptim ) )
00150 memcpy( that.data() + len1, str.data(), len2 );
00151 }
00152
00153 void KMail::Util::append( QByteArray& that, const char* str )
00154 {
00155 if ( !str )
00156 return;
00157 that.detach();
00158 uint len1 = that.size();
00159 uint len2 = qstrlen(str);
00160 if ( that.resize( len1 + len2, QByteArray::SpeedOptim ) )
00161 memcpy( that.data() + len1, str, len2 );
00162 }
00163
00164 void KMail::Util::append( QByteArray& that, const QCString& str )
00165 {
00166 that.detach();
00167 uint len1 = that.size();
00168 uint len2 = str.size() - 1;
00169 if ( that.resize( len1 + len2, QByteArray::SpeedOptim ) )
00170 memcpy( that.data() + len1, str.data(), len2 );
00171 }
00172
00173
00174 void KMail::Util::insert( QByteArray& that, uint index, const char* s )
00175 {
00176 int len = qstrlen(s);
00177 if ( len == 0 )
00178 return;
00179 uint olen = that.size();
00180 int nlen = olen + len;
00181 if ( index >= olen ) {
00182 that.detach();
00183 if ( that.resize(nlen+index-olen, QByteArray::SpeedOptim ) ) {
00184 memset( that.data()+olen, ' ', index-olen );
00185 memcpy( that.data()+index, s, len );
00186 }
00187 } else {
00188 that.detach();
00189 if ( that.resize(nlen, QByteArray::SpeedOptim ) ) {
00190 memmove( that.data()+index+len, that.data()+index, olen-index );
00191 memcpy( that.data()+index, s, len );
00192 }
00193 }
00194 }
|