# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-# require 'zlib'
-# require 'bzip2'
require 'open3'
# Error class for all exceptions to do with Filesys.
if mode == 'w'
case options[:compress]
when :gzip
- # ios = Zlib::GzipWriter.new File.open(file, mode, options)
ios, = Open3.pipeline_w("gzip -f", out: file)
when :bzip, :bzip2
- # ios = Bzip2::Writer.new File.open(file, mode, options) # TODO being pissed with buggy bzip2 gem.
ios, = Open3.pipeline_w("bzip2 -c", out: file)
else
ios = File.open(file, mode, options)
if file == '-'
ios = STDIN
else
- case `file -L #{file}`
+ case `file -Lk #{file}`
when /gzip/
- # ios = Zlib::GzipReader.new File.open(file, mode, options)
- ios = IO.popen("gzip -cd #{file}")
+ ios = IO.popen("gzip -cd #{file}", :external_encoding=>"EUC-JP")
when /bzip/
- # ios = Bzip2::Reader.new File.open(file, mode, options) # TODO this method is buggy, investigate
ios = IO.popen("bzcat #{file}")
- else
+ when /ASCII/
ios = File.open(file, mode, options)
+ else
+ raise "Unknown file type: #{`file -L #{file}`}"
end
end
end