# File lib/arr-pm/file.rb, line 96 def extract(target) if !File.directory?(target) raise Errno::ENOENT.new(target) end extractor = IO.popen("#{tags[:payloadcompressor]} -d | (cd #{target}; cpio -i --quiet --make-directories)", "w") buffer = "" begin buffer.force_encoding("BINARY") rescue NoMethodError # Do Nothing end payload_fd = payload.clone loop do data = payload_fd.read(16384, buffer) break if data.nil? # eof extractor.write(data) end payload_fd.close extractor.close end