sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 63b383205a92ceab003cd355dd3b8f19cc8e0ef7
parent 1cb0b3071eea8a456a1cff56d8fa33b738937770
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Wed, 14 Feb 2007 05:31:31 +0000

bugfixes for imap polling

git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@329 5c8cc53c-5e98-4d25-b20a-d8db53a31250

Diffstat:
M bin/sup-import | 4 ++--
M lib/sup/modes/inbox-mode.rb | 5 ++++-
M lib/sup/poll.rb | 34 +++++++++++++++++++---------------
3 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/bin/sup-import b/bin/sup-import
@@ -98,7 +98,7 @@ begin
         elapsed = last_update - start
         pctdone = source.respond_to?(:pct_done) ? source.pct_done : 100.0 * (source.cur_offset.to_f - source.start_offset).to_f / (source.end_offset - source.start_offset).to_f
         remaining = (100.0 - pctdone) * (elapsed.to_f / pctdone)
-        puts "## #{num} (#{pctdone}% done) read; #{elapsed.to_time_s} elapsed; est. #{remaining.to_time_s} remaining"
+        puts "## #{num_added + num_updated} (#{pctdone}% done) read; #{elapsed.to_time_s} elapsed; est. #{remaining.to_time_s} remaining"
       end
 
       ## update if...
@@ -145,7 +145,7 @@ if opts[:rebuild] || opts[:full_rebuild]
 #      puts "got #{mid}"
       next if found[mid]
       puts "Deleting #{mid}" if opts[:verbose]
-      index.index.delete docid
+      #index.index.delete docid
       numdel += 1
     end
   end
diff --git a/lib/sup/modes/inbox-mode.rb b/lib/sup/modes/inbox-mode.rb
@@ -21,7 +21,10 @@ class InboxMode < ThreadIndexMode
   end
 
   def multi_archive threads
-    threads.each { |t| remove_label_and_hide_thread t, :inbox }
+    threads.each do |t|
+      t.remove_label :inbox
+      hide_thread t
+    end
     regen_text
   end
 
diff --git a/lib/sup/poll.rb b/lib/sup/poll.rb
@@ -92,24 +92,28 @@ class PollManager
       
         labels.each { |l| LabelManager << l }
 
-        m = Message.new :source => source, :source_info => offset, :labels => labels
-        if m.source_marked_read?
-          m.remove_label :unread
-          labels.delete :unread
-        end
+        begin
+          m = Message.new :source => source, :source_info => offset, :labels => labels
+          if m.source_marked_read?
+            m.remove_label :unread
+            labels.delete :unread
+          end
 
-        docid, entry = Index.load_entry_for_id m.id
-        m = yield m, offset, entry
-        next unless m
-        if entry
-          Index.update_message m, docid, entry
-        else
-          Index.add_message m
-          UpdateManager.relay self, :add, m
+          docid, entry = Index.load_entry_for_id m.id
+          m = yield m, offset, entry
+          next unless m
+          if entry
+            Index.update_message m, docid, entry
+          else
+            Index.add_message m
+            UpdateManager.relay self, :add, m
+          end
+        rescue MessageFormatError, SourceError => e
+          Redwood::log "ignoring erroneous message at #{source}##{offset}: #{e.message}"
         end
       end
-    rescue MessageFormatError, SourceError => e
-      Redwood::log "found problem with #{source}: #{e.message}"
+    rescue SourceError => e
+      Redwood::log "problem getting messages from #{source}: #{e.message}"
     end
   end
 end