Class: XFS::DirectoryDataHeader

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

Constant Summary collapse

XFS_DIR2_DATA_FD_COUNT =
3

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, sb) ⇒ DirectoryDataHeader

Returns a new instance of DirectoryDataHeader.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/fs/xfs/directory_data_header.rb', line 25

def initialize(data, sb)
  @sb = sb
  if @sb.version_has_crc?
    version_header = Directory3DataHeader.new
  else
    version_header = Directory2DataHeader.new
  end
  @version_3 = version_header.version_3
  header_size = decode_directory_header(data, version_header)
  free_offset = header_size
  @data_free    = []
  @free_end     = 0
  (1..XFS_DIR2_DATA_FD_COUNT).each do |i|
    @free_end     = header_size + SIZEOF_DIRECTORY_DATA_FREE * i
    @data_free[i] = DIRECTORY_DATA_FREE.decode(data[free_offset..@free_end])
    free_offset   = @free_end
  end
  @header_end = @free_end
  @header_end += version_header.pad
end

Instance Attribute Details

#data_headerObject (readonly)

Returns the value of attribute data_header.



16
17
18
# File 'lib/fs/xfs/directory_data_header.rb', line 16

def data_header
  @data_header
end

#header_endObject (readonly)

Returns the value of attribute header_end.



16
17
18
# File 'lib/fs/xfs/directory_data_header.rb', line 16

def header_end
  @header_end
end

#version_3Object (readonly)

Returns the value of attribute version_3.



16
17
18
# File 'lib/fs/xfs/directory_data_header.rb', line 16

def version_3
  @version_3
end

Instance Method Details

#decode_directory_header(data, header) ⇒ Object



18
19
20
21
22
23
# File 'lib/fs/xfs/directory_data_header.rb', line 18

def decode_directory_header(data, header)
  template     = header.template
  @data_header = template.decode(data)
  header.magic_numbers.each { |magic_number| return template.size if @data_header['magic'] == magic_number }
  raise "XFS::DirectoryDataHeader: Invalid Magic Number #{@data_header['magic']}"
end