class Zip::FileSystem::ZipFsFile::ZipFsStat

def blksize

def blksize
  nil
end

def blocks

def blocks
  nil
end

def delegate_to_fs_file(*methods)

def delegate_to_fs_file(*methods)
  methods.each do |method|
    class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
      def #{method}                      # def file?
        @zip_fs_file.#{method}(@entry_name) #   @zip_fs_file.file?(@entry_name)
      end                                # end
    END_EVAL
  end
end

def dev

def dev
  0
end

def ftype

def ftype
  if file?
    'file'
  elsif directory?
    'directory'
  else
    raise StandardError, 'Unknown file type'
  end
end

def get_entry

def get_entry
  @zip_fs_file.__send__(:get_entry, @entry_name)
end

def gid

def gid
  e = get_entry
  if e.extra.member? 'IUnix'
    e.extra['IUnix'].gid || 0
  else
    0
  end
end

def initialize(zip_fs_file, entry_name)

def initialize(zip_fs_file, entry_name)
  @zip_fs_file = zip_fs_file
  @entry_name = entry_name
end

def ino

def ino
  0
end

def kind_of?(type)

def kind_of?(type)
  super || type == ::File::Stat
end

def mode

def mode
  e = get_entry
  if e.fstype == 3
    e.external_file_attributes >> 16
  else
    33_206 # 33206 is equivalent to -rw-rw-rw-
  end
end

def nlink

def nlink
  1
end

def rdev

def rdev
  0
end

def rdev_major

def rdev_major
  0
end

def rdev_minor

def rdev_minor
  0
end

def uid

def uid
  e = get_entry
  if e.extra.member? 'IUnix'
    e.extra['IUnix'].uid || 0
  else
    0
  end
end