sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 04d8cfe1079a456cbe95faf6170d2bb9ee4dd51e
parent 45c3433c036446455e63142d2d2db4e37557a260
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date:   Fri, 16 Jul 2010 13:59:44 -0400

protect sup-dump against bad index entries

Diffstat:
M bin/sup-dump | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/bin/sup-dump b/bin/sup-dump
@@ -3,6 +3,7 @@
 require 'rubygems'
 require 'xapian'
 require 'trollop'
+require 'set'
 
 BASE_DIR = ENV["SUP_BASE"] || File.join(ENV["HOME"], ".sup")
 
@@ -28,8 +29,12 @@ version = '0' if version.empty?
 case version
 when '0'
   xapian.postlist('Kmail').each do |x|
-    entry = Marshal.load(xapian.document(x.docid).data)
-    puts "#{entry[:message_id]} (#{entry[:labels].sort_by { |l| l.to_s } * ' '})"
+    begin
+      entry = Marshal.load(xapian.document(x.docid).data)
+      puts "#{entry[:message_id]} (#{entry[:labels].sort_by { |l| l.to_s } * ' '})"
+    rescue
+      $stderr.puts "failed to dump document #{x.docid}"
+    end
   end
 else
   abort "this sup-dump version doesn't understand your index"