class Zip::ZipFileSystem::ZipFsFile
Instances of this class are normally accessed via the accessor ZipFile::file. An instance of ZipFsFile behaves like ruby's builtin File (class) object, except it works on ZipFile entries.
The individual methods are not documented due to their similarity with the methods in File
Attributes
dir[W]
Public Class Methods
new(mappedZip)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 156 def initialize(mappedZip) @mappedZip = mappedZip end
Public Instance Methods
atime(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 311 def atime(fileName) e = get_entry(fileName) if e.extra.member? "UniversalTime" e.extra["UniversalTime"].atime else nil end end
basename(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 289 def basename(fileName) ::File.basename(fileName) end
blockdev?(filename)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 333 def blockdev?(filename) false end
chardev?(filename)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 337 def chardev?(filename) false end
chmod(modeInt, *filenames)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 264 def chmod (modeInt, *filenames) filenames.each { |fileName| e = get_entry(fileName) e.fstype = 3 # force convertion filesystem type to unix e.externalFileAttributes = modeInt << 16 } filenames.size end
chown(ownerInt, groupInt, *filenames)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 252 def chown(ownerInt, groupInt, *filenames) filenames.each { |fileName| e = get_entry(fileName) unless e.extra.member?("IUnix") e.extra.create("IUnix") end e.extra["IUnix"].uid = ownerInt e.extra["IUnix"].gid = groupInt } filenames.size end
ctime(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 320 def ctime(fileName) e = get_entry(fileName) if e.extra.member? "UniversalTime" e.extra["UniversalTime"].ctime else nil end end
delete(*args)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 394 def delete(*args) args.each { |fileName| if directory?(fileName) raise Errno::EISDIR, "Is a directory - \"#{fileName}\"" end @mappedZip.remove(fileName) } end
Also aliased as: unlink
directory?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 222 def directory?(fileName) entry = @mappedZip.find_entry(fileName) expand_path(fileName) == "/" || (entry != nil && entry.directory?) end
dirname(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 285 def dirname(fileName) ::File.dirname(fileName) end
executable?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 197 def executable?(fileName) unix_mode_cmp(fileName, 0111) end
Also aliased as: executable_real?
exists?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 178 def exists?(fileName) expand_path(fileName) == "/" || @mappedZip.find_entry(fileName) != nil end
expand_path(aPath)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 410 def expand_path(aPath) @mappedZip.expand_path(aPath) end
file?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 280 def file?(fileName) entry = @mappedZip.find_entry(fileName) entry != nil && entry.file? end
foreach(fileName, aSep = $/, &aProc)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 390 def foreach(fileName, aSep = $/, &aProc) open(fileName) { |is| is.each_line(aSep, &aProc) } end
ftype(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 349 def ftype(fileName) @mappedZip.get_entry(fileName).directory? ? "directory" : "file" end
join(*fragments)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 297 def join(*fragments) ::File.join(*fragments) end
link(fileName, symlinkName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 361 def link(fileName, symlinkName) raise NotImplementedError, "The link() function is not implemented" end
mtime(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 307 def mtime(fileName) @mappedZip.get_entry(fileName).mtime end
new(fileName, openMode = "r")
click to toggle source
# File lib/zip/zipfilesystem.rb, line 238 def new(fileName, openMode = "r") open(fileName, openMode) end
open(fileName, openMode = "r", &block)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 227 def open(fileName, openMode = "r", &block) case openMode when "r" @mappedZip.get_input_stream(fileName, &block) when "w" @mappedZip.get_output_stream(fileName, &block) else raise StandardError, "openmode '#{openMode} not supported" unless openMode == "r" end end
owned?(fileName)
Permissions not implemented, so if the file exists it is accessible
Alias for: exists?
pipe()
click to toggle source
# File lib/zip/zipfilesystem.rb, line 365 def pipe raise NotImplementedError, "The pipe() function is not implemented" end
pipe?(filename)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 329 def pipe?(filename) false end
popen(*args, &aProc)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 386 def popen(*args, &aProc) File.popen(*args, &aProc) end
read(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 382 def read(fileName) @mappedZip.read(fileName) end
readable?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 187 def readable?(fileName) unix_mode_cmp(fileName, 0444) end
Also aliased as: readable_real?
readlines(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 378 def readlines(fileName) open(fileName) { |is| is.readlines } end
readlink(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 353 def readlink(fileName) raise NotImplementedError, "The readlink() function is not implemented" end
rename(fileToRename, newName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 404 def rename(fileToRename, newName) @mappedZip.rename(fileToRename, newName) { true } end
setgid?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 206 def setgid?(fileName) unix_mode_cmp(fileName, 02000) end
setuid?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 202 def setuid?(fileName) unix_mode_cmp(fileName, 04000) end
size(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 242 def size(fileName) @mappedZip.get_entry(fileName).size end
size?(fileName)
click to toggle source
Returns nil for not found and nil for directories
# File lib/zip/zipfilesystem.rb, line 247 def size?(fileName) entry = @mappedZip.find_entry(fileName) return (entry == nil || entry.directory?) ? nil : entry.size end
socket?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 345 def socket?(fileName) false end
split(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 293 def split(fileName) ::File.split(fileName) end
stat(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 369 def stat(fileName) if ! exists?(fileName) raise Errno::ENOENT, fileName end ZipFsStat.new(self, fileName) end
Also aliased as: lstat
sticky?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 210 def sticky?(fileName) unix_mode_cmp(fileName, 01000) end
symlink(fileName, symlinkName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 357 def symlink(fileName, symlinkName) raise NotImplementedError, "The symlink() function is not implemented" end
symlink?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 341 def symlink?(fileName) false end
truncate(fileName, len)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 218 def truncate(fileName, len) raise StandardError, "truncate not supported" end
umask(*args)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 214 def umask(*args) ::File.umask(*args) end
utime(modifiedTime, *fileNames)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 301 def utime(modifiedTime, *fileNames) fileNames.each { |fileName| get_entry(fileName).time = modifiedTime } end
writable?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 192 def writable?(fileName) unix_mode_cmp(fileName, 0222) end
Also aliased as: writable_real?
zero?(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 273 def zero?(fileName) sz = size(fileName) sz == nil || sz == 0 rescue Errno::ENOENT false end
Private Instance Methods
get_entry(fileName)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 160 def get_entry(fileName) if ! exists?(fileName) raise Errno::ENOENT, "No such file or directory - #{fileName}" end @mappedZip.find_entry(fileName) end
unix_mode_cmp(fileName, mode)
click to toggle source
# File lib/zip/zipfilesystem.rb, line 168 def unix_mode_cmp(fileName, mode) begin e = get_entry(fileName) e.fstype == 3 && ((e.externalFileAttributes >> 16) & mode ) != 0 rescue Errno::ENOENT false end end