Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Nov 22, 2019 10:06 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 30 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Thu Nov 05, 2015 4:02 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
Библиотека позволяет выполнять такие операции как:

  • Чтение данных (ф-ция
    Code:
    fs.read(path)
    читает файл path и выделяет под размер этого файла область памяти, в регистре ECX содержится размер самого файла. Чтобы освободить память, достаточно вызвать free указав адрес области памяти.)

  • Удаление (ф-ция
    Code:
    fs.remove(path)
    рекурсивно удаляет все элементы входящую директорию path и так же удаляет её)

  • Копирование (ф-ция
    Code:
    fs.copy(path1,path2)
    осуществляет рекурсивное копирование из path1 в path2)

  • Перемещение (ф-ция
    Code:
    fs.move(path1,path2)
    осуществляет рекурсивное перемещение из path1 в path2, в случае ошибки приостанавливается, те файлы которые не перенесли остаются в сохранности)

  • Получить размер файла/папки (ф-ция
    Code:
    fs.get_size(path)
    осуществляет рекурсивное получение путем суммирования размеров файлов. Так же регистр ECX содержит кол-во папок, а EDX - файлов.)

  • Создание папки (ф-ция
    Code:
    fs.make_dir(path)
    )

  • Переименование файла/папки (ф-ция
    Code:
    fs.rename(path,new_name)
    осуществляет переименование файла/папки имени в пути path на новое new_name, в случае ошибки приостанавливается, те файлы которые не перенесли остаются в сохранности, взаимодействует с ф-цией fs.move)

  • Получить кол-во файлов и папок в определенной директории (ф-ция
    Code:
    fs.get_entries_count(path)
    возвращает кол-во файлов и папок в директории path, стоит отметить, возвращается только реальное кол-во без ./ и ../!)

  • Получить указатель на блок файлов папки (ф-ция
    Code:
    fs.get_dir_info(path)
    возвращает блок данных)
Отдельно идет еще ф-ция fs.get_full_path(path), она преобразует путь в стандартный Windows формат определения пути.
Например:
Code:
char *path = fs.get_full_path("file.txt");

то переменная path будет
Code:
/путь к директории от куда запущен файл/file.txt

Если
Code:
char *path = fs.get_full_path("/file.txt");

То
Code:
/sys/file.txt


Все ф-ции описанные выше взаимодействуют с функцией fs.get_full_path, это сделано ради удобства.


Attachments:
fs.obj [4.35 KiB]
Downloaded 95 times


Last edited by paulcodeman on Fri Nov 13, 2015 2:23 pm, edited 12 times in total.
Top
   
PostPosted: Thu Nov 05, 2015 4:34 pm 
Offline

Joined: Sun Aug 09, 2015 3:41 pm
Posts: 110
Это по какой конвенции наименования для функции используется идентификатор в верхнем регистре? Переименование надо делать на уровне драйверов ФС.


Top
   
PostPosted: Thu Nov 05, 2015 4:50 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
Ray wrote:
Это по какой конвенции наименования для функции используется идентификатор в верхнем регистре? Переименование надо делать на уровне драйверов ФС.

Можно и на нижнем регистре, но для минимализации совпадений сделал на верхнем.
На счет переименовании это понятно, я в драйверах не очень. Да и сложно наверно, поэтому сделал такой вариант, может быть как временный, пока не появиться лучше.


Top
   
PostPosted: Thu Nov 05, 2015 6:08 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
Библиотека для файловых менеджеров? Планируешь перевести на неё Eolite?


Top
   
PostPosted: Thu Nov 05, 2015 6:24 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
Pathoswithin wrote:
Библиотека для файловых менеджеров? Планируешь перевести на неё Eolite?

Так точно.


Top
   
PostPosted: Thu Nov 05, 2015 6:40 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
Сделал еще проще, теперь названия все через точку и в низ. регистре. Это дает возможность меньше запутаться.


Top
   
PostPosted: Thu Nov 05, 2015 8:25 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
Нужно сразу выбрать, использовать сокращения или полные названия (или mv и mkdir, или move и make_dir).

