Page 1 of 1

File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 09, 2010 12:52 pm
by Mario
В связи с предстоящим капитальным переписыванием KFM (Kolibri File Manager - если кто не знает, то его уши торчат из OpenDialog и Box_Lib, компонента FileBrowser соответственно) я планирую если не все операции с дисковой подсистемой, то хотя бы опции копирования переместить в такую библиотеку. Зачем по идее понятно - чтобы авторы всех других программы, которым позарез нужно скопировать файл или папку, не мучались изобретая свои велосипеды. Процедура будет настраиваемой, чтобы не было проблем с монопольным захватом файловых устройств на долгое время и нехваткой оперативной памяти или ее избыточным использованием как в случае с KFM сейчас (это ускоряет копирование, но ухудшает время отклика и монопольно захватывает дисковое устройство на длительное время). При использовании обращения всех программ в системе через эту библиотеку (разумеется их придется подкорректировать) можно получить более лучшее квази-параллельное распределение обращений к дисковой подсистеме, чем это есть сейчас - при этом переписывание ядра не потребуется.

Если у кого-нибудь есть более лучшие идеи (реальные, а не фантастические) и\или дополнения - готов их выслушать и учесть.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 09, 2010 1:54 pm
by Albom
если возможно и рационально реализовать именно в этой библиотеке, то не помешали бы стандартные ф-ции ввода/вывода Си (fopen, fclose, fprintf, ...). можете считать это хотелкой...

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 09, 2010 2:05 pm
by Mario
Дело в том, что я не знаком с функциями, которые в Си - если есть подробное разжеванное описание, то можно учесть пожелание. Библиотека будет подключаться и вызываться подобно Box_Lib, так что проблем с использованием в ЯВУ не должно быть по идее. В самом ядре Колибри по идее нет такого явления как открыть и закрыть файл.

З.Ы. Хотелки именно в таком ключе высказывать вполне правильно.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 09, 2010 9:07 pm
by Albom
Оказалось, что толковых статей (на русском языке) по этой теме не так уж и много. Вот несколько, с которыми ИМХО следует ознакомиться...
http://www.borland-academy.ru/courses/c ... 03.03.html
http://ru.wikipedia.org/wiki/Файловый_в ... в_языке_Си
http://ru.wikipedia.org/wiki/Stdio.h
http://mymanual.narod.ru/programmist/cp ... gl_4_1.htm

Структура FILE описана следующим образом (взято отсюда http://tigcc.ticalc.org/doc/stdio.html):

Code: Select all

typedef struct { 	char *fpos; /* Current position of file pointer (absolute address) */
void *base; /* Pointer to the base of the file */
unsigned short handle; /* File handle */
short flags; /* Flags (see FileFlags) */
short unget; /* 1-byte buffer for ungetc (b15=1 if non-empty) */
unsigned long alloc; /* Number of currently allocated bytes for the file */
unsigned short buffincrement; /* Number of bytes allocated at once */
} FILE;

Функция fprintf подобна printf из console.obj. Описание:
http://ru.wikipedia.org/wiki/Printf

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Thu Jul 22, 2010 5:34 am
by mike.dld
Есть предложение добавить твои функции в libio вместо создания новой библиотеки. Больше по существу пока что ничего.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Thu Jul 22, 2010 6:13 am
by Mario
Предложение интересное, но есть пара моментов которые меня не воодушевляют. Во-первых, документации даже пользовательской нет (исходники типа Тинипада - не самая понятная документация, помнится я очень долго разбирался с libini), во-вторых стиль кода очень сильно отличается, что опять же затрудняет мое понимание. Я подумаю, спасибо за предложение.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 23, 2010 7:26 am
by mike.dld
Набросал немного документации по libio. Пока что только на английском, так как легче (практически вся информация взята из комментариев в исходном коде, которые таки на английском). Лежит тут: http://wiki.kolibrios.org/wiki/Libs-dev.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 23, 2010 10:45 am
by Albom
Извините за нескромный вопрос (да, я ленивый человек и в коде мне лазить неохота), но:
- А функции библиотеки libio типа stdcall? Или параметры передаются через регистры?

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 23, 2010 12:11 pm
by mike.dld
Они stdcall. Из описаний видно, что используется макрос proc, а в конце статьи есть пример.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Fri Jul 23, 2010 2:55 pm
by Albom
спасибо. до конца-то я и не дочитал :) а насчёт proc я мог и ошибаться.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Sat Jul 24, 2010 1:03 pm
by mike.dld
Подправил немного документацию, перевёл на русский. Читайте на здоровье :)

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Sat Jul 24, 2010 7:51 pm
by Asper
Давно ждал документацию. Во многом разобрался сам (на исходниках), но это же не дело, когда для использования библиотеки нужно разбираться в её исходниках. Теперь прикладникам будет легче писать программы. Спасибо Майк!

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Sun Jul 25, 2010 9:45 am
by Mario
mike.dld
Спасибо.

Re: File_Lib.obj - библиотека работы с файловой системой.

Posted: Sun Jul 25, 2010 10:27 am
by Albom
mike.dld
Спасибо!