Have you tried something like:

try:
    os.rename(TMPFILENAME, muttfilename)
except Exception, e:
    log.write("Rename failed: %s" % e)

That rename call is almost certainly failing, and this would
at least tell you why...

-mg
(Also, what OS is this on?)

On Sat, May 17, 2014 at 06:19:32PM +0200, Karl Voit wrote:
> Hi!
> 
> For a works-for-me-hack[1], I need to write a Python wrapper-script
> for the editor (vim at my side).
> 
> The wrapper basically parses the temporary file which was created by
> mutt (muttfilename), creates a new temporary file with modified
> content (TMPFILENAME), and currently tries to replace muttfilename
> with TMPFILENAME by deleting and renaming:
> 
>     [...]
>     log.write('re-wrote email to TMPFILENAME\n')
> 
>     assert(os.path.isfile(muttfilename))
>     assert(os.path.isfile(TMPFILENAME))
> 
>     os.remove(muttfilename)
>     log.write('removed muttfilename; renaming TMPFILENAME to muttfilename 
> ...\n')
> 
>     os.rename(TMPFILENAME, muttfilename)  ## <-- here, mutt does take over 
> again!!! :-(
> 
>     log.write('renamed TMPFILENAME to muttfilename\n') ## <-- does not get 
> into log any more
> 
>     assert(os.path.isfile(muttfilename))
>     assert(os.path.isfile(TMPFILENAME) == False)
> 
>     log.write('calling EDITOR ...\n')
>     call([EDITOR, muttfilename])
>     [...]
> 
> After renaming, I want to invoke my editor, make my manual changes
> to the email body and after quitting the editor, mutt should take
> over again.
> 
> However, when I rename TMPFILENAME to muttfilename, mutt takes over
> the process again. This skips the editor part completely. Mutt
> complains that the muttfilename is missing:
> 
>     "Can't stat /tmp/mutt-grmlvrs-1002-5074-359: No such file or
>      directory"
> 
> This way, the message file is lost entirely.
> 
> So: how do I accomplish my wrapper so that mutt takes over again
> after the editor quits and not before? How can I replace the content
> of the mutt-temp-file before my editor without letting mutt taking
> over in-between?
> 
> Thanks for your help!
> 
> 
> [1] Yes, you are tempted to question my hack-approach - I would.
> Please don't because I really tried to do the stuff using mutt hooks
> and unfortunately this does not work at all because of the
> complexity of the stuff I need to do in background as well. Please
> let's assume, that there is no other way than to write a
> wrapper-script in Python.  :-)
> 
> -- 
> Karl Voit

Reply via email to