sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit cfb6edaecf8ef36fa46eca1184de9662f6cac2b8
parent 21222f8a00ac565da6bf28ac611e1bed288e2cb6
Author: Dan Callaghan <djc@djc.id.au>
Date:   Wed, 24 Jun 2020 08:25:56 +1000

Merge pull request #558 from danc86/issue-505

don't apply shell escaping to attachment filenames when saving
Diffstat:
M lib/sup/message_chunks.rb | 1 +
M lib/sup/modes/thread_view_mode.rb | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/sup/message_chunks.rb b/lib/sup/message_chunks.rb
@@ -160,6 +160,7 @@ EOS
       end
     end
     def safe_filename; Shellwords.escape(@filename).gsub("/", "_") end
+    def filesafe_filename; @filename.gsub("/", "_") end
 
     ## an attachment is exapndable if we've managed to decode it into
     ## something we can display inline. otherwise, it's viewable.
diff --git a/lib/sup/modes/thread_view_mode.rb b/lib/sup/modes/thread_view_mode.rb
@@ -393,7 +393,7 @@ EOS
     when Chunk::Attachment
       default_dir = $config[:default_attachment_save_dir]
       default_dir = ENV["HOME"] if default_dir.nil? || default_dir.empty?
-      default_fn = File.expand_path File.join(default_dir, chunk.safe_filename)
+      default_fn = File.expand_path File.join(default_dir, chunk.filesafe_filename)
       fn = BufferManager.ask_for_filename :filename, "Save attachment to file or directory: ", default_fn, true
 
       # if user selects directory use file name from message
@@ -422,7 +422,7 @@ EOS
     num_errors = 0
     m.chunks.each do |chunk|
       next unless chunk.is_a?(Chunk::Attachment)
-      fn = File.join(folder, chunk.safe_filename)
+      fn = File.join(folder, chunk.filesafe_filename)
       num_errors += 1 unless save_to_file(fn, false) { |f| f.print chunk.raw_content }
       num += 1
     end