far2l
far2l copied to clipboard
Two ideas and some small improvements
- Вставлять ./ перед именем файла в командной строке только для файлов с установленным атрибутом exec.
--- filelist.cpp 2023-05-04 02:53:09.000000000 +0300
+++ /var/tmp/far2l/far2l/src/panels/filelist.cpp 2023-05-01 18:44:00.741407593 +0300
@@ -1119,11 +1119,26 @@
if (CurrentPath)
AddEndSlash(strFileName);
- if (Opt.QuotedName & QUOTEDNAME_INSERT)
- EscapeSpace(strFileName);
-
+ if (Opt.QuotedName & QUOTEDNAME_INSERT) {
+ // Do not enquote, if string prestart with quotation mark
+ wchar_t ch = 0;
+ int CurPos = CtrlObject->CmdLine->GetCurPos();
+ if (CurPos>0)
+ {
+ FARString Str;
+ CtrlObject->CmdLine->GetString(Str);
+ ch = Str[CurPos-1];
+ }
+ if ((ch != L'"') && (ch != L'\''))
+ EscapeSpace(strFileName);
+ else
+ strFileName += ch;
+ }
strFileName+= L" ";
if (PanelMode != PLUGIN_PANEL) {
+ // Only add ./ prefix to the executables
+ if ((CtrlObject->CmdLine->GetCurPos()==0) &&
+ !S_ISDIR(CurPtr->FileMode) && (CurPtr->FileMode & S_IEXEC))
EnsurePathHasParentPrefix(strFileName);
}
}
- Добавить сочетание клавиш для открытия текушей директории на рабочем столе.
void OpenFolder()
{
const char *p;
if ((wcscmp(WinPortBackend(), L"GUI") == 0) ||
(p = getenv("XDG_SESSION_TYPE"), p ? strcmp(p, "x11") == 0 : false)) {
farExecuteA("xdg-open .", EF_NOWAIT | EF_HIDEOUT);
} else {
farExecuteA("ls ./", EF_NOCMDPRINT);
if (FrameManager) {
auto *current_frame = FrameManager->GetCurrentFrame();
if (current_frame) {
FrameManager->RefreshFrame(current_frame);
}
}
}
}
- При копировании файла из панели NetRocks, в локальную ФС, если в конце имени явно не указан /, то копировать в файл с указанным именем, если такой директории не существует в текущей лиректории локальной ФС. Например, невозможно скопировать в /dev/null (для проверки скорости).
- При копировании в удалённую директорию NetRocks(ssh) скорость значительно меньше чем в обратном направлении:
- NetRocks(ssh) => Local FS ~95-100MB/s
- Local FS => NetRocks(ssh) < 18MB/s (blocksync даёт ~75-80MB/s) На обоих сторонах SSD. Скорость LAN - 1G, сжатие в ssh отключено.
Что подразумевается под ssh? SFTP или SCP?
SFTP. Сейчас переключился на SCP:
- NetRocks(scp) => Local FS ~95-100MB/s
- Local FS => NetRocks(scp) ~75-80MB/s (аналогично blocksync, blocksync подключается через ssh).
Дополнительно проверил скорость копирования через gvfs (sftp://remote.lan).
При копировании на удалённый хост файл менеджером через рабочий стол получил скорость ~85MB/s.
В far2l, в директорию /run/user/1000/gvfs/sftp:host=remote.lan < 15MB/s.
а sftp клиент команд лайновый? и это скорость закачки одного относительно большого файла или кучи небольших?
Просто набрал в адресной строке файлового менеджера рабочего стола sftp://remote.lan, дальше во всплывшем окне логин и пароль и открылась директория на удалённом хосте. Туда кинул файл. Через некоторое время появляется строка со скоростью передачи. Файлы удалённого хоста станоновятся также доступны через путь /run/user/1000/gvfs/sftp:host=remote.lan. Так на debian/ubuntu. Возможно в других системах по другому.
Скорость всегда проверяю на передаче большого файла 20GB, например, образа qemu.
проверить бы еще, я имел ввиду с этим:
~$ sftp
usage: sftp [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
[-D sftp_server_path] [-F ssh_config] [-i identity_file]
[-J destination] [-l limit] [-o ssh_option] [-P port]
[-R num_requests] [-S program] [-s subsystem | sftp_server]
destination
Примерно так:
$ sftp remote.lan
[email protected]'s password:
Connected to remote.lan.
sftp> cd /tmp
sftp> put debian.img
Uploading debian.img to /tmp/debian.img
debian.img 32% 701MB 87.7MB/s 00:16 ETA
1. Вставлять ./ перед именем файла в командной строке только для файлов с установленным атрибутом exec.
Именно озвученное предложение наверное имеет смысл :thinking:
Но в Вашем коде более сильные ограничение - не вставлять ./ если в командной строке не начальная позиция, что сомнительно.
Также в Вашем варианте кода больше изменений строк посвящено другому не озвученному предложению - не экранировать, если в командной строке уже введён непосредственно перед позицией вставки " или ' и замыкаете закрывающей кавычкой.
Как-то Вы об многом умолчали предлагая такой код :smiley_cat:
2. Добавить сочетание клавиш для открытия текущей директории на рабочем столе.
Сейчас для этого есть 2 варианта:
- Shift+Enter в панели на
.. - вставить в ком.строку
.и те же Shift+Enter
Их точно недостаточно? И какую разумную комбинацию клавиш для такого действия предлагаете?
- Это не то же, что #1167 ?