>>Хм, насколько я знаю, что в файле каталога нет информации о правах доступа файлов
>>которые в нем находятся,в нем имена и ссылки на физическое месторасположение (ну
>>и еще что то).
да, щас немного поэксперемнтировал с жесткими ссылками оказалось, что права приписываются непосредственно к идентификатору файла.
>>Там видишь какая фигня, сначала ищется байт со значением 04h или 08h
>>проверяется следующий за ним байт, является ли он меньше 0Fh и идет проверка
>>является ли идущий за этими двумя байтами байт печатаемым символом...
все-таки реверсить нужно

я сейчас изучал методом тыка что пишется в каталог и оказалось, что там идет имя файла, его идентификатор, тип (обычный файл, каталог, символическая ссылка) и еще пара байт смысл которых мне пока не ясен, да и вообще не понятно зачем хранить тип файла когда это можно прикрепить непосредственно к inode.
вот програмка производящая вроде бы грамотный парсинг http://zaco.info/bsdir.cpp
интересно что идентификатор всегда выравнивается по машинному слову, а иногда программа выводит несуществующее файлы, причем идентификаторы которых, на первый взгляд вполне валидные.. я думаю определить удаленные файлы одним непосредственным парсингом каталога не удасться, нужно лезть в таблицу inode и смотреть есть ли там этот дескриптор или нет.
вообще конечно жалко, что бсд позволяет выполнять вызов open только с флагом O_RDONLY, иначе можно было бы много пакостей наделать
