caf07116db
This is basically a wrapper for metasm, but supports built-in headers so that as an user, I don't have manually do this every time I compile something with metasm.
44 lines
1.1 KiB
Ruby
44 lines
1.1 KiB
Ruby
module Metasploit
|
|
module Framework
|
|
module Compiler
|
|
module Headers
|
|
class Base
|
|
|
|
attr_accessor :loaded_dep
|
|
|
|
# Initializes the Base class for headers.
|
|
def initialize
|
|
# This is used to avoid loading the same dependency code twice
|
|
@loaded_dep = []
|
|
end
|
|
|
|
# Returns the header source code.
|
|
#
|
|
# @param lib_name [String] The file name of the header.
|
|
# @return [String]
|
|
def include(lib_name)
|
|
lib = lib_dep_map[lib_name]
|
|
unless lib
|
|
raise RuntimeError, "#{lib_name} not found"
|
|
end
|
|
|
|
# Load the dependencies first, and only once
|
|
dep = ''
|
|
lib.each do |f|
|
|
unless loaded_dep.include?(f)
|
|
dep_path = File.join(headers_path, f)
|
|
dep << File.read(dep_path) << "\n"
|
|
loaded_dep << f
|
|
end
|
|
end
|
|
|
|
# Load the headers
|
|
lib_path = File.join(headers_path, lib_name)
|
|
"#{dep}#{File.read(lib_path)}"
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end |