class Chef::ReservedNames::Win32::File::Info

Objects of class Chef::ReservedNames::Win32::File::Stat encapsulate common status information for Chef::ReservedNames::Win32::File objects. The information is recorded at the moment the Chef::ReservedNames::Win32::File::Stat object is created; changes made to the file after that point will not be reflected.

Public Class Methods

new(file_name) click to toggle source

msdn.microsoft.com/en-us/library/windows/desktop/aa363788(v=vs.85).aspx

# File lib/chef/win32/file/info.rb, line 35
def initialize(file_name)
  raise Errno::ENOENT, file_name unless ::File.exist?(file_name)

  @file_info = retrieve_file_info(file_name)
end

Public Instance Methods

atime()

::File::Stat compat

Alias for: last_access_time
creation_time() click to toggle source
# File lib/chef/win32/file/info.rb, line 53
def creation_time
  parse_time(@file_info[:ft_creation_time])
end
Also aliased as: ctime
ctime()
Alias for: creation_time
index() click to toggle source
# File lib/chef/win32/file/info.rb, line 45
def index
  make_uint64(@file_info[:n_file_index_low], @file_info[:n_file_index_high])
end
ino() click to toggle source

we're faking it here, but this is in the spirit of ino in *nix

from MSDN:

“The identifier (low and high parts) and the volume serial number uniquely identify a file on a single computer. To determine whether two open handles represent the same file, combine the identifier and the volume serial number for each file and compare them.”“

# File lib/chef/win32/file/info.rb, line 84
def ino
  volume_serial_number + index
end
last_access_time() click to toggle source
# File lib/chef/win32/file/info.rb, line 49
def last_access_time
  parse_time(@file_info[:ft_last_access_time])
end
Also aliased as: atime
last_write_time() click to toggle source
# File lib/chef/win32/file/info.rb, line 57
def last_write_time
  parse_time(@file_info[:ft_last_write_time])
end
Also aliased as: mtime
mtime()
Alias for: last_write_time
parse_time(file_time_struct) click to toggle source

given a Chef::ReservedNames::Win32::API::File::FILETIME structure convert into a Ruby Time object.

# File lib/chef/win32/file/info.rb, line 92
def parse_time(file_time_struct)
  wtime_to_time(make_uint64(file_time_struct[:dw_low_date_time],
    file_time_struct[:dw_high_date_time]))
end
size() click to toggle source
# File lib/chef/win32/file/info.rb, line 65
def size
  make_uint64(@file_info[:n_file_size_low], @file_info[:n_file_size_high])
end
volume_serial_number() click to toggle source
# File lib/chef/win32/file/info.rb, line 41
def volume_serial_number
  @file_info[:dw_volume_serial_number]
end