[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