pavelyakov wrote:
надо сейчас нормальные названия придумать, так как после буду присоединять с файловыми менеджерами

fs.delete можно переименовать в fs.remove. Так же думаю стоит добавить второй аргумент, который будет отвечать, стоит ли удалять это, если это директория (аналог ключа --force). И можно сделать обертку remove_dir, которая вызывает remove, у которого второй аргумент true.
fs.cut -> fs.move
fs.size -> fs.get_size
fs.mkdir -> fs.make_dir
fs.dir.load -> fs.get_dir_info
fs.dir.count -> fs.get_entries_count(dir_info)
fs.get.path -> fs.get_full_path
fs.rename - я не особо понимаю, чем он отличается от fs.cut/fs.move.
fs.dir.count и fs.dir.load - как по мне, лучше сделать так, чтобы fs.dir.load возвращал структуру (или в качестве аргумента лучше давать указатель на структуру), а уже методы для работы с этой структурой (например count) лучше применять сразу к структуре, чтобы было меньше лишних вызовов.
Code:
string path = "..";
DirInfo* dir = new DirInfo;
fs.get_dir_info(dir, path);
printf("There are %d files in %s", fs.get_entries_count(dir), fs.get_full_path(path));


Top
   
PostPosted: Thu Nov 05, 2015 8:45 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
e-andrew wrote:
Нужно сразу выбрать, использовать сокращения или полные названия (или mv и mkdir, или move и make_dir).

pavelyakov wrote:
надо сейчас нормальные названия придумать, так как после буду присоединять с файловыми менеджерами

fs.delete можно переименовать в fs.remove. Так же думаю стоит добавить второй аргумент, который будет отвечать, стоит ли удалять это, если это директория (аналог ключа --force). И можно сделать обертку remove_dir, которая вызывает remove, у которого второй аргумент true.
fs.cut -> fs.move
fs.size -> fs.get_size
fs.mkdir -> fs.make_dir
fs.dir.load -> fs.get_dir_info
fs.dir.count -> fs.get_entries_count(dir_info)
fs.get.path -> fs.get_full_path
fs.rename - я не особо понимаю, чем он отличается от fs.cut/fs.move.
fs.dir.count и fs.dir.load - как по мне, лучше сделать так, чтобы fs.dir.load возвращал структуру (или в качестве аргумента лучше давать указатель на структуру), а уже методы для работы с этой структурой (например count) лучше применять сразу к структуре, чтобы было меньше лишних вызовов.
Code:
string path = "..";
DirInfo* dir = new DirInfo;
fs.get_dir_info(dir, path);
printf("There are %d files in %s", fs.get_entries_count(dir), fs.get_full_path(path));

Отлично. Теперь более понятнее. На счет структуры подумаю как лучше сделать.


Top
   
PostPosted: Fri Nov 06, 2015 9:40 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
Почему ты не хочешь открыть исходники?


Top
   
PostPosted: Fri Nov 06, 2015 9:54 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
e-andrew wrote:
Почему ты не хочешь открыть исходники?

они слишком специфичные xD


Top
   
PostPosted: Sat Nov 07, 2015 10:03 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
а вызов callback функции в копировании и перемещении есть? Нужно для прогрессбара.

_________________
я лишь учусь


Top
   
PostPosted: Sat Nov 07, 2015 10:56 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
punk_joker wrote:
а вызов callback функции в копировании и перемещении есть? Нужно для прогрессбара.

Как раз об этом и думаю сделать.


Top
   
PostPosted: Sun Nov 08, 2015 6:15 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
По поводу fs.get_entries_count, она возвращает количисве файлов, или файлов и директорий?

_________________
я лишь учусь


Top
   
PostPosted: Sun Nov 08, 2015 6:47 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
punk_joker wrote:
По поводу fs.get_entries_count, она возвращает количисве файлов, или файлов и директорий?

файлов и директорий в определенной папке


Top
   
PostPosted: Sun Nov 08, 2015 6:56 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
Можешь добавить для нее параметры? Чтобв считало количество файлов и директорий, только директории, и только файлы?

_________________
я лишь учусь


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 30 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited