From kde-commits Sat Jun 12 13:46:49 2004 From: =?utf-8?q?Ingo=20Kl=C3=B6cker?= Date: Sat, 12 Jun 2004 13:46:49 +0000 To: kde-commits Subject: KDE_3_2_BRANCH: kdepim/kmail Message-Id: <20040612134649.A5E93990D () office ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=108704801612484 CVS commit by kloecker: Backporting the fix for the creation of mbox message separators. M +1 -4 kmcommands.cpp 1.99.2.5 M +1 -1 kmcomposewin.cpp 1.770.2.8 M +2 -5 kmfoldermbox.cpp 1.92.2.4 M +16 -0 kmmessage.cpp 1.451.2.3 M +8 -0 kmmessage.h 1.157.4.1 --- kdepim/kmail/kmcommands.cpp #1.99.2.4:1.99.2.5 @@ -689,8 +689,5 @@ void KMSaveMsgCommand::slotSaveDataReq() void KMSaveMsgCommand::slotMessageRetrievedForSaving(KMMessage *msg) { - QCString str( msg->fromEmail() ); - if ( str.isEmpty() ) - str = "unknown@unknown.invalid"; - str = "From " + str + " " + msg->dateShortStr() + "\n"; + QCString str( msg->mboxMessageSeparator() ); str += KMFolderMbox::escapeFrom( msg->asString() ); str += "\n"; --- kdepim/kmail/kmcomposewin.cpp #1.770.2.7:1.770.2.8 @@ -612,5 +612,5 @@ void KMComposeWin::deadLetter(void) if (fd != -1) { - QCString startStr = "From " + mMsg->fromEmail() + " " + mMsg->dateShortStr() + "\n"; + QCString startStr( mMsg->mboxMessageSeparator() ); ::write(fd, startStr, startStr.length()); ::write(fd, msgStr, msgStr.length()); --- kdepim/kmail/kmfoldermbox.cpp #1.92.2.3:1.92.2.4 @@ -980,9 +980,6 @@ if( fileD1.open( IO_WriteOnly ) ) { } - QCString address( aMsg->fromEmail() ); - if ( address.isEmpty() ) - address = "unknown@unknown.invalid"; - fprintf(mStream, "From %s %s\n", address.data(), - (const char *)aMsg->dateShortStr()); + QCString messageSeparator( aMsg->mboxMessageSeparator() ); + fwrite( messageSeparator.data(), messageSeparator.length(), 1, mStream ); off_t offs = ftell(mStream); fwrite(msgText, len, 1, mStream); --- kdepim/kmail/kmmessage.cpp #1.451.2.2:1.451.2.3 @@ -4194,2 +4194,18 @@ QString KMMessage::bodyToUnicode(const Q } +//----------------------------------------------------------------------------- +QCString KMMessage::mboxMessageSeparator() +{ + QCString str( fromEmail() ); + if ( str.isEmpty() ) + str = "unknown@unknown.invalid"; + QCString dateStr( dateShortStr() ); + if ( dateStr.isEmpty() ) { + time_t t = ::time( 0 ); + dateStr = ctime( &t ); + const int len = dateStr.length(); + if ( dateStr[len-1] == '\n' ) + dateStr.truncate( len - 1 ); + } + return "From " + str + " " + dateStr + "\n"; +} --- kdepim/kmail/kmmessage.h #1.157:1.157.4.1 @@ -297,4 +297,6 @@ public: /** Get or set the 'Date' header field */ QString dateStr() const; + /** Returns the message date in asctime format or an empty string if the + message lacks a Date header. */ QCString dateShortStr() const; QString dateIsoStr() const; @@ -795,4 +797,10 @@ public: DwBodyPart* lastUpdatedPart() { return mLastUpdated; } + /** Returns an mbox message separator line for this message, i.e. a + string of the form + "From local@domain.invalid Sat Jun 12 14:00:00 2004\n". + */ + QCString mboxMessageSeparator(); + private: /** Returns message body with quoting header and indented by the