Class: Archive::Ar::Format::BSD
- Inherits:
-
Object
- Object
- Archive::Ar::Format::BSD
- Defined in:
- lib/archive/ar/format/bsd.rb
Class Method Summary collapse
- .build_header(file) ⇒ Object
- .extract_file(dest_dir, header, data, options = {}) ⇒ Object
- .read_global_header(io) ⇒ Object
- .read_header(io) ⇒ Object
Class Method Details
.build_header(file) ⇒ Object
39 40 41 42 |
# File 'lib/archive/ar/format/bsd.rb', line 39 def build_header(file) header = read_file_header(file) header_to_s(header) end |
.extract_file(dest_dir, header, data, options = {}) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/archive/ar/format/bsd.rb', line 12 def extract_file(dest_dir, header, data, = {}) file = File.join(dest_dir, header[:name]) File.open(file, "w") do |f| f.write(data) end File.chmod(header[:mode], file) #FileUtils.chown(header[:owner], header[:group], file) true end |
.read_global_header(io) ⇒ Object
6 7 8 9 10 |
# File 'lib/archive/ar/format/bsd.rb', line 6 def read_global_header(io) io.read(8).tap do |global_header| raise "Invalid header" unless global_header == Archive::Ar::MAGIC end end |
.read_header(io) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/archive/ar/format/bsd.rb', line 25 def read_header(io) block = io.read(60) header = parse_header(block) header.merge! :start => io.tell if header[:name].start_with? "#1/" long_size = header[:name][3..-1].to_i header[:start] += long_size header[:name] = io.read(long_size).strip end header end |