[Kde-pim] mbox resource

laurent Montel montel at kde.org
Wed Feb 5 09:41:21 GMT 2014


On mardi 4 février 2014 17:09:52 Martin Koller wrote:
> On Tuesday 04 February 2014 15:51:39 Daniel Vrátil wrote:
> > On Monday 03 of February 2014 21:11:37 Martin Koller wrote:
> > > Hi,
> > > 
> > > I'm debugging the mbox resource and find a strange thing.
> > > When I append a new message from the shell (simulating an external
> > > program
> > > appending a new message) then SingleFileResourceBase::fileChanged() gets
> > > called which in turn lands in MboxResource::writeToFile().
> > > There the given filename is a temporary file, e.g.
> > > /home/kdetrunk/.kde4/share/apps/akonadi_mbox_resource_0/mbox-1
> > > to which the whole current mbox file is copied via mMBox->save( fileName
> > > )
> > > 
> > > But then follows something I do not understand.
> > > The comment in this file says something like
> > > "... Therefore we
> > > 
> > >   // copy the original file and append pending changes to it but also
> > >   add an
> > > 
> > > extra // '\n' to make sure that the hashes differ and the user gets
> > > notified. ..."
> > > 
> > > But in fact it destroys what it has just written via
> > > 
> > >     QFile file( fileName );
> > >     file.open( QIODevice::WriteOnly );
> > >     file.seek( file.size() );
> > >     file.write( "\n" );
> > > 
> > > QIODevice::WriteOnly is not QIODevice::WriteOnly|QIODevice::Append even
> > > with the seek() so I assume that this is simply a bug, right ?
> > 
> > Hi,
> > 
> > I haven't checked the code, but I think that WriteOnly + seek(file.size())
> > is equal to Append, so this should be just fine.
> 
> It's not.
> Try this:
> 
> #include <QFile>
> 
> int main(int argc, char **argv)
> {
>   QString fileName("/tmp/testfile");
> 
>   QFile file( fileName );
>   file.open( QIODevice::WriteOnly );
>   file.seek( file.size() );
>   file.write( "\n" );
> 
>   return 0;
> }

I didn't test it.
But if you test case is ok, create a patch for mbox resource.
Indeed it's better to add QIODevice::Append if this code appends message.

Regards

-- 
Laurent Montel | laurent.montel at kdab.com | KDE/Qt Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53,  http://www.kdab.fr


_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/



More information about the kde-pim mailing list