OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 12:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 00:13 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Обнаружил проблему в работе ББ под вайном. ББ 1.6 rc 6, Ubuntu 10.10 с последними апдейтами вайна(цыфири уж не стал искать, не до того).

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 11:21 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Пришло в голову, прошу не бить, вдруг для чего-то пригодится:

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 11:30 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Есть предположение, что проблема проявляется на файлах с длинными именами. HostFiles.Locator на вайне имеет maxLen = 12, а под виндой maxLen = 255.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 11:45 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Кузьмицкий писал(а):
Есть предположение, что проблема проявляется на файлах с длинными именами. HostFiles.Locator на вайне имеет maxLen = 12, а под виндой maxLen = 255.
А откуда разница?
Разве под вайном не виндусовая версия запускается?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 12:15 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Виндусовая, конечно. Точно такая, как и на винде запускается. Сам не пойму. Files.dir.Old иногда просто не видит файл (возвращает loc.res = 2, т.е "location or file not found"), хотя и локатор, и имя есть, и в списке Files.dir.FileList данный файл фигурирует.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 12:59 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Кузьмицкий писал(а):
Виндусовая, конечно. Точно такая, как и на винде запускается. Сам не пойму.
Тогда откуда maxLen?
Разве это не константа какая-то?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 13:17 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Код:
      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 
Аватара пользователя

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


Последний раз редактировалось Иван Денисов Воскресенье, 07 Ноябрь, 2010 22:12, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 14:16 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Вроде как выясняется, что проблема в слэшах. Проверяем...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 14:44 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
divan писал(а):
в 1.5, конечно, проблемы с русскими буквами в пути.
Код:
c:/users/divan/проверка/очень длинное назмание папки с пробелами и русскими буквами и буквой ё/Drosophila_melanogaster(дрозофила).BDGP5.25.59.dna_rm.chromosome.3R.fa

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 15:29 

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


Последний раз редактировалось Пётр Кушнир Воскресенье, 07 Ноябрь, 2010 15:55, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 15:34 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
стираю


Последний раз редактировалось Info21 Воскресенье, 07 Ноябрь, 2010 19:24, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 15:47 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Пётр Кушнир писал(а):
Проблема решена.
Я, с прицелом на кроссплатформенность во всех строках пути указываю бэкслэш, "/"
Винда нормально потребляет такие строки. А вайн поперхнулся.
"/" это слэш, бэкслэш это "\".

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 15:50 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Неочевидны, факт. Поэтому говорят об очевидных вещах, таких как раскраска текстов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 15:56 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Евгений Темиргалеев писал(а):
"/" это слэш, бэкслэш это "\"
FIXED!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 16:18 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Евгений Темиргалеев писал(а):
Винда пути с "/", насколько я знаю, потреблять не должна.
хехе. 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...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Ноябрь, 2010 15:54 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
То есть, с самого начала : ).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB