Board.KolibriOS.org

Official KolibriOS board
It is currently Sat May 25, 2019 12:15 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 160 posts ]  Go to page Previous 17 8 9 10 11 Next
Author Message
PostPosted: Sat Feb 11, 2017 9:59 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Не совсем понял вопрос, но я думаю из первых строк кода семидесятой всё должно быть понятно http://websvn.kolibrios.org/filedetails ... fs_lfn.inc


Top
   
PostPosted: Sat Feb 11, 2017 10:32 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Pathoswithin wrote:
Не совсем понял вопрос, но я думаю из первых строк кода семидесятой всё должно быть понятно http://websvn.kolibrios.org/filedetails ... fs_lfn.inc

Если это начало любой 70.х, то должно работать одинаково.

Но теперь у меня больше вопрос - в ESI у нас указатель на путь в cp866 в строке 55.
Если по указателю db '/0мусор', то тоже окажется что это не рутдир, т.к EDI=0.


Top
   
PostPosted: Sat Feb 11, 2017 12:15 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
А что не так? Если edi=2, то это utf-16, иначе rootdir.


Top
   
PostPosted: Sun Feb 12, 2017 6:59 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Точно, ОК.


Top
   
PostPosted: Mon Mar 27, 2017 9:36 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
После ревизии 6845 в одной из моих тестовых программ перестал открываться файл с изображением jpeg. По всей видимости выдается какая-то ошибка фс. Подробнее пока сказать не могу, нет времени на тесты.


Top
   
PostPosted: Mon Mar 27, 2017 5:09 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Ошибка была найдена в работе программы. Программа пробовала открыть из файла больше байт чем в нем было. Это давало ошибку номер 6, но программа не обращала на это внимания и работала дальше. А после ревизии 6845 перестала работать вообще. Не понятно почему теперь ф. 70 не открывает из файла то что можно из него открыть.


Top
   
PostPosted: Mon Mar 27, 2017 7:06 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Файловая система FAT? Какой размер файла и какими данными была заполнена структура?


Top
   
PostPosted: Mon Mar 27, 2017 8:47 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Pathoswithin wrote:
Файловая система FAT? Какой размер файла и какими данными была заполнена структура?

Точно сказать не могу, потому что это файл образа iso, который я тестировал через VirtualBox. Вроде-бы в свойствах файла пишет что какой-то Joliet, хотя я про такую ФС раньше не слышал.
Могу почистить файл iso образа и скинуть для тестов если будет нужно.


Attachments:
disk_prop.png
disk_prop.png [ 9.5 KiB | Viewed 2334 times ]
Top
   
PostPosted: Mon Mar 27, 2017 11:06 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Ирония в том, что наш драйвер, который называется iso9660, на самом деле драйвер Joliet, а ISO 9660 он как раз и не поддерживает...

А сейчас что конкретно получается?


Top
   
PostPosted: Tue Mar 28, 2017 1:49 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Pathoswithin wrote:
А сейчас что конкретно получается?

Раньше в программе было так:
Code:
...
   mov eax,70 ;70-я функция работа с файлами
   mov [run_file_70.Function], 0
   mov [run_file_70.Position], 0
   mov [run_file_70.Flags], 0
   mov [run_file_70.Count], dword size
   m2m [run_file_70.Buffer], [buf]
   mov byte[run_file_70+20], 0
   mov [run_file_70.FileName], file_name
   mov ebx,run_file_70
   int 0x40 ;загружаем файл изображения
   cmp ebx,0xffffffff
   je @f
... открытие файла ...
   @@:
...

где size - размер файла давался с запасом. И оно работало, но давало ошибку о том что файл закончился заранее и не все байты прочитаны.
Для себя я решил проблему обновив алгоритм работы программы. Теперь сначала проверяется размер файла, а потом идет попытка открытия с точным значением размера.
Хотя чисто теоретически оно должно работать и по старому алгоритму. Если пользователь просит считать с файла лишние байты, то по идее должно быть считано все что есть и должна выдаться ошибка 6 (EOF).


Top
   
PostPosted: Tue Mar 28, 2017 5:34 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Понятно. Исправил документацию.

revision #6880


Top
   
PostPosted: Tue Mar 28, 2017 6:32 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Теперь нужно проверить есть ли программы которые искали -1 в регистре ebx.
Потому что теперь там будет 0 в случае неудачи.


Top
   
PostPosted: Tue Mar 28, 2017 6:52 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
В принципе, программам должно быть всё равно, файл пустой или его нет.


Top
   
PostPosted: Wed Mar 29, 2017 10:17 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Pathoswithin wrote:
В принципе, программам должно быть всё равно, файл пустой или его нет.
Это некорректное утверждение.
Ошибка 5 возвращается в случае отсутствия файла у 70.0 и каталога 70.1 (80.0/80.1)?


Top
   
PostPosted: Wed Mar 29, 2017 10:54 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Если программу интересуют данные, то важен только факт, что их нет. Если интересует сам файл, то ошибка 5 возвращается для всех функций, кроме создания.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 160 posts ]  Go to page Previous 17 8 9 10 11 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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