Обсуждение статьи тематического каталога: Логическая структура жесткого диска (linux disk partition gcc)Ссылка на текст статьи: http://www.opennet.me/base/dev/hdd_struct2.txt.html
Понравилось. В свое время упустил Вашу статью, теперь жалею.
В УСЛОВИИ ПРОВЕРКИ ЯВЛЯЕТСЯ ЛИ ДАННЫЙ РАЗДЕЛ РАСШИРЕННЫМ:
0x0C <- разве это код расширенного раздела, а не обычного W95 FAT32 (LBA)
Имелось в виду 0x85 - Linux Extended
В функции read_ext_ptable перед lseek(dev, seek, SEEK_SET) не следует поставить lseek(dev,0,0). Да бы при каждой новмой итерации расчитывать смещение от начала файла?
И ещё вопрос: обязательно ли два поля таблицы разделов EBR(Extended Boot Record)-smbr могут быть пустыми или возможны варианты? Может имеет смысл дополнительно проверять эти поля пусты они или нет?