class Archive::BaseArchive

@abstract

Attributes

archive[R]

@!visibility protected @return [FFI::Pointer]

Public Class Methods

new(alloc, free) click to toggle source

@param [Method] alloc @param [Method] free

# File lib/ffi_libarchive/archive.rb, line 150
def initialize(alloc, free)
  raise ArgumentError, 'Invalid methods' unless alloc.respond_to?(:call) && free.respond_to?(:call)

  @archive = alloc.call
  raise Error, 'No archive open' unless @archive

  @archive_free = [free]
  ObjectSpace.define_finalizer(self, method(:close).to_proc)
end

Public Instance Methods

close() click to toggle source
# File lib/ffi_libarchive/archive.rb, line 160
def close
  # TODO: do we need synchronization here?
  @archive_free[0].call(@archive) if @archive && @archive_free[0].respond_to?(:call) # TODO: Error check?
ensure
  @archive         = nil
  @archive_free[0] = nil
end
errno() click to toggle source

@return [Integer]

# File lib/ffi_libarchive/archive.rb, line 178
def errno
  C.archive_errno(archive)
end
error_string() click to toggle source

@return [String]

# File lib/ffi_libarchive/archive.rb, line 173
def error_string
  C.archive_error_string(archive)
end