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

Discussing libraries simplifying applications development
Post Reply
Mario

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

Post by Mario »

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

Если у кого-нибудь есть более лучшие идеи (реальные, а не фантастические) и\или дополнения - готов их выслушать и учесть.
User avatar
Albom
Mentor
Posts: 757
Joined: Tue Jan 15, 2008 11:27 am

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

Post by Albom »

если возможно и рационально реализовать именно в этой библиотеке, то не помешали бы стандартные ф-ции ввода/вывода Си (fopen, fclose, fprintf, ...). можете считать это хотелкой...
Mario

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

Post by Mario »

Дело в том, что я не знаком с функциями, которые в Си - если есть подробное разжеванное описание, то можно учесть пожелание. Библиотека будет подключаться и вызываться подобно Box_Lib, так что проблем с использованием в ЯВУ не должно быть по идее. В самом ядре Колибри по идее нет такого явления как открыть и закрыть файл.

З.Ы. Хотелки именно в таком ключе высказывать вполне правильно.
User avatar
Albom
Mentor
Posts: 757
Joined: Tue Jan 15, 2008 11:27 am

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

Post 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
User avatar
mike.dld
Site Founder
Posts: 693
Joined: Sun Aug 08, 2004 8:55 am

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

Post by mike.dld »

Есть предложение добавить твои функции в libio вместо создания новой библиотеки. Больше по существу пока что ничего.
in code we trust
Mario

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

Post by Mario »

Предложение интересное, но есть пара моментов которые меня не воодушевляют. Во-первых, документации даже пользовательской нет (исходники типа Тинипада - не самая понятная документация, помнится я очень долго разбирался с libini), во-вторых стиль кода очень сильно отличается, что опять же затрудняет мое понимание. Я подумаю, спасибо за предложение.
User avatar
mike.dld
Site Founder
Posts: 693
Joined: Sun Aug 08, 2004 8:55 am

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

Post by mike.dld »

Набросал немного документации по libio. Пока что только на английском, так как легче (практически вся информация взята из комментариев в исходном коде, которые таки на английском). Лежит тут: http://wiki.kolibrios.org/wiki/Libs-dev.
in code we trust
User avatar
Albom
Mentor
Posts: 757
Joined: Tue Jan 15, 2008 11:27 am

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

Post by Albom »

Извините за нескромный вопрос (да, я ленивый человек и в коде мне лазить неохота), но:
- А функции библиотеки libio типа stdcall? Или параметры передаются через регистры?
User avatar
mike.dld
Site Founder
Posts: 693
Joined: Sun Aug 08, 2004 8:55 am

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

Post by mike.dld »

Они stdcall. Из описаний видно, что используется макрос proc, а в конце статьи есть пример.
in code we trust
User avatar
Albom
Mentor
Posts: 757
Joined: Tue Jan 15, 2008 11:27 am

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

Post by Albom »

спасибо. до конца-то я и не дочитал :) а насчёт proc я мог и ошибаться.
User avatar
mike.dld
Site Founder
Posts: 693
Joined: Sun Aug 08, 2004 8:55 am

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

Post by mike.dld »

Подправил немного документацию, перевёл на русский. Читайте на здоровье :)
in code we trust
User avatar
Asper
Posts: 988
Joined: Fri Jun 27, 2008 3:22 pm

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

Post by Asper »

Давно ждал документацию. Во многом разобрался сам (на исходниках), но это же не дело, когда для использования библиотеки нужно разбираться в её исходниках. Теперь прикладникам будет легче писать программы. Спасибо Майк!
User avatar
Albom
Mentor
Posts: 757
Joined: Tue Jan 15, 2008 11:27 am

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

Post by Albom »

mike.dld
Спасибо!
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest