Parent

Included Modules

Archive::Zip::Entry::Symlink

Archive::Zip::Entry::Symlink represents a symlink entry withing a Zip archive.

Public Instance Methods

extract(options = {}) click to toggle source

Extracts this entry.

options is a Hash optionally containing the following:

:file_path

Specifies the path to which this entry will be extracted. Defaults to the zip path of this entry.

:permissions

When set to false (the default), POSIX mode/permission bits will be ignored. Otherwise, they will be restored if possible. Not supported on all platforms.

:ownerships

When set to false (the default), user and group ownerships will be ignored. On most systems, only a superuser is able to change ownerships, so setting this option to true as a regular user may have no effect. Not supported on all platforms.

Raises Archive::Zip::EntryError if the link_target attribute is not specified.

# File lib/archive/zip/entry.rb, line 956
def extract(options = {})
  raise Zip::EntryError, 'link_target is nil' if link_target.nil?

  # Ensure that unspecified options have default values.
  file_path           = options.has_key?(:file_path) ?
                        options[:file_path].to_s :
                        @zip_path
  restore_permissions = options.has_key?(:permissions) ?
                        options[:permissions] :
                        false
  restore_ownerships  = options.has_key?(:ownerships) ?
                        options[:ownerships] :
                        false

  # Create the containing directory tree if necessary.
  parent_dir = ::File.dirname(file_path)
  FileUtils.mkdir_p(parent_dir) unless ::File.exist?(parent_dir)

  # Create the symlink.
  ::File.symlink(link_target, file_path)

  # Restore the metadata.
  # NOTE: Ruby does not have the ability to restore atime and mtime on
  # symlinks at this time (version 1.8.6).
  begin
    ::File.lchmod(mode, file_path) if restore_permissions
  rescue NotImplementedError
    # Ignore on platforms that do not support lchmod.
  end
  begin
    ::File.lchown(uid, gid, file_path) if restore_ownerships
  rescue NotImplementedError
    # Ignore on platforms that do not support lchown.
  end

  nil
end
ftype() click to toggle source

Returns the file type of this entry as the symbol :symlink.

# File lib/archive/zip/entry.rb, line 892
def ftype
  :symlink
end
mode=(mode) click to toggle source

Overridden in order to ensure that the proper mode bits are set for a symlink.

# File lib/archive/zip/entry.rb, line 903
def mode=(mode)
  super(0120000 | (mode & 07777))
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.