Re: [notmuch] [PATCH] Setup the GMimeStream only when needed

Subject: Re: [notmuch] [PATCH] Setup the GMimeStream only when needed

Date: Thu, 1 Apr 2010 10:31:13 -0400

To: Michal Sojka

Cc: notmuch@notmuchmail.org

From: nstraz@redhat.com


On Apr  1 16:21, Michal Sojka wrote:
> On Thu, 01 Apr 2010, nstraz@redhat.com wrote:
> > I ran into this while looking at the vim plugin.  Vim's system() call
> > redirects output to a file and it was missing many of the part{ lines.
> > 
> > If stream_stdout is setup too early, it will overwrite the part start
> > when notmuch is redirected to a file.
> 
> thanks for the patch. After some investigation, it seems that you are
> right. What I missed in your commit message is the reason for such
> behaviour i.e. GMimeStream fseek()s in its write method to the position
> recorded when the stream was created, so that in case there is somebody
> else writing to the stream, the writes may overlap.

Right, and in the case of writing to a pipe, the seek fails and the
file position doesn't change.  I found it comparing strace output of
`notmuch show ... > file` and `notmuch show ... | cat > file.`

Nate

Thread: