commit 0b9356089cc837e7007434c1ccc41224f0f7a11a
parent fc3dece48d765866c67aa3fd010eeee278c44641
Author: William Morgan <wmorgan-sup@masanjin.net>
Date: Thu, 1 Oct 2009 13:29:55 -0400
tweak multi-attachment behavior to be a little more friendly
Diffstat:
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/lib/sup/mode.rb b/lib/sup/mode.rb
@@ -74,15 +74,22 @@ EOS
### helper functions
- def save_to_file fn
+ def save_to_file fn, talk=true
if File.exists? fn
- return unless BufferManager.ask_yes_or_no "File exists. Overwrite?"
+ unless BufferManager.ask_yes_or_no "File \"#{fn}\" exists. Overwrite?"
+ info "Not overwriting #{fn}"
+ return
+ end
end
begin
File.open(fn, "w") { |f| yield f }
- BufferManager.flash "Successfully wrote #{fn}."
+ BufferManager.flash "Successfully wrote #{fn}." if talk
+ true
rescue SystemCallError, IOError => e
- BufferManager.flash "Error writing to file: #{e.message}"
+ m = "Error writing file: #{e.message}"
+ info m
+ BufferManager.flash m
+ false
end
end
diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
@@ -343,13 +343,26 @@ EOS
def save_all_to_disk
m = @message_lines[curpos] or return
default_dir = ($config[:default_attachment_save_dir] || ".")
- folder = BufferManager.ask_for_filename :filename, "Save all attachment to folder: ", default_dir, true
+ folder = BufferManager.ask_for_filename :filename, "Save all attachments to folder: ", default_dir, true
return unless folder
+ num = 0
+ num_errors = 0
m.chunks.each do |chunk|
next unless chunk.is_a?(Chunk::Attachment)
fn = File.join(folder, chunk.filename)
- save_to_file(fn) { |f| f.print chunk.raw_content }
+ num_errors += 1 unless save_to_file(fn, false) { |f| f.print chunk.raw_content }
+ num += 1
+ end
+
+ if num == 0
+ BufferManager.flash "Didn't find any attachments!"
+ else
+ if num_errors == 0
+ BufferManager.flash "Wrote #{num.pluralize 'attachment'} to #{folder}."
+ else
+ BufferManager.flash "Wrote #{(num - num_errors).pluralize 'attachment'} to #{folder}; couldn't write #{num_errors} of them (see log)."
+ end
end
end