Page 1 of 18

Работа с файловой системой

Posted: Fri Mar 24, 2006 8:40 pm
by diamond
Текущая реализация файловой системы имеет следующие ограничения:
1. Поддержка только FAT.
2. Поддержка только имен файлов в формате 8.3.
Есть одно исключение - при чтении директории длинные имена можно добыть. Но, во-первых, это не является заслугой ядра, а во-вторых, обращаться к файловой системе по этим именам все равно нельзя.
3. Отсутствие нормальной работы с директориями - можно только читать их как файлы. С этим еще можно работать, пока поддерживается только FAT, хотя и несколько неудобно, но в дальнейшем...
О пункте 1 речь пока не идет. Я собираюсь сделать нормальную работу с длинными именами файлов и, потом, с каталогами, но:
для работы с файловой системой используется 58-я функция. (Все прочие всегда можно объявить устаревшими.) Формально в документации примеры путей имеют вид "/hd/1/file.ext". Но ядро понимает также имена типа "/hd/1/FILE EXT" (4 пробела) (и даже "/hd/1/FILENAMEEXT" как "/hd/1/filename.ext"). Поэтому для длинных имен придется делать одно из:
1) Отказаться от обратной совместимости, поправить mfar, sysxtree (кстати, есть еще программы, использующие это?) (надеюсь, я могу заниматься такими модификациями?)
2) Завести новую сисфункцию типа "расширенная работа с файловой системой"
3) Завести дополнительные подфункции в 58-й функции типа 0x100 - read, 0x101 - write и т.д.
Ваше мнение, коллеги?
P.S. Я предпочитаю забить на обратную совместимость.

Posted: Sat Mar 25, 2006 11:28 am
by Mario79
diamond
1) Нельзя отказываться от обратной совместимости совсем. И программ использующих 58 функцию больше чем эти 2, которые ты перечислил. Мы в обязательном порядке потеряем все игры собранные на Cи.
2) Вот сделай это, только не трогая прежних процедур. Сделай пока параллельную работу обоих подсистем.
3) А кто мешает.
Я все же за то чтобы оставить обратную совместимость.

Posted: Sat Mar 25, 2006 7:04 pm
by andrew_programmer
Я тоже за введение нового при поддержке старого.

Posted: Sat Mar 25, 2006 7:29 pm
by halyavin
Mario79
Этой недокументированной особенностью 58 функции пользуется не так много программ.

Posted: Sat Mar 25, 2006 8:47 pm
by Mario79
halyavin
Да делайте блин что хотите.
Один хер мое мнение в лучшем случае уже, похоже, никого не интересует.

Марат, опять начинаешь? -- mike.dld
Миша не изображай из себя бога или суперцензора! Я в твои посты не залажу, имей совесть, если она у тебя есть. -- Администратор Mario79

Posted: Sat Mar 25, 2006 10:04 pm
by andrew_programmer
Так если ввести новую системную функцию,то можно будет читать файлы через неё.А 58 функцию оставить как есть,зачем её переписывать.В результате будет улучщена работа с файловой системой при совместимомти со старыми программами.

Мне совсем не хочется,чтобы игрушки которые ущё вчера работали,сегодня бы уже не работали.

Posted: Mon Mar 27, 2006 11:40 am
by diamond
Игрушки, которые ещё вчера работали, будут продолжать работать. Пути типа "/hd/1/dir1.d/file1.ext" будут продолжать работать точно так же. Возможность чтения типа "FILENAMEEXT" недокументирована и работает только в силу особенностей кода ядра. Этой недокументированной возможностью, как уже сказал halyavin, пользуются только небольшое количество программ, я знаю только mfar/sysxtree.
Это чтобы прояснить ситуацию. А вообще если говорите, что лучше оставить совместимость, - прекрасно, пусть будет совместимость (даже на уровне недокументированных функций). Тогда остаются варианты 2 и 3.
А кстати, эти особенности присутствуют из-за того, что вся работа завязана на FAT. Думаете, человек, который будет писать поддержку ext*fs или NTFS, захочет (и вообще сможет) эмулировать такие эффекты?

Posted: Mon Mar 27, 2006 7:00 pm
by Mario79
diamond
Я же высказал свое мнение. Если ты считаешь, что, так как предлагаешь ты:
1) Лучше
2) Надежней
3) Ты согласен получать пинки и вовремя отвечать на них лично.
То делай, что задумал.

Вообще у меня уже у самого вызревает идея изменения обработки дисковых функций, но не в том ключе, который предлагаешь ты.
Если будет желание узнать, мыль мне mario79[dog]bk[dot]ru и распиши подробнее, что хочешь сделать. Потому что нужно согласовывать подобные действия, чтобы не получить два противоположных результата.

Posted: Mon Mar 27, 2006 7:37 pm
by Mario79
diamond
Я как-то не думал, что считывание папки как файла является недокументированной функцией. Я почему-то думал, что это обычное дело.
Извиняюсь за оффтоп. SYSXTREE не запускает приложения, если в строке пути присутствует точка.

Posted: Tue Mar 28, 2006 5:45 pm
by diamond
Подводя итог: народу нравится обратная совместимость. Хорошо, на том и порешим. Пока нет поддержки других файловых систем, это будет работать. Я собираюсь ввести новые подфункции 58-й функции, начиная с 0x100 (для удобства) - чтение/запись/... с учётом длинных имён.
Mario79
Считывание папки как файла в сегодняшней Kolibri - вещь, похоже, документированная (правда, с определением документированности есть некоторые проблемы). Я просто просматриваю в перспективе добавление ext*fs и NTFS, а там структура директорий совершенно другая.

Posted: Tue Mar 28, 2006 7:50 pm
by Mario79
diamond
Ну, в ISO9660 структура тоже несколько другая, а я рассматриваю возможность добавления в ядро исходников, которыми со мной любезно поделился заграничный товарищ Dex.
Давай тогда вырабатывай единый стандарт, в который будут преобразовываться данные на выходе для приложения.
Отсутствие стандарта на многие вещи самая большая проблема для Колибри.

Posted: Wed Apr 26, 2006 4:36 pm
by diamond
Добавил чтение с длинными именами файлов - подфункция 0x100 функции 58 (описание входит в мою документацию, online-версия http://shade.msu.ru/~msu-se/klbr_doc/58100.htm)

Posted: Wed Apr 26, 2006 5:44 pm
by Mario79
diamond
А может стоит перенести реализацию новых подфункций в 70 функцию? Я как раз для этого ее зарезервировал.
Впрочем, дело твое.

Posted: Wed Apr 26, 2006 5:50 pm
by diamond
Mario79
Да мне без разницы. Это как народ скажет...

Posted: Wed Apr 26, 2006 6:18 pm
by Mario79
diamond
Психологически проще.