class Archive::BaseArchive

Public Class Methods

finalizer(archive, archive_free) click to toggle source
# File lib/ffi-libarchive/archive.rb, line 333
def self.finalizer(archive, archive_free)
  proc do |*_args|
    archive_free[0].call(archive) if archive_free[0]
  end
end
new(alloc, free) click to toggle source
# File lib/ffi-libarchive/archive.rb, line 322
def initialize(alloc, free)
  @archive = nil
  @archive_free = nil
  @archive = alloc.call
  @archive_free = [nil]
  raise Error, @archive unless @archive

  @archive_free[0] = free
  ObjectSpace.define_finalizer(self, BaseArchive.finalizer(@archive, @archive_free))
end

Public Instance Methods

close() click to toggle source
# File lib/ffi-libarchive/archive.rb, line 339
def close
  # TODO: do we need synchronization here?
  if @archive
    # TODO: Error check?
    @archive_free[0].call(@archive)
  end
ensure
  @archive = nil
  @archive_free[0] = nil
  @data = nil
end
errno() click to toggle source
# File lib/ffi-libarchive/archive.rb, line 362
def errno
  C.archive_errno(@archive)
end
error_string() click to toggle source
# File lib/ffi-libarchive/archive.rb, line 358
def error_string
  C.archive_error_string(@archive)
end

Protected Instance Methods

archive() click to toggle source
# File lib/ffi-libarchive/archive.rb, line 351
def archive
  raise Error, "No archive open" unless @archive

  @archive
end