OberonCore
https://forum.oberoncore.ru/

Проблема с открытием файлов под WINE
https://forum.oberoncore.ru/viewtopic.php?f=34&t=2975
Страница 1 из 1

Автор:  Пётр Кушнир [ Воскресенье, 07 Ноябрь, 2010 00:13 ]
Заголовок сообщения:  Проблема с открытием файлов под WINE

Обнаружил проблему в работе ББ под вайном. ББ 1.6 rc 6, Ubuntu 10.10 с последними апдейтами вайна(цыфири уж не стал искать, не до того).

Есть длинный список путь+имя файла в текстовом виде. требуется получить хэш суммы этих файлов.
Сделал в виндовс примитивную программу, открывает файлы стандартной подсистемой. читает данные, считает хэш. всё ОК.
Перехожу в вайн, запускаю, получаю на выходе, для некоторых(произвольных файлов, системы в ошибках я так и не увидел) файлов отсутствует сумма. полез разбираться - увидел, что, те самые файлы не открываются вовсе, в локаторе результат 2, т.е. HostFiles.fileNotFound. и так, каждый раз. причём, каждый раз неоткрытые файлы могут оказаться какие угодно из списка. файлы открываются в расшареном режиме, после чтения хэша принудительно закрываются.

Вот такая проблема.

Автор:  Info21 [ Воскресенье, 07 Ноябрь, 2010 11:21 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Пришло в голову, прошу не бить, вдруг для чего-то пригодится:

один без-гуйный ББ сам по себе, другой, гуйный под Вайном, и общаются. И по каким-то запросам гуйного удовлетворяет без-гуйный.

Автор:  Иван Кузьмицкий [ Воскресенье, 07 Ноябрь, 2010 11:30 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Есть предположение, что проблема проявляется на файлах с длинными именами. HostFiles.Locator на вайне имеет maxLen = 12, а под виндой maxLen = 255.

Автор:  Info21 [ Воскресенье, 07 Ноябрь, 2010 11:45 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Иван Кузьмицкий писал(а):
Есть предположение, что проблема проявляется на файлах с длинными именами. HostFiles.Locator на вайне имеет maxLen = 12, а под виндой maxLen = 255.
А откуда разница?
Разве под вайном не виндусовая версия запускается?

Автор:  Иван Кузьмицкий [ Воскресенье, 07 Ноябрь, 2010 12:15 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Виндусовая, конечно. Точно такая, как и на винде запускается. Сам не пойму. Files.dir.Old иногда просто не видит файл (возвращает loc.res = 2, т.е "location or file not found"), хотя и локатор, и имя есть, и в списке Files.dir.FileList данный файл фигурирует.

Автор:  Info21 [ Воскресенье, 07 Ноябрь, 2010 12:59 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Иван Кузьмицкий писал(а):
Виндусовая, конечно. Точно такая, как и на винде запускается. Сам не пойму.
Тогда откуда maxLen?
Разве это не константа какая-то?

Автор:  Иван Кузьмицкий [ Воскресенье, 07 Ноябрь, 2010 13:17 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Код:
      Locator* = POINTER TO RECORD (Files.Locator)
         path-: FullName;   (* without trailing "/" *)
         maxLen-: INTEGER;   (* maximum name length *)
         caseSens-: BOOLEAN;   (* case sensitive file compares *)
         rootLen-: INTEGER   (* for network version *)
      END;

Значение maxLen возникает в HostFiles, из WinApi.GetVolumeInformationW и используется для разделения имени и расширения файла.

Насколько я помню, для файловой системы FAT винда как-то урезает длинные имена до формата 8.3. Я и предположил, что в WINE это урезание даёт эффект пропадания файла с длинным именем.

Автор:  Иван Денисов [ Воскресенье, 07 Ноябрь, 2010 14:10 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Проверил вот такое имя и ничего в BB1.6 файл обработался, а вот в 1.5, конечно, проблемы с русскими буквами в пути.
Код:
c:/users/divan/проверка/очень длинное назмание папки с пробелами и русскими буквами и буквой ё/Drosophila_melanogaster(дрозофила).BDGP5.25.59.dna_rm.chromosome.3R.fa

Автор:  Иван Кузьмицкий [ Воскресенье, 07 Ноябрь, 2010 14:16 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Вроде как выясняется, что проблема в слэшах. Проверяем...

Автор:  Info21 [ Воскресенье, 07 Ноябрь, 2010 14:44 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

divan писал(а):
в 1.5, конечно, проблемы с русскими буквами в пути.
Код:
c:/users/divan/проверка/очень длинное назмание папки с пробелами и русскими буквами и буквой ё/Drosophila_melanogaster(дрозофила).BDGP5.25.59.dna_rm.chromosome.3R.fa

Это нужно бы понять. На рецептурном уровне?

Автор:  Пётр Кушнир [ Воскресенье, 07 Ноябрь, 2010 15:29 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Проблема решена.
Я, с прицелом на кроссплатформенность во всех строках пути указываю слэш, "/"
Винда нормально потребляет такие строки. А вайн поперхнулся.
Пришлось воткнуть процедуру-"вайнизатор" которая бы эти пути на самом подходе к работе с Files переделывала, заменяя слеш на бэкслеш. Обошлось малой кровью, стандартная Files уже была обёрнута.
Вывод: Обёртки рулят! :)

Автор:  Info21 [ Воскресенье, 07 Ноябрь, 2010 15:34 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

стираю

Автор:  Евгений Темиргалеев [ Воскресенье, 07 Ноябрь, 2010 15:47 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Пётр Кушнир писал(а):
Проблема решена.
Я, с прицелом на кроссплатформенность во всех строках пути указываю бэкслэш, "/"
Винда нормально потребляет такие строки. А вайн поперхнулся.
"/" это слэш, бэкслэш это "\".

Винда пути с "/", насколько я знаю, потреблять не должна. И вайн с некоторого времени перестал (стартовый скрипт ББ с линуховыми путями работать перестал, оказалось что появилась утилита winepath). я решал проблему работы с полными путями так, как в ББ сделано: PathToLoc/PathToSpec (поиск по исходникам и копирование к себе).

Автор:  Иван Кузьмицкий [ Воскресенье, 07 Ноябрь, 2010 15:50 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Неочевидны, факт. Поэтому говорят об очевидных вещах, таких как раскраска текстов.

Автор:  Пётр Кушнир [ Воскресенье, 07 Ноябрь, 2010 15:56 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Евгений Темиргалеев писал(а):
"/" это слэш, бэкслэш это "\"
FIXED!

Автор:  Евгений Темиргалеев [ Воскресенье, 07 Ноябрь, 2010 16:18 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

Евгений Темиргалеев писал(а):
Винда пути с "/", насколько я знаю, потреблять не должна.
хехе. http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Цитата:
Note File I/O functions in the Windows API convert "/" to "\" as part of converting the name to an NT-style name, except when using the "\\?\" prefix as detailed in the following sections.
Надо полагать, эта хреновина появилась с NT...

Автор:  Valery Solovey [ Понедельник, 08 Ноябрь, 2010 15:54 ]
Заголовок сообщения:  Re: Проблема с открытием файлов под WINE

То есть, с самого начала : ).

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/