Void2, ошибку закрытия плагина при невозможности зайти в каталог, вроде бы, исправил.
По crt и SimpleString.hpp всё правильно, это файлы из основной репы Far-а с моими доработками. Т.к. я их использую ещё для других плагинов, в этой репе они отсутствют. Можно взять из форка, бранч nocrt: https://github.com/qlost/FarManager/tree/nocrt
А первую ошибку про отвал устройства можешь описать подробнее? Какие действия нужно сделать, чтобы повторить мне её у себя?
заметил неприятную ошибку - она имеется в версии 2026.4.24.0 и никуда не исчезла в 2026.4.27.0:
есть папка с 10+ папками и 50+ файлами внутри.
если в этой папке выделить несколько десятков файлов и попытаться их удалить, несколько файлов (4-5 из 30-40) не удаляются (просто остаются в папке - никаких ошибок не выдаёт).
если потом попытаться удалить каждый из этих оставшихся файлов индивидуально (без выделения) - файлы снова невозможно удалить.
если попытаться удалить всю папку (которая содержит вложенные папки и эти неудалённые файлы), папка удаляется без проблем.
я думаю, вы сможете это повторить на любой папке с большим количеством файлов.
Last edited by abelenki on Mon 27 Apr, 2026 12:55, edited 4 times in total.
ZevB3K wrote: Mon 27 Apr, 2026 12:02
ошибку про отвал устройства можешь описать подробнее
У меня выглядит так, если пометить и начать копирование большого числа файлов (скажем фото) с телефона на комп и выдернуть провод из телефона (в моем случае разъем не надежный и его можно просто неудачно задеть), то вылетает ошибка, а потом если нажать enter, то в старой версии оставался каталог с файлами, просто снималась пометка с уже скопированных, и если поправить провод обратно, достаточно было продолжить копирование, а в новой версии 27.04 каталог очищается и надо заново перечитывать его и заново помечать файлы чтобы продолжить копирование. В версии 26.04 плагин выходит в случае ошибки в far и надо было еще и заново заходить в сам плагин.
p.s. спасибо за инструкции по сборке, что-то собралось, но размер почему-то больше вашего, разбираюсь что туда еще пролезло лишнего из crt от msvc.
Void2, лови содержимое каталога .vscode, который лежит в корне репы. В принципе, все настройки компиляции - в __build.cmd, но я его сделал универсальным x86/x64 debug/release для разработки в VSCode.
Что подавать ему на вход в аргументах - можешь понять из tasks.json. А как называются конфиги, которые приходят в батник 3м аргументом - в c_cpp_properties.json
А, да! Ещё же нужно собрать \FarManager\plugins\common\libCRT??.lib
её я собираю батником
На обновленной версии 27.04 при обрыве соединения плагин после ошибки показывает пустой каталог, так что надо перечитывать его заново и теряются выделенные файлы. Но в фар уже не вылетает.
Нашел еще ошибку в новом плагине (в старом все работает), при попытке зайти на внешнюю карточку "ls -la" там выдает вот такое по adb shell: 0|:/storage/B2CB-C66C $ ls -la
ls: ./.android_secure: Permission denied
total 578560
drwxrwx--x 22 root sdcard_rw 131072 2026-04-19 17:51 .
drwxr-xr-x 6 root root 120 2026-04-19 17:51 ..
...и далее файлы как обычно...
поэтому зайти в этот каталог в плагине нельзя, вываливается окно с ошибкой "ls: /storage/B2CB-C66C//.android_secure: Permission denied"
Void2, воу-воу-воу, давай по-порядку
я у себя смог воспроизвести ошибку и пустой каталог и удалось добиться, чтобы после передёргивания кабеля в итоге был НЕпустой каталог и остаток файлов оставался выделен. Значит, у тебя это не сработало... странно, покопаю ещё.
А вот то, что ты пишешь дальше про внешнюю карточку и adb shell что-то вообще непонятно
С одной стороны видим ошибку (и интересности в виде "0|:........")
с другой "total ....".
На моих подопытных всё несколько иначе. Давай пиши в личку, что за тел, прошивка, будем там с тобой по шагам дебажить.
прошу уточнить: этот каталог находится на /sdcard или где-то в системе? ну, т.е. у пользователя полные права? работа под root или нет? есть ли линки среди удаляемых файлов?
ZevB3K wrote: Mon 27 Apr, 2026 21:13
А вот то, что ты пишешь дальше про внешнюю карточку и adb shell что-то вообще непонятно
Так вроде ж ".android_secure" это же штатная папка для android, телефон у меня обычный samsung, прошивка штатная, андроид 10. Вот что гугл пишет про ошибку:
The ".android_secure" folder permission denied error occurs because this directory is a protected system folder used to store encrypted app data, particularly for apps moved to an SD card. Android explicitly restricts access to this folder to protect application security and DRM-protected content.
System Protection: Android restricts access to certain system-level folders, including .android_secure, to prevent unauthorized apps from reading or tampering with encrypted data.
FUSE Filesystem Limitations: When browsing files, you might be visiting a FUSE filesystem (/storage/[UUID]) which has restrictive permissions set by Android compared to the direct filesystem (/mnt/media_rw/[UUID]).
Lack of Root Access: Even with a file manager, accessing system-level directories often requires root permissions.
How to potentially resolve or manage this:
Ignore the Folder: The .android_secure folder is meant to be inaccessible. It is not intended for user files and is managed entirely by the system.
Use Proper Permissions: If you are using a file manager app, ensure it has "All Files Access" granted in your Android system Settings > Security & Privacy > Privacy > Permission manager.
Use mnt/media_rw/: If you are using adb shell, try navigating to /mnt/media_rw/[SD-Card-ID] instead of /storage/[SD-Card-ID], as it may have different permissions, though root is usually required for this.
Ну то есть надо просто игнорировать ошибку как это и делала прошлая версия плагина (видимо вырезая весь текст до слова total при листинге). Команда "ls -la" сыпется, потому что она хочет сделать fstat на папку (ну надо же inode прочесть, дату/время и т.д.), а прав нет. Если делать просто "ls" ошибки нет. И я подозреваю что подобная история может быть вообще говоря в любом месте, где прав будет не хватать, если листинг делать через "ls -la".
знаю я этот каталог. у меня он виден только на одном самом старом телефоне с 4.0.4. Но там установлен superuser и adb shell работает сразу под рутом. я не помню, как перейти на обычного юзера.
В общем, выполни с компа эти команды и пришли мне файлы с результатами
С папкой sdcard проблем нет, проблема с /storage/B2CB-C66C/, и перенаправление вывода в файл не учитывает, что ошибка access denied пишется в stderr, а не в stdout, так что в файле не будет этой ошибки. Но если вызвать как "adb shell ls -la /storage/B2CB-C66C/ >file 2>&1", то выглядит так (убрал хвост списка с приватными данными):
Да, забыл отметить, что проблема возникает только в "Native mode", если поставить "Safe mode" - в этот же каталог заходит без проблем. (Busybox mode у меня не работает из-за отсутствия busybox)
p.s. физически папка .android_secure на карточке есть, если карточку вынуть из телефона и прочитать на компе - папка видна.
Взаимно
Я снова с багами, это же был только первый телефон, а у меня есть еще и второй, более старый
Короче, при попытке выполнить на нем "ls -N", он возвращает не "unknown option", а "invalid option", и логика использования Opt.UseLS_N ломается - в режиме "Native mode" не отображается вообше ничего (в Safe Mode все работает).
$ ls -N
ls: invalid option -- N
ну вот такие реализации уникальные, причем тут даже busybox есть, но вот именно опции N в нем нет.
Спасибо, хотя второй телефон коварен, у него (зачем-то) по умолчанию "ls -la" выводит файлы в цвете, поэтому режим Native показывает в панели всякую дичь типа "[1;34m..[0m" (это например вместо "..") и разумеется навигация не работает. Если переключится в busybox mode, там добавляется "--color=never" и все хорошо. Я не знаю стоит ли тут добавлять какую-то логику или для таких "экзотических" телефонов надо просто переключать режимы? И тогда пожелание: раз плагин знает модель телефона и отличает их, может он сможет хранить индиаидуальные настройки режима для каждого телефона в реестре или где там сейчас настройки плагинов хранятся?
p.s. подтверждаю баг с невозможностью удалить некоторые файлы при выборе в каталоге с больщим числом файлов, может какой-нибудь лог сделать по типу netbox чтобы туда писались команды для adb/shell и ответы, станет чуть понятнее что происходит, потому что ошибок никаких вроде нет, а файлы не удаляются.