Refactor `get_entry` in `FileSystem::File(::Stat)`.

Rename it to `find_entry` because that is ultimately what is called on
the underlying zip file. Make `FileSystem::File#find_entry` public as it
need to be called from `FileSystem::File::Stat`, so now we can avoid
`__send__`. Neither class is documented anyway, so no harm done there.
This commit is contained in:
Robert Haines 2021-06-02 22:28:40 +01:00
parent 64a162ced4
commit 9d8fc05c43
3 changed files with 16 additions and 17 deletions

View File

@ -47,7 +47,6 @@ Metrics/PerceivedComplexity:
Naming/AccessorMethodName:
Exclude:
- 'lib/zip/entry.rb'
- 'lib/zip/filesystem/file_stat.rb'
- 'lib/zip/input_stream.rb'
- 'lib/zip/streamable_stream.rb'

View File

@ -17,17 +17,16 @@ module Zip
@mapped_zip = mapped_zip
end
def get_entry(filename)
def find_entry(filename)
unless exists?(filename)
raise Errno::ENOENT, "No such file or directory - #{filename}"
end
@mapped_zip.find_entry(filename)
end
private :get_entry
def unix_mode_cmp(filename, mode)
e = get_entry(filename)
e = find_entry(filename)
e.fstype == 3 && ((e.external_file_attributes >> 16) & mode) != 0
rescue Errno::ENOENT
false
@ -111,7 +110,7 @@ module Zip
def chown(owner, group, *filenames)
filenames.each do |filename|
e = get_entry(filename)
e = find_entry(filename)
e.extra.create('IUnix') unless e.extra.member?('IUnix')
e.extra['IUnix'].uid = owner
e.extra['IUnix'].gid = group
@ -121,7 +120,7 @@ module Zip
def chmod(mode, *filenames)
filenames.each do |filename|
e = get_entry(filename)
e = find_entry(filename)
e.fstype = 3 # force convertion filesystem type to unix
e.unix_perms = mode
e.external_file_attributes = mode << 16
@ -160,7 +159,7 @@ module Zip
def utime(modified_time, *filenames)
filenames.each do |filename|
get_entry(filename).time = modified_time
find_entry(filename).time = modified_time
end
end
@ -169,7 +168,7 @@ module Zip
end
def atime(filename)
e = get_entry(filename)
e = find_entry(filename)
if e.extra.member? 'UniversalTime'
e.extra['UniversalTime'].atime
elsif e.extra.member? 'NTFS'
@ -178,7 +177,7 @@ module Zip
end
def ctime(filename)
e = get_entry(filename)
e = find_entry(filename)
if e.extra.member? 'UniversalTime'
e.extra['UniversalTime'].ctime
elsif e.extra.member? 'NTFS'

View File

@ -34,13 +34,8 @@ module Zip
nil
end
def get_entry
@zip_fs_file.__send__(:get_entry, @entry_name)
end
private :get_entry
def gid
e = get_entry
e = find_entry
if e.extra.member? 'IUnix'
e.extra['IUnix'].gid || 0
else
@ -49,7 +44,7 @@ module Zip
end
def uid
e = get_entry
e = find_entry
if e.extra.member? 'IUnix'
e.extra['IUnix'].uid || 0
else
@ -96,13 +91,19 @@ module Zip
end
def mode
e = get_entry
e = find_entry
if e.fstype == 3
e.external_file_attributes >> 16
else
33_206 # 33206 is equivalent to -rw-rw-rw-
end
end
private
def find_entry
@zip_fs_file.find_entry(@entry_name)
end
end
end
end