Class: XFS::Directory

Inherits:
Object
  • Object
show all
Defined in:
lib/fs/xfs/directory.rb

Constant Summary collapse

DOT =
1
DOTDOT =
2
ROOT_DIRECTORY =
128

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sb, inode_number = ROOT_DIRECTORY) ⇒ Directory

Returns a new instance of Directory.



22
23
24
25
26
27
28
29
# File 'lib/fs/xfs/directory.rb', line 22

def initialize(sb, inode_number = ROOT_DIRECTORY)
  raise "XFS::Directory: Nil superblock"   if sb.nil?
  @sb           = sb
  @inode_number = inode_number
  @inode_object = sb.get_inode(inode_number)
  raise "XFS::Directory: INODE=#{inode_number} is NOT a DIRECTORY" unless @inode_object.directory?
  @data         = @inode_object.read
end

Instance Attribute Details

#inode_numberObject (readonly)

Returns the value of attribute inode_number.



20
21
22
# File 'lib/fs/xfs/directory.rb', line 20

def inode_number
  @inode_number
end

#inode_objectObject (readonly)

Returns the value of attribute inode_object.



20
21
22
# File 'lib/fs/xfs/directory.rb', line 20

def inode_object
  @inode_object
end

Instance Method Details

#find_entry(name, type = nil) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/fs/xfs/directory.rb', line 35

def find_entry(name, type = nil)
  return nil unless glob_entries.key?(name)

  glob_entries[name].each do |entry|
    @inode_object    = @sb.get_inode(entry.inode)
    entry.file_type = @inode_object.file_mode_to_file_type
    return entry if (entry.file_type == type) || type.nil?
  end
  nil
end

#glob_namesObject



31
32
33
# File 'lib/fs/xfs/directory.rb', line 31

def glob_names
  @ent_names ||= glob_entries.keys.compact.sort
end