module MacBinary

Constants

VERSION

Public Class Methods

add_resource_fork(data_fork, resource_fork) click to toggle source
# File lib/macbinary_unpack.rb, line 32
def self.add_resource_fork data_fork, resource_fork
  FileUtils.cp resource_fork, "#{data_fork}/..namedfork/rsrc"
end
unpack(macbinary, target_dir=Dir.pwd) click to toggle source
# File lib/macbinary_unpack.rb, line 8
def self.unpack macbinary, target_dir=Dir.pwd
  # macunpack always unpacks into the working directory
  cd target_dir do
    # macunpack will sanitize the source filename if it contains spaces
    sanitized = File.basename(macbinary.gsub(" ", "_"), ".bin")

    # -3 extracts data and resource forks even if they're empty
    if !system "macunpack", "-3", macbinary
      raise MacunpackException, "macunpack returned non-zero exit status"
    end

    output_files = {
      data: "#{target_dir}/#{sanitized}.data",
      info: "#{target_dir}/#{sanitized}.info",
      rsrc: "#{target_dir}/#{sanitized}.rsrc"
    }

    raise MacunpackException, "macunpack did not generate a data fork" unless File.exist? output_files[:data]
    raise MacunpackException, "macunpack did not generate a data fork" unless File.exist? output_files[:rsrc]

    return output_files
  end
end