Skip to content
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

far2l executes $FARHOME/open.sh after clicking on a broken symbolic link leading to unexpected consequences #2067

Closed
spnethw opened this issue Mar 13, 2024 · 4 comments · Fixed by #2121

Comments

@spnethw
Copy link
Contributor

spnethw commented Mar 13, 2024

Если ткнуть по битой символической ссылке, то far2l сначала выдаёт ошибку:

╔══════════ Open error 2 ═══════════╗
║ Нет такого файла или каталога (2) ║
║       Ошибка открытия файла       ║
║      /home/testuser/test/symlink  ║
╟───────────────────────────────────╢
║              { OK }               ║
╚═══════════════════════════════════╝

после чего дёргает $FARHOME/open.sh с аргументами "exec" и "имя-символической-ссылки",
что приводит к неожиданным последствиям, в моём случае -- к запуску браузера через xdg-open с именем ссылки в адресной строке.

Лог:

ExecuteA: SeparateWindow=1 DirectRun=1 WaitForIdle=0 Silent=0 RunAs=0 CmdStr='symlink'
ExecClassifier('symlink', 1) - stat error 2
farExecuteA:('"/usr/share/far2l/open.sh" exec symlink', 0x3): r=0

@akruphi
Copy link
Contributor

akruphi commented Mar 13, 2024

У меня в Ubuntu 22.04 в подобной ситуации после окна Open error 2 ничего лишнего не открывается.

Лог для битого симлинка:

ExecuteA: SeparateWindow=1 DirectRun=1 WaitForIdle=0 Silent=0 RunAs=0 CmdStr='testsym'
ExecClassifier('testsym', 1) - stat error 2
farExecuteA:('"/usr/lib/far2l/open.sh" exec testsym', 0x3): r=0
FSNotify: watching 1 entries for '/tmp/u_tmp'
CommandLine::ShowBackground: done
gio: file:///tmp/u_tmp/testsym: No application is registered as handling this file

@spnethw интересно, у Вас в логе после farExecuteA: какие ещё строчки.

@spnethw
Copy link
Contributor Author

spnethw commented Mar 13, 2024

у Вас в логе после farExecuteA: какие ещё строчки

А дальше ничего интересного / относящегося к делу, тут уже вопрос настроек xdg-settings.
Вопрос в том, зачем тут вообще open.sh управление передаётся?..

@akruphi
Copy link
Contributor

akruphi commented Mar 13, 2024

Вопрос в том, зачем тут вообще open.sh управление передаётся?..

Ну симлинки имеют права запуска, поэтому автоматически и дергается open.sh. Но действительно после определения, что файл ошибочный дальше дергать open.sh уже не стоит.

@akruphi
Copy link
Contributor

akruphi commented Mar 13, 2024

Наверное решением будет уже в ExecuteA( из execute.cpp при создании экземпляра ExecClassifier ec(CmdStr, DirectRun); как-то получать/сохранять инфу об ошибке и дальше при наличии ошибки не обрабатывать.

spnethw added a commit to spnethw/far2l that referenced this issue Mar 28, 2024
spnethw added a commit to spnethw/far2l that referenced this issue Mar 28, 2024
spnethw added a commit to spnethw/far2l that referenced this issue Mar 28, 2024
elfmz added a commit that referenced this issue Mar 31, 2024
…-clicking-on-a-broken-symbolic-link

fix #2067, option 2: unneeded open.sh call after clicking on a broken symbolic link
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants