sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 263e56f5a2a91787b0e64cf95948fdb9232a808c
parent c6a67bdba5e46c1dad850c3aef2dc71c9f55e89e
Author: Hamish Downer <dmishd@gmail.com>
Date:   Thu,  2 Jun 2011 21:00:30 +0100

Merge branch 'github_patches' into next

Diffstat:
M lib/sup/draft.rb | 3 ++-
M lib/sup/modes/resume-mode.rb | 3 +++
M lib/sup/sent.rb | 2 +-
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/sup/draft.rb b/lib/sup/draft.rb
@@ -23,7 +23,7 @@ class DraftManager
   def discard m
     raise ArgumentError, "not a draft: source id #{m.source.id.inspect}, should be #{DraftManager.source_id.inspect} for #{m.id.inspect}" unless m.source.id.to_i == DraftManager.source_id
     Index.delete m.id
-    File.delete @source.fn_for_offset(m.source_info)
+    File.delete @source.fn_for_offset(m.source_info) rescue Errono::ENOENT
     UpdateManager.relay self, :single_message_deleted, m
   end
 end
@@ -72,6 +72,7 @@ class DraftLoader < Source
   end
 
   def load_message offset
+    raise SourceError, "Draft not found" unless File.exists? fn_for_offset(offset)
     File.open fn_for_offset(offset) do |f|
       RMail::Mailbox::MBoxReader.new(f).each_message do |input|
         return RMail::Parser.read(input)
diff --git a/lib/sup/modes/resume-mode.rb b/lib/sup/modes/resume-mode.rb
@@ -9,6 +9,9 @@ class ResumeMode < EditMessageMode
     header.delete "Date"
 
     super :header => header, :body => body, :have_signature => true
+  rescue Errno::ENOENT
+    DraftManager.discard @m
+    BufferManager.flash "Draft deleted outside of sup."
   end
 
   def unsaved?; !@safe end
diff --git a/lib/sup/sent.rb b/lib/sup/sent.rb
@@ -14,7 +14,7 @@ class SentManager
 
   def source= s
     raise FatalSourceError.new("Configured sent_source [#{s.uri}] can't store mail.  Correct your configuration.") unless s.respond_to? :store_message
-    @souce_uri = s.uri
+    @source_uri = s.uri
     @source = s
   end