Class: Ext4::Directory

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

Constant Summary collapse

ROOT_DIRECTORY =
2

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sb, inodeNum = ROOT_DIRECTORY) ⇒ Directory

Returns a new instance of Directory.



11
12
13
14
15
16
17
18
19
20
# File 'lib/fs/ext4/directory.rb', line 11

def initialize(sb, inodeNum = ROOT_DIRECTORY)
  log_prefix = "Ext4::Directory.initialize"
  raise "#{log_prefix}: Nil superblock"   if sb.nil?
  raise "#{log_prefix}: Nil inode number" if inodeNum.nil?
  @sb       = sb
  @inodeNum = inodeNum
  @inodeObj = sb.getInode(inodeNum)
  raise "#{log_prefix}: INODE=#{inodeNum} is NOT a DIRECTORY" unless @inodeObj.isDir?
  @data     = @inodeObj.read
end

Instance Attribute Details

#inodeNumObject (readonly)

Returns the value of attribute inodeNum.



9
10
11
# File 'lib/fs/ext4/directory.rb', line 9

def inodeNum
  @inodeNum
end

Instance Method Details

#findEntry(name, type = nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/fs/ext4/directory.rb', line 26

def findEntry(name, type = nil)
  return nil unless globEntries.key?(name)

  globEntries[name].each do |ent|
    unless @sb.isNewDirEnt?
      inode        = @sb.getInode(ent.inode)
      ent.fileType = inode.fileModeToFileType
    end

    return ent if (ent.fileType == type) || type.nil?
  end
  nil
end

#globNamesObject



22
23
24
# File 'lib/fs/ext4/directory.rb', line 22

def globNames
  @ent_names ||= globEntries.keys.compact.sort
end