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:
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