j2969719 / doublecmd-plugins

Additions for Double Commander (third-party)
100 stars 24 forks source link

gotolinkpath.lua: Добавить для readlink ключ -m или -f #18

Closed Skif-off closed 5 years ago

Skif-off commented 5 years ago

... и получить канонический путь. -m безопаснее, т.к. не требует существование каждого элемента в пути.

Skif-off commented 5 years ago

И ещё эта часть работает странно: симлинк на /tmp превращается в /

j2969719 commented 5 years ago

ок, чет накостылял но не тестил

Skif-off commented 5 years ago

С последним коммитом та же фигня, в условии срабатывает

(SysUtils.DirectoryExists(path) == false)

из-за \n. А если так убрать:

path = string.match(output, "(.*)[\n]");

? Или string.gsub() натравить?

Add: Или

path = string.sub(output, 1, -2);

Паттерны - чуть дольше по идее.

Skif-off commented 5 years ago

Прогон, после коммита копировал только условие, прощёлкал добавление -n. Теперь вроде порядок.

Skif-off commented 5 years ago

К слову, может, в editsymlink.lua стоит добавить проверку значения (длину, например, if (string.len >= 1)) т.к. срабатывает и на самых обычных файлах и папках, не только на симлинках, можно запороть нечаянно.

j2969719 commented 5 years ago

да, косяк, счас не должно по идее я на эти говноскрипты забил примерно сразу как накостылял т.к. толку от них на деле ноль

Skif-off commented 5 years ago

толку от них на деле ноль

Ну почему же? Не по 20 раз на день, но как-то приходилось делать подобное, подумывал об упрощении, как только Dialogs.InputQuery() была добавлена... Тенденция, однако: пока я подумываю, ты берешь и пишешь :)) А аналог gotolinkpath.luà у меня был прикручен к ТС, только написан на AutoIt, а путь получал, напрямую дёргая wdx-плагины (NTLinks или NL_Info, что установлено).

Мне кажется, только не хватает предупреждения, что файл/папка будут удалены (имею в виду параметр -n), и непонятно, почему условие такое

if (SysUtils.DirectoryExists(newpath)) then

если это может быть и файл. SysUtils.FileGetAttr()?

P.S. Прости за любопытство, а почему положил base64uue в utils, а не к остальным?

j2969719 commented 5 years ago

Мне кажется, только не хватает предупреждения, что файл/папка будут удалены (имею в виду параметр -n), и непонятно, почему условие такое

if (SysUtils.DirectoryExists(newpath)) then если это может быть и файл. SysUtils.FileGetAttr()?

походу я чет туплю но -n вроде ж должен делать однозначную ссылку на папку, поэтому и проверку такой делалO_o

прост в посте на форуме была utils да и костыль на суши хотел из скриптов выкинуть

Skif-off commented 5 years ago

походу я чет туплю но -n вроде ж должен делать однозначную ссылку на папку, поэтому и проверку такой делалO_o

Тьфу ты, тупанул, пардон, смешались кони, люди... то бишь -f и -n :)

j2969719 commented 5 years ago

а про предупрежение, его просто для перезаписи симлинка добавить?

Skif-off commented 5 years ago

Наверное, всё-таки не нужно, мы ведь её редактируем и без -f тут не обойтись?

j2969719 commented 5 years ago

хз есличеснок, если так как счас сделано, то без него ln просто ругаться будет что симлинк уже есть