История изменений
Исправление SZT, (текущая версия) :
Прямо на диске хэш-таблица? Таблица будет скорее всего иметь какие-то показатели количества и какой-то способ определить размер элемента.
Да, на диске в сериализованном виде хранится хеш-таблица. Записи в хеш-таблице будут иметь допустим такой вид:
used bytes | text description | d
-----------+---------------------------+---------------
somewhere | ptr_to_first_file_ds = 8 | указатель на первый файл в связном списке
...
8..11 | ASCIIZ file_1 name "aaa" |\
12..15 | uint32_t file_1_start = 0 | > struct file
16..19 | uint32_t file_1_len = 10|/
20..23 | uint32_t ptr_to_next = 40|
...
40..43 | ASCIIZ file_2 name "bbb" |\
44..47 | uint32_t file_2_start = 11| > struct file
48..51 | uint32_t file_2_len = 7 |/
20..23 | uint32_t ptr_to_next = 0xffffffff // конец
somewhere
, получаем получаем указатель на первый элемент связного списка, там файл aaa. И надо пройтись по всему этому связному списку, и остановиться, когда найдем файл bbb или когда дойдем до конца связного списка, а конец связного списка когда ptr_to_next = 0xffffffff
- значит файл не найденИсходная версия SZT, :
Прямо на диске хэш-таблица? Таблица будет скорее всего иметь какие-то показатели количества и какой-то способ определить размер элемента.
Записи в хеш-таблице будут иметь допустим такой вид:
used bytes | text description | d
-----------+---------------------------+---------------
somewhere | ptr_to_first_file_ds = 8 | указатель на первый файл в связном списке
...
8..11 | ASCIIZ file_1 name "aaa" |\
12..15 | uint32_t file_1_start = 0 | > struct file
16..19 | uint32_t file_1_len = 10|/
20..23 | uint32_t ptr_to_next = 40|
...
40..43 | ASCIIZ file_2 name "bbb" |\
44..47 | uint32_t file_2_start = 11| > struct file
48..51 | uint32_t file_2_len = 7 |/
20..23 | uint32_t ptr_to_next = 0xffffffff // конец
somewhere
, получаем получаем указатель на первый элемент связного списка, там файл aaa. И надо пройтись по всему этому связному списку, и остановиться, когда найдем файл bbb или когда дойдем до конца связного списка, а конец связного списка когда ptr_to_next = 0xffffffff
- значит файл не найден