-
Notifications
You must be signed in to change notification settings - Fork 184
arclite plugin #2670
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
arclite plugin #2670
Conversation
"Желающим протестировать нужно раскомментировать следующие строки в CMakeLists.txt:"
|
Очень желательно все изменения плагиновых API сразу же этим же PR описывать в разделе Plugin API в https://github.com/elfmz/far2l/blob/master/HACKING.md Хоть кратко, хоть как, но главное каждое упомянуть, чтоб остальные знали где расхождения с прародительской энциклопедией. Заодно посмотри - там по цветам похоже устаревшая информация после твоих прошлогодних изменений. |
А multiarc при этом отключать нужно? |
Нет, можно не отключать |
Это из-за того, что плагины грузятся и затем процессятся по алфавиту и поэтому arclite первым получит запрашиваемое, а multiarc'у дойдут только, если arclite откажется? |
Да. 😊 |
Это зависит от значения 3-х позиционной опции |
Это не удобно. Там должен стоять [?] В arclitye есть Exclude files matching masks: и formats в plugin configuration. Можно какие то файлы отдать multiarc., а жмешь CTRL + PgDw открывается выбор у меня. |
https://github.com/anta999/far2l/blob/5e8f1a6188b7c027fd69510b9690536d17c710da/arclite/archive.cpp#L713-L714 |
Ещё просьба: читать заголовки zip (где имена файлов в архиве) самим, как в multiarc, а не средствами 7zip. А то там сейчас с OEM кодировкой шляпа |
С последним коммитом падает на Alpine (musl) |
Можно сделать сами патчилки отдельными .so'шками, собирать обе (под оба варианта либы 7z) и применять соответствующую найденной либе |
Т.е. при компиляции плагина жестко происходит увязка к нужному 7z.so даже просто на уровне использования без накладывания патчей? 😢 Это резко ограничивает юзабельность не только в случае far2l-portable, но и просто для тех кто не сам собирает, или наоборот имеет в системе несколько версий и скачет между p7zip и 7zip (пока это частая реальность - много кто использует старые LTS, а года через 2-3 наверно про p7zip можно будет забыть). Пока выглядит как очень существенное ограничение не позволяющее сейчас arclite вывести из статуса стабильной alpha хотя бы в beta. |
я же предложил решение выше |
Если я правильно понял проблема даже не в патчах (которые отключаемые), а в том что при компиляции arclite сразу компилируется под определенный диапазон библиотек 7z.so и, чтобы он работал с другим диапазоном библиотек 7z.so сам arclite нужно полностью перекомпилировать. |
Существует всего два типа: с виртуальным деструктором в базовом Unknown классе COM (обычно p7zip) и без него (7zip). Поэтому, если нужно использовать старый p7zip, придется либо пересобрать Arclite с опцией Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN, Я не вижу смысла мудрить и дублировать весь код из-за старого p7zip, как и делать патч для их разных вариантов. Самый лучший вариант — добавить сборку 7z.so опционально для Arclite в far2l. |
Если использовать ANSI/OEM codepage из настроек - придется патчить. |
far2l/src/plug/PluginW.cpp
Outdated
StandardFunctions.OwnerNameByID = farOwnerNameByID; | ||
StandardFunctions.GroupNameByID = farGroupNameByID; | ||
StandardFunctions.ReadLink = farReadLink; | ||
StandardFunctions.sdc_lstat = farsdc_lstat; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why not just directly use sdc_lstat? as other plugins do
far2l/far2sdk/farplug-wide.h
Outdated
@@ -153,16 +162,17 @@ enum FARMESSAGEFLAGS | |||
FMSG_COLOURS = 0x00000040, | |||
#endif // END FAR_USE_INTERNALS | |||
FMSG_DISPLAYNOTIFY = 0x00000080, | |||
FMSG_ASYNC = 0x00000100, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If i understood correctly, this flags allows to create dialog bypassing synchronization, its not good idea as in a whole all that code is not designed to be thread safe
Why you needed this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да. Вот так она работает в фар3. Если это проблема надо будет переписать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Убрал и то и другое.
На macOS работает, архивы открывает быстро многопоточно. Прошу замержить |
Присоединяюсь к просьбе, попробую погонять, не понравится вернусь на мультиарк, поглядим. Второй так-то гибче, но я и не помню уже, с другой стороны, когда последний раз трогал в нём что-то. |
Дабавлена поддержка p7zip.
Улучшена работа с вложеными tar архивами. Сжатие/Распаковка.
PS: Arclite может открывать block devices в /dev/ через 7zip
читает FAT NTFS EXT APFS, MBR/GPT/APM.
Изменения в Far2l:
PLugin AnalizeW + добавлены far2l api функции для arclite
FMSG_ASYNC - для выключения InterThreadCall delegate. В far2l использщуется свой critical secstion.
...
2025-03-22_12-03-44.mp4