libini + libio

Discussing libraries simplifying applications development
User avatar
IgorA
Posts: 939
Joined: Mon Oct 27, 2008 10:10 pm

Re: libini

Post by IgorA »

punk_joker wrote:И еще, есть ли общий способ узнать имена функций любой библиотеки?
Программа rd\1\develop\cobj выдает список функций библиотеки, по идее она прописана в файловых менеджерах для просмотра файлов obj.
User avatar
GerdtR
Posts: 471
Joined: Mon Nov 19, 2012 5:22 pm

Re: libini

Post by GerdtR »

Как удалить секцию в ini файле?
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
G@К
Posts: 9
Joined: Tue Apr 16, 2013 10:22 am

Re: libini

Post by G@К »

Всем привет
Пробую у себя запустить сеть, Zeroconf должен загрузить (открыть) файл network.ini ,который находится в корневой директории, докопался до библиотеки libio ( file.open). Функция 70, подфункция 5 "получение информации о файле/папке" --возвращает ошибку 5 (файл не найден). Меня смущает, что эта подфункция не поддерживает виртуальные папки типа /, /rd и корневые папки типа /rd/1.
Так ли это?
Сделай шаг, и дорога появится сама собой

Стив Джобс
Mario_r4
Kernel Developer
Posts: 2328
Joined: Sun Feb 10, 2013 12:37 pm

Re: libini

Post by Mario_r4 »

G@К
network.ini должен обрабатываться ф.70.5, если есть подозрение на бибилотеку, то всегда можно написать тестовый пример на основе example.asm
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Kernel Developer
Posts: 2328
Joined: Sun Feb 10, 2013 12:37 pm

Re: libini

Post by Mario_r4 »

GerdtR wrote:Как удалить секцию в ini файле?
Вероятно в текущей версии никак.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
G@К
Posts: 9
Joined: Tue Apr 16, 2013 10:22 am

Re: libini

Post by G@К »

Mario_r4 wrote:G@К
network.ini должен обрабатываться ф.70.5, если есть подозрение на бибилотеку, то всегда можно написать тестовый пример на основе example.asm
В том то все и дело, что файл не загружается и zeroconf не выставляет IP,DNS, и т.д. :(
Сделай шаг, и дорога появится сама собой

Стив Джобс
punk_joker
Posts: 1278
Joined: Tue Apr 12, 2011 11:19 pm

Post by punk_joker »

Каким образом можно добавить секцию?
to infinity and beyond
Mario_r4
Kernel Developer
Posts: 2328
Joined: Sun Feb 10, 2013 12:37 pm

Re: libini

Post by Mario_r4 »

Я так понимаю, что она формируется сама, когда вписывается первый параметр.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
User avatar
hidnplayr
Mentor/Kernel Developer
Posts: 1318
Joined: Fri Jun 30, 2006 9:01 am

Re: libini

Post by hidnplayr »

G@К:
network.ini, if present, can always be found on the path '/sys/network.ini'
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
User avatar
GerdtR
Posts: 471
Joined: Mon Nov 19, 2012 5:22 pm

Re: libini

Post by GerdtR »

Исправил баг с потерей памяти. Кому не трудно, закиньте на SVN.
Attachments
libini.zip
(12.9 KiB) Downloaded 308 times
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Mario_r4
Kernel Developer
Posts: 2328
Joined: Sun Feb 10, 2013 12:37 pm

Re: libini

Post by Mario_r4 »

Дайте уже человеку доступ к SVN!
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
User avatar
GerdtR
Posts: 471
Joined: Mon Nov 19, 2012 5:22 pm

Re: libini

Post by GerdtR »

Да я с чужого компа)))
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Mario_r4
Kernel Developer
Posts: 2328
Joined: Sun Feb 10, 2013 12:37 pm

Re: libini

Post by Mario_r4 »

GerdtR wrote:Кому не трудно, закиньте на SVN.
Сделал в r. 3920. Спасибо за исправление.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
User avatar
Anton_K
Posts: 71
Joined: Thu Nov 27, 2014 1:24 am

Неточность документации / баг в libio

Post by Anton_K »

Обнаружил небольшую неточность документации или баг в libio, смотря, с какой стороны посмотреть. Если предполагается возможность использования libio в ЯВУ, то это скорее баг.

В исходнике в описании к функции file_size указано следующее:

Code: Select all

< ebx = -1 (error) / file size (in bytes, up to 2G) <dword>
Во-первых, для нормального использования в ЯВУ возвращать результат нужно в eax (я - капитан, но все остальные функции библиотеки возвращают результат в eax, как и положено). Во-вторых, на самом деле в eax возвращается код ошибки/успеха, а в ebx размер файла в случае успеха (eax = 0).

Проблема, конечно, совсем не критичная, но когда сталкиваешься с подобными "особенностями" на практике, это доставляет некоторый дискомфорт (по крайней мере, мне :) ). Приходится вникать в код библиотеки, а новых разработчиков это может отпугнуть.

Также, в вики написано, что результат возвращается в eax, но так как я прочитал предупреждение, которое висит на каждой странице, то это уже просто заметка.

Пофиксить (возвращая размер файла в eax, -1 при ошибке) данную "особенность" может быть непросто, так как придется фиксить и все программы, которые используют функцию file_size (правда, я не знаю, сколько таких :) ). Возможно, стоит уточнить документацию, или сделать вторую функцию, условно говоря, file_size2, которая будет возвращать результат в eax.
igevorse
Posts: 18
Joined: Sat Dec 20, 2014 8:37 pm

Re: libini + libio

Post by igevorse »

Как описано в документации, file_open возвращает 0 или file descriptor (InternalFileInfo), однако, в статье нет расшифровки этого типа (среди списка структур его тоже нет).
Является ли InternalFileInfo стандартным типом FILE? (судя по коду в libio.asm, нет)
Upd:
Файл libio_p.inc:

Code: Select all

struct InternalFileInfo
  Mode     dd ?
  Position dd ?
  FileName rb 260
ends
Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests