- Convert between little and big endian to keep compatible with the old index

format until a better solution is found.
- Regenerate the .sorted files, there we don't need to play the same game.

svn path=/trunk/kdenetwork/kmail/; revision=112812
wilder-work
Michael Haeckel 25 years ago
parent e05d088b09
commit 7806157e15
  1. 2
      kmheaders.cpp
  2. 20
      kmmsgbase.cpp

@ -2559,7 +2559,7 @@ void KMHeaders::setSorting( int column, bool ascending )
}
//Flatten the list and write it to disk
#define KMAIL_SORT_VERSION 1005
#define KMAIL_SORT_VERSION 1006
#define KMAIL_SORT_FILE(x) x->indexLocation() + ".sorted"
#define KMAIL_SORT_HEADER "## KMail Sort V%04d\n\t"
#define KMAIL_MAGIC_HEADER_OFFSET 21 //strlen(KMAIL_SORT_HEADER)

@ -579,6 +579,18 @@ QCString KMMsgBase::encodeBase64(const QCString& aStr)
return result;
}
//-----------------------------------------------------------------------------
void swapEndian(QString &str)
{
ushort us;
uint len = str.length();
for (uint i = 0; i < len; i++)
{
us = str[i].unicode();
str[i] = QChar(((us & 0xFF) << 8) + ((us & 0xFF00) >> 8));
}
}
//-----------------------------------------------------------------------------
static int g_chunk_length = 0, g_chunk_offset=0;
static uchar *g_chunk = NULL;
@ -638,6 +650,7 @@ QString KMMsgBase::getStringPart(MsgPartType t) const
g_chunk_length = 0;
g_chunk = NULL;
}
swapEndian(ret);
return ret;
}
@ -713,22 +726,29 @@ const uchar *KMMsgBase::asIndexString(int &length) const
//these is at the beginning because it is queried quite often
tmp_str = msgIdMD5().stripWhiteSpace();
swapEndian(tmp_str);
STORE_DATA_LEN(MsgIdMD5Part, tmp_str.unicode(), tmp_str.length() * 2);
tmp = status();
STORE_DATA(MsgStatusPart, tmp);
//these are completely arbitrary order
tmp_str = fromStrip().stripWhiteSpace();
swapEndian(tmp_str);
STORE_DATA_LEN(MsgFromPart, tmp_str.unicode(), tmp_str.length() * 2);
tmp_str = subject().stripWhiteSpace();
swapEndian(tmp_str);
STORE_DATA_LEN(MsgSubjectPart, tmp_str.unicode(), tmp_str.length() * 2);
tmp_str = toStrip().stripWhiteSpace();
swapEndian(tmp_str);
STORE_DATA_LEN(MsgToPart, tmp_str.unicode(), tmp_str.length() * 2);
tmp_str = replyToIdMD5().stripWhiteSpace();
swapEndian(tmp_str);
STORE_DATA_LEN(MsgReplyToIdMD5Part, tmp_str.unicode(), tmp_str.length() * 2);
tmp_str = xmark().stripWhiteSpace();
swapEndian(tmp_str);
STORE_DATA_LEN(MsgXMarkPart, tmp_str.unicode(), tmp_str.length() * 2);
tmp_str = fileName().stripWhiteSpace();
swapEndian(tmp_str);
STORE_DATA_LEN(MsgFilePart, tmp_str.unicode(), tmp_str.length() * 2);
tmp = msgSize();
STORE_DATA(MsgSizePart, tmp);

Loading…
Cancel
Save