Class: ReiserFS::Directory
- Inherits:
-
Object
- Object
- ReiserFS::Directory
- Defined in:
- lib/fs/ReiserFS/directory.rb
Constant Summary collapse
- ROOT_DIR =
{'directory_id' => 1, 'object_id' => 2, 'offset' => 0, 'type' => 0}
Instance Attribute Summary collapse
-
#key ⇒ Object
Returns the value of attribute key.
-
#sb ⇒ Object
Returns the value of attribute sb.
Instance Method Summary collapse
- #findEntry(name) ⇒ Object
- #findKey(name) ⇒ Object
- #globNames ⇒ Object
-
#initialize(sb, key = nil) ⇒ Directory
constructor
A directory is composed of 2 things: Key and BlockNum Key is in the form of doid,oid,offset,type BlockNum is what is used to actually instantiate the Block object.
Constructor Details
#initialize(sb, key = nil) ⇒ Directory
A directory is composed of 2 things: Key and BlockNum
Key is in the form of {doid,oid,offset,type}
BlockNum is what is used to actually instantiate the Block object
Note: BlockNum can always be computed from Key and the ROOT_DIR
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fs/ReiserFS/directory.rb', line 19 def initialize(sb, key = nil) raise "Nil superblock" if sb.nil? @sb = sb @key = key.nil? ? ROOT_DIR : key @leaves = @sb.getLeafNodes(@key) @dirEntry = nil @dirItems = nil raise "Key #{Utils.dumpKey(@key)} NOT found" if @leaves.nil? @leaves.each do |leaf| leaf.getItemHeaders.each do |iheader| @dirEntry = DirectoryEntry.new(leaf, iheader, @key) if Utils.typeIsStat?(leaf.getItemType(iheader)) end end end |
Instance Attribute Details
#key ⇒ Object
Returns the value of attribute key.
10 11 12 |
# File 'lib/fs/ReiserFS/directory.rb', line 10 def key @key end |
#sb ⇒ Object
Returns the value of attribute sb.
10 11 12 |
# File 'lib/fs/ReiserFS/directory.rb', line 10 def sb @sb end |
Instance Method Details
#findEntry(name) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/fs/ReiserFS/directory.rb', line 46 def findEntry(name) initDirItems if @dirItems.key?(name) hash = @dirItems[name] unless hash.key?('dirEntry') hash['dirEntry'] = createDirectoryEntry(hash['key']) @dirItems[name] = hash end return hash['dirEntry'] end nil end |
#findKey(name) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/fs/ReiserFS/directory.rb', line 36 def findKey(name) initDirItems if @dirItems.key?(name) hash = @dirItems[name] return hash['key'] end nil end |
#globNames ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/fs/ReiserFS/directory.rb', line 60 def globNames if @names.nil? initDirItems @names = @dirItems.keys @names.sort! end @names end |