def files
return @files unless @files.nil?
lister = IO.popen("#{tags[:payloadcompressor]} -d | cpio -it --quiet", "r+")
buffer = ""
begin
buffer.force_encoding("BINARY")
rescue NoMethodError
end
payload_fd = payload.clone
output = ""
loop do
data = payload_fd.read(16384, buffer)
break if data.nil?
lister.write(data)
begin
output << lister.read_nonblock(16384)
rescue Errno::EAGAIN
end
end
lister.close_write
begin
output << lister.read
rescue Errno::EAGAIN
retry
rescue EOFError
end
@files = output.split("\n").collect { |s| s.gsub(/^\./, "") }
return @files
ensure
lister.close unless lister.nil?
payload_fd.close unless payload_fd.nil?
end